sqoop2配置过程

来源:互联网 发布:java人员管理系统 编辑:程序博客网 时间:2024/06/08 02:03

1、Master安装Sqoop2

1. 下载解压配置环境变量

参考1:http://blog.csdn.net/gamer_gyt/article/details/55225700

参考2:http://www.cnblogs.com/gw811/p/4630116.html

参考3:http://blog.csdn.net/u014729236/article/details/46876651

参考4:http://blog.csdn.net/u012842205/article/details/52344196

下载sqoop-1.99.7-bin-hadoop200.tar.gz并解压

$ tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz

配置环境变量

$ vim ~/.bashrc

添加如下内容:

export SQOOP2_HOME=/home/cloud/cloud/sqoop-1.99.7-bin-hadoop200

export CATALINA_BASE=$SQOOP2_HOME/server

export PATH=$PATH:$SQOOP2_HOME/bin

2. 修改Hadoop的core-site.xml

Sqoop服务器将需要模拟用户访问集群内外的HDFS和其他资源,作为开始给定作业的用户,而不是运行服务器的用户。 您需要配置Hadoop以通过所谓的proxyuser系统显式地允许此模拟。 您需要在core-site.xml文件 - hadoop.proxyuser。$SERVER_USER.hosts和hadoop.proxyuser。$ SERVER_USER.groups中创建两个属性,其中$ SERVER_USER是将运行Sqoop 2服务器的用户。 在大多数情况下,配置*是足够的。

当服务器在sqoop2user下运行时,需要在core-site.xml文件中配置如下:

$ vim $HADOOP_HOME/etc/hadoop/core-site.xml

添加如下配置:

<property>

       <name>hadoop.proxyuser.sqoop2.hosts</name>

       <value>*</value>

</property>

<property>

       <name>hadoop.proxyuser.sqoop2.groups</name>

       <value>*</value>

</property>

3. 修改Hadoop的mapred-site.xml

vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

添加如下配置:

<property>

   <name>mapreduce.jobhistory.address</name>

   <value>master:10020</value>

</property>

在master上启动历史记录服务

mr-jobhistory-daemon.sh start historyserver

输入如下命令查看历史记录服务是否已启动

jps | grep JobHistoryServer

不进行如上配置会出现错误:13.1无法执行 status job、stop job、delete job等命令或对应的

4. 下载并拷贝MySQL的jar库到lib目录下

下载地址https://dev.mysql.com/downloads/connector/j/

解压:$ tar –zxvfmysql-connector-java-5.1.41.tar.gz

找到mysql-connector-java-5.1.41-bin.jar,拷贝到sqoop的server/lib目录下

$ cp mysql-connector-java-5.1.41-bin.jar $SQOOP2_HOME/server/lib/

5. 修改sqoop.properties

$ vim $SQOOP2_HOME/conf/sqoop.properties

修改如下配置项:

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/cloud/cloud/hadoop-2.8.0/etc/hadoop/

org.apache.sqoop.security.authentication.type=SIMPLE

org.apache.sqoop.security.authentication.handler=org.apache.sqoop.security.authentication.SimpleAuthenticationHandler 

org.apache.sqoop.security.authentication.anonymous=true

如图:


6. 修改sqoop_bootstrap.properties

$ vim $SQOOP2_HOME/conf/sqoop_bootstrap.properties

采用如下默认配置:

sqoop.config.provider=org.apache.sqoop.core.PropertiesConfigurationProvider

7. 初始化

元数据存储库需要在第一次启动Sqoop2服务器之前进行初始化。使用升级工具初始化存储库:

$ sqoop.sh


$ sqoop2-tool upgrade


8. 使用验证工具验证是否已正确配置一切

$ sqoop2-tool verify


9. 开启服务器

$ sqoop2-server start


这时可以通过JDK中的jps工具查看是否已经正确启动起来,正常情况下会有个SqoopJettyServer的进程,这也可以想象,Sqoop server是基于jetty实现的。

$ jps


10. 客户端配置和使用

到这里基本sqoop1.99.7已经配置完毕了,至于客户端就是启动,进行使用

$ sqoop2-shell

11. 使用Sqoop2 Java API将Mysql导入HDFS

代码见十二、4 使用Sqoop2 Java API将Mysql导入HDFS

编译:

javac -cp$SQOOP2_HOME/shell/lib/sqoop-client-1.99.7.jar:$SQOOP2_HOME/shell/lib/sqoop-common-1.99.7.jarMysqlToHDFS.java

执行:

java -cp.:$SQOOP2_HOME/shell/lib/sqoop-client-1.99.7.jar:$SQOOP2_HOME/shell/lib/sqoop-common-1.99.7.jarMysqlToHDFS

12. 使用Sqoop2 Java API将Mysql导入HBase

用到了phoenix,拷贝phoenix访问HBase的JDBC驱动到sqoop2

cp $PHOENIX_HOME/phoenix-4.11.0-HBase-1.2-client.jar$SQOOP2_HOME/server/lib

cp$PHOENIX_HOME/phoenix-4.11.0-HBase-1.2-server.jar $SQOOP2_HOME/server/lib

cp $HBASE_HOME/lib/hbase-client-1.2.6.jar$SQOOP2_HOME/server/lib

 

13. 遇到的问题以及解决方案

13.1 无法执行 status job、stop job、delete job等命令或对应的JAVA API

执行status job–n “jobname”、stop job –n“jobname”、delete job –n“jobname”等命令报错,或者执行sqoop2的JAVA API报错,如下图:


解决办法:修改Hadoop的mapred-site.xml。在命令行中输入如下命令:

vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

添加如下配置:

<property>

   <name>mapreduce.jobhistory.address</name>

   <value>master:10020</value>

</property>

在master上启动历史记录服务

mr-jobhistory-daemon.sh start historyserver

输入如下命令查看历史记录服务是否已启动

jps | grep JobHistoryServer

注:解决办法参考自http://blog.csdn.net/wqhlmark64/article/details/73274910