首页 Tez安装指南
文章
取消

Tez安装指南

sqoop 是基于 hdfs 的一款 ETL 工具,主要作用是进行 hive(hdfs) 和关系型数据库之间的数据传输。 jdk 、 hadoop 和 hive 在之前的文章 Hadoop安装指南Hive安装指南 详细介绍过安装方法。sqoop 分 sqoop1 和 sqoop2 两个版本并行发展,因为 sqoop2 目前还有许多问题,所以选择 sqoop1 来安装,现在介绍安装 sqoop1 ,同样采用本地模式安装以用来学习。

安装环境

  • ubuntu-18.04

  • jdk-1.8.0_261

  • hadoop-2.10.0

  • hive-2.3.7

安装 tez

Tez 官网 下载所需要版本的 tez 安装包,解压到 /usr/local 文件夹中。需要样在 ~/.bashrc 中设置环境变量。建议下载二进制包,自己编译的话会有很多问题。

1
2
3
# set tez home.
export TEZ_HOME=/usr/local/tez
export PATH=$TEZ_HOME/bin:$PATH

将 tez 安装包上传到 HDFS

1
2
hadoop fs -mkdir /user/tez
hadoop fs -put $TEZ_HOME/share/tez.tar.gz /user/tez

修改 tez 配置文件

tez-site.xml

在 Hadoop

1
2
3
4
5
6
7
8
9
10
<configuration>
  <property>
    <name>tez.lib.uris</name>
    <value>hdfs://localhost:9000/user/tez/tez.tar.gz</value>  <!-- 这里指向hdfs上的tez.tar.gz包 -->
  </property>
  <property>
    <name>tez.container.max.java.heap.fraction</name>  <!-- 这里是因为我机器内存不足,而添加的参数 -->
    <value>0.2</value>
  </property>
</configuration>

添加 mysql 驱动

下载 mysql 对应的驱动包,放到 $SQOOP_HOME/lib 目录中。

驱动下载:https://dev.mysql.com/downloads/connector/j/

常用操作

查看数据库

1
2
3
4
sqoop list-databases \
--connect 'jdbc:mysql://localhost:3306/hive2?serverTimezone=Asia/Shanghai' \
--username 'hive' \
--password 'hive'

执行 SQL

1
2
3
4
5
sqoop-eval \
--connect 'jdbc:mysql://localhost:3306/hive2?serverTimezone=Asia/Shanghai' \
--username 'hive' \
--password 'hive' \
--query "SHOW TABLES"

导入数据

首先要在 hive 中创建一个和 mysql 中表结构相同的表。

1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS dbs;
CREATE TABLE `dbs`(
  `db_id` bigint,
  `desc` string,
  `db_location_uri` string,
  `name` string,
  `owner_name` string,
  `owner_type` string,
  `ctlg_name` string
)
;
1
2
3
4
5
6
7
8
9
10
11
12
13
sqoop import \
--delete-target-dir \
--connect 'jdbc:mysql://localhost:3306/hive?serverTimezone=Asia/Shanghai' \
--username 'hive' \
--password 'hive' \
--query "SELECT db_id, \`desc\`, db_location_uri, name, owner_name, owner_type, ctlg_name FROM dbs WHERE \$CONDITIONS" \
--split-by db_id \
--boundary-query "SELECT MIN(db_id), MAX(db_id) FROM dbs" \
--fields-terminated-by '\001' \
--lines-terminated-by '\n' \
--null-string '\\N' \
--null-non-string '\\N' \
--target-dir 'hdfs://localhost:9000/user/hive/warehouse/dbs/'

导出数据

1
2
3
4
5
6
7
8
9
10
11
sqoop export \
--connect 'jdbc:mysql://localhost:3306/hive?serverTimezone=Asia/Shanghai' \
--username 'hive' \
--password 'hive' \
--table dbs1 \
--columns 'db_id, desc, db_location_uri, name, owner_name, owner_type, ctlg_name' \
--export-dir 'hdfs://localhost:9000/user/hive/warehouse/dbs' \
--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n' \
--input-null-string "\\\\N" \
--input-null-non-string "\\\\N"
本文由作者按照 CC BY 4.0 进行授权