当前位置:   article > 正文

sqoop2-mysql导入到hdfs_sqoop2 mysql导入hdfs

sqoop2 mysql导入hdfs

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, '我是王五');
  • 1
  • 2
  • 3
  • 4

二. sqoop2安装

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

  2. 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标签 表示可代理访问范围 -->
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. vim ./bin/sqoop.sh
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
  • 1
  • 2
  • 3
  • 4
  1. vim conf/sqoop.properties
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
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 验证 ./bin/sqoop2-tool verify

在这里插入图片描述

  1. unzip mysql-connector-java-5.1.41.zip
    解压出jar包 cp到sqoop目录下server/lib和shell/lib下

  2. 启动服务端
    ./bin/sqoop.sh server start

  3. 查看启动情况 jps -l
    14690 org.apache.sqoop.server.SqoopJettyServer

三. sqoop 终端模式

  1. 进入sqoop终端模式
    ./bin/sqoop2-shell

  2. 连接服务端,配置参数
    set server --host 127.0.0.1 --port 12000 --webapp sqoop

  3. 运行命令查看客户端和服务端的版本信息,确保已正确连接成功了
    show version -all
    在这里插入图片描述

  4. 查看支持的link
    show connector 从展示的信息来看mysql和hdfs肯定没问题 继续
    在这里插入图片描述

  5. 创建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中是会报错的。这个属性默认值就是双引号,所以不能使用回车,必须将之覆盖,可使用空格覆盖了这个值。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 创建成功后会输入一行:
    New link was successfully created with validation status OK and name 180mysql

  2. 创建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中的配置值,这里我们不需要覆盖,直接回车即可
  • 1
  • 2
  • 3
  • 4
  1. 创建成功后, 可以show link查看配置的link
    在这里插入图片描述
  2. 接下来我们需要把link组合起来使用, 创建job
    -f 为from, -t为to 我们是mysql --> hdfs 所以创建
    create job -f “180mysql” -t “180hdfs”
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包,这里直接回车
  • 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
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  1. 启动job
    start job -n ‘180mysql2hdfs’

在这里插入图片描述

  1. 查看yarn执行情况

在这里插入图片描述

  1. 查看hdfs下文件
    在这里插入图片描述

总结:

  1. sqoop集成进hadoop, 配置一下变量, 启动服务端
  2. 进入shell内, 创建两条link
  3. 创建job, 指定两条link关系, 设置表与hdfs路径
  4. 启动job 去yarn以及hdfs查看运行结果
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/519575
推荐阅读
相关标签
  

闽ICP备14008679号