sqoop2基本架构、部署和个人使用感受
一、概述
随着公司集群升级到2.x,Hadoop周边的一些工具也进行了版本的更新。这次主要说说sqoop2的升级和部署,其中sqoop1和sqoop2基本框架和用法发生翻天覆地的改变,其对版本的向下兼容做的十分不好,接下来慢慢说,总之各种值得吐槽的地方。
二、sqoop2的基本框架,以及部署
(1)首先说说sqoop1和sqoop2区别
这两个版本是完全不兼容的,其具体的版本号区别为1.4.x为sqoop1,1.99x为sqoop2。sqoop1和sqoop2在架构和用法上已经完全不同。
在架构上,sqoop2引入了sqoop server(具体服务器为tomcat),对connector实现了集中的管理。其访问方式也变得多样化了,其可以通过REST API、JAVA API、WEB UI以及CLI控制台方式进行访问。另外,其在安全性能方面也有一定的改善,在sqoop1中我们经常用脚本的方式将HDFS中的数据导入到mysql中,或者反过来将mysql数据导入到HDFS中,其中在脚本里边都要显示指定mysql数据库的用户名和密码的,安全性做的不是太完善。在sqoop2中,如果是通过CLI方式访问的话,会有一个交互过程界面,你输入的密码信息不被看到。下图是sqoop1和sqoop2简单架构对比:
(2)sqoop2部署步骤
1、下载sqoop-1.99.x版本的sqoop,并进行解压。
2、配置好SQOOP_HOME等环境变量,并用source是~/.bash_profile文件即时生效。
3、配置sqoop server
修改$SQOOP_HOME/server/conf/catalina.properties,修改common.loader属性,加入hadoop2.x的各种lib包,具体指向路径为$HADOOP_HOME/share/hadoop/common/*.jar,
$HADOOP_HOME/share/hadoop/common/lib/*.jar,$HADOOP_HOME/share/hadoop/yarn/*.jar,$HADOOP_HOME/share/hadoop/hdfs/*.jar,$HADOOP_HOME,/share/hadoop/mapreduce/*.jar,没有路径用逗号分开。另外,在$SQOOP_HOME中建个文件夹例如hadoop_lib,然后将这些jar包cp到此文件夹中,最后将此文件夹路径添加到common.loader属性中,这种方法更加直观些。
修改$SQOOP_HOME/server/conf/sqoop.properties,修改org.apache.sqoop.submission.engine.mapreduce.configuration.directory属性值为$HADOOP_HOME/etc/hadoop。
另外,要主要一下$SQOOP_HOME/server/conf/server.xml中的tomcat端口问题,确保这些端口不会和你其他tomcat服务器冲突。
修改配置完毕就可以启动sqoop server了,启动命令:$SQOOP_HOME/bin/sqoop.sh server start,启动完看服务器日志如果没有错误就ok了。
在修改sqoop server配置文件,启动过程中你可能会遇到各种问题,这些问题可能是log4j或者是tomcat的相关错误问题,还是不难解决的。其中包冲突问题我就遇到了,看sqoop server日志:
刚刚看到这个错误信息可能不容易往jar包冲突这方面想,出现这个错误的原因是刚刚$SQOOP_HOME/server/conf/catalina.properties文件common.loader属性中的hadoop2.x lib中的jar包和sqoop server的web项目中的lib中的包冲突了,解决方法可以将$SQOOP_HOME/server/webapps/sqoop/WEB-INF/lib中的log4j-1.2.16.jar删掉就ok了。