赞
踩
sqoop2 mysql —> hdfs 数据全量导入
sqoop2下载地址 https://mirrors.bfsu.edu.cn/apache/sqoop/1.99.7/sqoop-1.99.7-bin-hadoop200.tar.gz
mysql驱动jar包链接:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.41.zip
一. mysql数据准备
create table sqoop_table(id int, name varchar(100), age int, remark varchar(255));
insert into sqoop_table(id, name, age, remark) values(1, '张三', 1, '我是张三');
insert into sqoop_table(id, name, age, remark) values(2, '李四', 2, '我是李四');
insert into sqoop_table(id, name, age, remark) values(3, '王五', 3, '我是王五');
二. sqoop2安装
tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz
vim ./etc/hadoop/core-site.xml(进到hadoop目录)
因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组
<!-- sqoop2 -->
<property>
<name>hadoop.proxyuser.${SYSTEM_USER}.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.${SYSTEM_USER}.groups</name>
<value>*</value>
</property>
<!-- ${SYSTEM_USER} 为启动sqoop时的用户 非服务器名称
value标签 表示可代理访问范围 -->
HADOOP_COMMON_HOME=${HADOOP_HOME}/share/hadoop/common
HADOOP_HDFS_HOME=${HADOOP_HOME}/share/hadoop/hdfs
HADOOP_MAPRED_HOME=${HADOOP_HOME}/share/hadoop/mapreduce
HADOOP_YARN_HOME=${HADOOP_HOME}/share/hadoop/yarn
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=$HADOOP_HOME/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
unzip mysql-connector-java-5.1.41.zip
解压出jar包 cp到sqoop目录下server/lib和shell/lib下
启动服务端
./bin/sqoop.sh server start
查看启动情况 jps -l
14690 org.apache.sqoop.server.SqoopJettyServer
三. sqoop 终端模式
进入sqoop终端模式
./bin/sqoop2-shell
连接服务端,配置参数
set server --host 127.0.0.1 --port 12000 --webapp sqoop
运行命令查看客户端和服务端的版本信息,确保已正确连接成功了
show version -all
查看支持的link
show connector 从展示的信息来看mysql和hdfs肯定没问题 继续
创建mysql的link连接
create link -connector generic-jdbc-connector
Name:标示这个link的字符串,如180mysql
Driver Class:指定jdbc启动时所需要加载的driver类,我们这里使用的是MySQL,那么就是com.mysql.jdbc.Driver
Connection String:就是使用jdbc连接时所需要的url参数了。如:jdbc:mysql://hadoop005:3306/sqoop_test,sqoop_test就是数据库名称。
Username:链接数据库的用户名,也就是mysql客户端传入的-u参数。如:root
Password:链接数据库的用户密码。
FetchSize:这个与jdbc中的fetchSize参数一样。当需要更多行时应该从数据库获取的行数。直接回车了,使用默认值。
entry# 这时候可以手动指定很多JDBC属性的值。本例只覆盖了一个protocol值为tcp:
protocol=tcp
Identifier enclose: 指定SQL中标识符的定界符,也就是说,有的SQL标示符是一个引号:select * from "table_name",这种定界符在MySQL中是会报错的。这个属性默认值就是双引号,所以不能使用回车,必须将之覆盖,可使用空格覆盖了这个值。
创建成功后会输入一行:
New link was successfully created with validation status OK and name 180mysql
创建hdfs的link连接
create link -connector hdfs-connector
Name:标示这个link的字符串,如HDFS
URI: 集群URI,这个是在Hadoop中配置的,可找到/etc/hadoop/core-site.xml文件中的fs.defaultFS属性,输入对应的value值即可。
Conf directory: hadoop的配置文件目录,如:/home/bigdata/module/hadoop-2.7.2/etc/hadoop
entry# 覆写hadoop中的配置值,这里我们不需要覆盖,直接回车即可
Name: 标示这个job的字符串,如180mysql2hdfs Schema name: 数据库的schema,这里使用MySQL也就是数据库的名称了,如:sqoop_test Table name: 数据库中的表名 如: sqoop_table SQL statement: 就是sql查询语句,可选的,直接回车就好 element# 重写数据相关的一些参数,可选,直接回车就好 Partition column: 分割的列,也就是将最终文件分割为多个,默认导入到一个文件。 Partition column nullable: (可选直接回车) Boundary query: (可选直接回车) Check column: (可选直接回车) Last value: (可选直接回车) Override null value: 覆盖值为空的列 (可选直接回车) Null value: 覆盖的值为什么 (可选直接回车) File format: 文件格式,这里选择0,TEXT_FILE Compression codec: 压缩编码器,这里不压缩,选择0 Custom codec: 自定义的编码器,这里也不需要,直接回车 Output directory: 导入的输出目录,这里需要注意指定存储在HDFS文件系统中的路径,需要指定一个存在的路径,或者存在但路径下是空的,貌似这样才能成功。如: /180sqoop/sqoop_table Append mode: 用于指定是否是在已存在导出文件的情况下将新数据追加到数据文件中。可选回车 Extractors: 可选,对应 mapreduce 的 job 中 map 的数量。这里直接回车 Loaders: 可选,对应 mapreduce 的 job 中的 reduce 的数量。这里直接回车 element# Classpath配置,如:需要添加任务额外的jar包,这里直接回车
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。