Sqoop2搭建及使用
1. 下载并安装配置Sqoop
【需要的环境:Hadoop,Java】
首先 Hadoop版本2.7.2
20161013
找了篇Sqoop的文章就开撸 结果发现什么1.3,1.9,又有什么Sqoop1,Sqoop2.乱了。
先是使用的1.3,两个多小时,各种失败。发现还有一个与hadoop的版本兼容问题。
下午立即开始使用官网的Sqoop2,发现只有1.99.7,先用吧
虽然好了一点,但还是各种问题,一天过去了。。
注意: sqoop1的1.4.x及以下版本是与hadoop-2.6.x以下兼容,sqoop2是与hadoop-2.6.0+兼容,千万不能弄错!
还有,下载的这个压缩包里面都有一个doc文件夹,里面放着文档,因为版本较多且兼容问题严重,所以一定要参照这个文档安装和配置!
20161014
昨天捣鼓了一天,先是Sqoop1.3,然后用1.99.7.结果各种问题;
今天早上又去官网游荡了一下,发现这个1.99.7还不是正式发行版,不能放到生产环境的,真够郁闷,没办法,打算尝试一下1.99.6吧。
然而 官网已经把1.99.6的安装包去掉了,只能去网上找了一份。试了一下 顺畅了许多。
具体安装配置过程:(sqoop的shell命令是在$SQOOP_HOME/bin目录下)
- 下载解压
- 配置~/.bashrc,然后执行 source ~/.bashrc 使变更即刻生效
1234
export
PATH=.......:$SQOOP_HOME
/bin
:$PATH
#将红字部分插入原来的$PATH前面即可
export
SQOOP_HOME=
/home/hadoop/sqoop
#Sqoop根目录
export
CATALINE_BASE=$SQOOP_HOME
/server
export
LOGDIR=$SQOOP_HOME
/logs
#log目录
- 配置sqoop server
- $SQOOP_HOME/server/conf/catalina.properties文件,修改common.loader属性,引用$HADOOP_HOME/share/hadoop/* 和 */lib
1
common.loader=${catalina.base}
/lib
,${catalina.base}
/lib/
*.jar,${catalina.home}
/lib
,${catalina.home}
/lib/
*.jar,${catalina.home}/..
/lib/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/common/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/common/lib/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/hdfs/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/hdfs/lib/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/mapreduce/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/mapreduce/lib/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/yarn/
*.jar,
/home/hadoop/hadoop-2
.7.2
/share/hadoop/yarn/lib/
*.jar
- $SQOOP_HOME/server/conf/sqoop.properties
1
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=$HADOOP_HOME
/etc/hadoop
#红字部分要替换成具体的路径,切记!
- $SQOOP_HOME/server/conf/catalina.properties文件,修改common.loader属性,引用$HADOOP_HOME/share/hadoop/* 和 */lib
- 修改hadoop配置文件core-site.xml
<property> <name>hadoop.proxyuser.$SERVER_USER.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.$SERVER_USER.groups</name> <value>*</value> </property>
- 验证sqoop2服务器的配置情况
1
sqoop2-tool verify
#如果提示successful 就可以进行下一步了,否则需要查看错误信息和日志文件
到这里 配置就完成了。
Sqoop1.996命令
参考:http://www.mamicode.com/info-detail-411853.html
Show
- show server --[all,host,port,webapp] #展示服务端信息
- show option --name verbose #展示客户端配置
- show version --[all,client,server,protocol]
- show connector [--all]
- show connection [--all,--xid 3]
- show job [--all,--jid 3]
- show link [--all, --lid3]
Update
- update connection --xid 2
- update job --jid 2
- update link --lid 3
Delete
- delete connection --xid 3
- delete job --jid 1
- delete link --lid 2
Clone
- clone connection --xid 2
- clone job --jid 2
- clone link --lid 2
Submission
- start job --jid 2 -s
- stop job --jid 2
- status job --jid 2
开始数据传输
开始之前需要准备几个jar包
①如果数据库是MSSQL的话,需要下载这个SqlServerJDBC驱动SQL Server JDBC Driver & Connector
解压后将lib里面的jar文件拷贝到sqoop安装目录的server/lib下面
②mysql的话,需要下载mysql-connector-java
- 启动 Sqoop2包含了server和client,所以需要先启动server
-
1
sqoop2.sh server start
#服务关闭:sqoop2-server stop
- 以交互模式打开client
sqoop2-shell
- 配置客户端使用指定的Sqoop server
1
set
server --host your.host.com --port 12000 --webapp sqoop
#红字部分替换成自己的Sqoop服务器 一般用localhost即可
创建数据库link
1 2 3 4 5 6 7 8 | JDBC Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver #驱动名称 JDBC Connection String: jdbc:sqlserver: //192 .168.1.212:1433;DatabaseName=Test #格式与mysql略有出入,并且这是MSSQL2005以上的格式,2000的话 还有些区别 Username: sa Password: ************* JDBC Connection Properties: There are currently 1 values in the map: protocol = tcp entry # |
创建hdfs link与mysql的方式一致
创建job与mysql仅仅有一点区别
就是Schema name: dbName.dbo 比mysql多了红字部分
Sqoop + MySql + Hadoop(HBase)
创建数据库link
1 2 3 4 5 6 7 8 | Using Connector generic-jdbc-connector with id 4 Link configuration JDBC Driver Class: com.mysql.jdbc.Driver JDBC Connection String: jdbc:mysql: //192 .168.1.333:3306 /someDB Username: root Password: 123 JDBC Connection Properties: protocol = tcp |
创建hdfs link
1 2 3 4 | Using Connector hdfs-connector with id 3 Link configuration HDFS URI: hdfs: //hdfs nameservice:port/ #使用hadoop配置文件 core-site.xml中fs.defaultFS的值即可 Hadoop conf directory: /home/hadoop/hadoop/etc/hadoop #hadoop配置文件的路径 |
创建Job
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Job with id 1 and name mysql2hdfs (Enabled: true , Created by hadoop at 16-10-17 下午3:56, Updated by hadoop at 16-10-17 下午4:48) Throttling resources Extractors: 2 Loaders: 2 From link: 1 From database configuration Schema name: dbName Table name: targetTableName Table SQL statement: Table column names: Partition column name: Null value allowed for the partition column: Boundary query: Incremental read Check column: Last value: To link: 2 To HDFS configuration Override null value: Null value: Output format : TEXT_FILE Compression format : NONE Custom compression format : Output directory: hdfs: /mysqlData/sqoopTableName #要在hdfs中存放的路径 Append mode: |
注意事项:
1.在执行job之前 最好执行命令
1 | set option --name verbose --value true |
这样如果执行出现问题,会把详细日志打印出来,一目了然。
2.一个job如果执行成功,在hdfs的指定目录下就会有生成的文件,如果想重新start一遍,需要把生成的文件删除才行
1 | $HADOOP_HOME /bin/hadoop dfs - rm /mysqlData/sqoopTableName/ * #之前在job中设置的hdfs路径 |
查看生成的文件
1 | $HADOOP_HOME /bin/hadoop dfs - cat /mysqlData/sqoopTableName/ * |
1 2 3 4 5 6 7 8 | [hadoop@hadoop1 bin]$ . /hadoop dfs - cat /db_data/Cities/ * DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. 1, '青岛' , '0530' 2, '济南' , '0531' [hadoop@hadoop1 bin]$ |
To HBase:Sqoop1与Sqoop2的支持程度
Sqoop2在1.99.6开始通过KiteConnector的方式在一定程度上支持了HBase的读写 传送门。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步