资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

hadoop2.6.5+sqoop1.4.6环境部署与测试(三)-创新互联

在hadoop环境搭建完成后,接下来就是要把sqoop整合进来,使其可以利用hadoop和mysql-connector-java来从MySQL中抽取数据并转存到hdfs上。

1. 将得到的sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz解压到/usr/local/下,并建立/usr/local/sqoop软链接。

创新互联是专业的永顺网站建设公司,永顺接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行永顺网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz /usr/local/
tar -xvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
ln -s /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha /usr/local/sqoop

2. 将/usr/local/sqoop,/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha属主属组修改为hadoop,保证hadoop用户可以使用:

chown -R hadoop:hadoop /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
chown -R hadoop:hadoop /usr/local/sqoop

3. 配置SQOOP_HOME环境变量,在/etc/profile中添加和修改如下记录:

export SQOOP_HOME=/usr/local/sqoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:$PATH

4. 对sqoop进行配置,保证其可以整合到hadoop中:
1)进入到$SQOOP_HOME/conf目录下,复制一份sqoop环境配置脚本sqoop-env-template.sh到当前目录,并重命名为sqoop-env.sh:

cd $SQOOP_HOME/conf
cp sqoop-env-template.sh sqoop-env.sh

2)修改sqoop-env.sh的HADOOP_COMMON_HOME和HADOOP_MAPRED_HOME变量值,使其对应于相应的hadoop文件路径:

export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop/share/hadoop/mapreduce

3)sqoop需要连接mysql和运行mapreduce程序来完成数据抽取,因此需要mysql-connector和mapreduce相应库文件的支持,请将mysql-connector-java包和$HADOOP_HOME/share/hadoop/mapreduce/下的所有jar包复制到$SQOOP_HOME/lib目录下:

cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar $SQOOP_HOME/lib/
cp ~/mysql-connector-java-5.1.32-bin.jar $SQOOP_HOME/lib/
chown -R hadoop:hadoop $SQOOP_HOME/lib/

5. 下面可以使用sqoop脚本来进行数据抽取操作了,该脚本在$SQOOP_HOME/bin目录下,使用方法如下:

#测试数据库是否可以连接
sqoop list-databases --connect jdbc:mysql://localhost:3306/actionLog \
--username root --P (如果返回数据库名,则可以通过sqoop连接mysql数据库)
#从MySQL库中抽取数据到hdfs上
sqoop import --connect jdbc:mysql://hadoop-test-nn:3306/actionLog  \
--username root -P \
--table log \
--columns "logger_id,time" \
--where 'action = "login"' \
--target-dir /test/loginInfo
选项说明:
--username 数据库用户名
-P 使用交互方式隐蔽和输入数据库用户口令
--table 指定导出的库表名
--columns 指定表中哪些列的数据被导出
--where 可以通过添加类似sql语句中where条件来筛选导出的记录
--target-dir 导出的数据存放在hdfs上的路径,这里的路径值是hdfs上的路径,并不是文件系统本身的绝对路径

上述sqoop import命令是对mysql上actionLog库中的log表进行数据抽取,该表的表结构如下:

mysql> desc log;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| log_id       | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| name          | varchar(255) | YES  |     | NULL    |                |
| action       | varchar(255) | YES  |     | NULL    |                |
| logger_id    | varchar(255) | YES  |     | NULL    |                |
| time         | varchar(255) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

因为指定了导出列为logger_id、time。因此导出到hdfs上的数据如下:

[hadoop@hadoop-test-nn lib]$ hdfs dfs -ls /test/loginInfo   
Found 1 items
-rw-r--r--   2 hadoop supergroup     211825 2017-08-02 16:04 /test/loginInfo/userLoginInfo.txt
[hadoop@hadoop-test-nn lib]$ hdfs dfs -cat /test/loginInfo/userLoginInfo.txt
wanger,2017-07-27 14:21:12
zhangsan,2017-07-27 14:37:16
james,2017-07-27 15:27:13
...

(注:这里对/test/loginInfo下的文本内容进行了合并和重新存放,实际使用过程中该目录下会产生多个以part-**格式命名的文本,文本内容的格式是一致的)
现在数据已经成功抽取并以文本方式存放到hdfs上了。下面就可以编写mapreduce程序来对文本进行分析了。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:hadoop2.6.5+sqoop1.4.6环境部署与测试(三)-创新互联
网站地址:http://www.cdkjz.cn/article/hphgi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220