设为首页 收藏本站
查看: 624|回复: 0

[经验分享] hadoop2.6.5+sqoop1.4.6环境部署与测试(三)

[复制链接]

尚未签到

发表于 2018-10-29 06:40:20 | 显示全部楼层 |阅读模式
  在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软链接。
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程序来对文本进行分析了。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627677-1-1.html 上篇帖子: hadoop2.6.5+sqoop1.4.6环境部署与测试(二) 下篇帖子: 大数据学习实践总结(2)--环境搭建,JAVA引导,HADOOP搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表