9、Sqoop 组件安装与配置

9、Sqoop 组件安装与配置

# 部署sqoop(在master上执行以下命令)
tar xf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/src/
cd /usr/local/src/
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop
cd /usr/local/src/sqoop/conf/
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/src/hadoop
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop
export HBASE_HOME=/usr/local/src/hbase
export HIVE_HOME=/usr/local/src/hive
# 保存以上配置后执行以下命令

vi /etc/profile.d/sqoop.sh

export SQOOP_HOME=/usr/local/src/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib
# 保存以上配置后执行以下命令

source /etc/profile.d/sqoop.sh
echo $PATH
cp mysql-connector-java-5.1.46.jar /usr/local/src/sqoop/lib/

2、 启动sqoop集群(在master上执行)

su - hadoop
start-all.sh
# 执行以上命令后要确保master上有NameNode、SecondaryNameNode、ResourceManager进程,slave节点上要有DataNode、NodeManager进程
sqoop list-databases --connect jdbc:mysql://master:3306 --username root -P
# 如果以上命令执行后能看到以下5个数据库则表示启动成功,且能正常连接数据库

information_schema
hive
mysql
performance_schema
sys

3、连接hive配置(在master上执行)

cp /usr/local/src/hive/lib/hive-common-2.0.0.jar  /usr/local/src/sqoop/lib/
mysql -uroot -pPassword123!
mysql> create database sample;
mysql> use sample;
mysql> create table student(number char(9) primary key, name varchar(10));
mysql> insert into student values('01','zhangsan'),('02','lisi'),('03','wangwu');
mysql> select * from student;
+--------+----------+
| number | name     |
+--------+----------+
| 01     | zhangsan |
| 02     | lisi     |
| 03     | wangwu   |
+--------+----------+
3 rows in set (0.00 sec)
mysql> quit
# 如果能看到以上三条记录则表示数据库中表创建成功

4、 在 Hive 中创建 sample 数据库和 student 数据表

hive
hive> create database sample;
hive> use sample;
hive> create table student(number STRING,name STRING);
hive> exit;
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123! --table student --fields-terminated-by '|' --delete-target-dir --num-mappers 1 --hive-import --hive-database sample --hive-table student
hive
hive> select * from sample.student;
OK
01|zhangsan	NULL
02|lisi	NULL
03|wangwu	NULL
Time taken: 1.556 seconds, Fetched: 3 row(s)
hive> exit;
# 能看到以上内容则表示将数据从mysql导入到hive成功了。

5、 将数据从hadoop集群的hive中导出到mysql数据库中(在master上执行)

# 清空mysql数据库中sample库的student表内容
mysql -uroot -pPassword123!
mysql> delete from sample.student;
mysql> select * from sample.student;
Empty set (0.00 sec)
mysql> quit
# 能看到以上Empty set则表示清空成功
sqoop export --connect "jdbc:mysql://master:3306/sample?useUnicode=true&characterEncoding=utf-8" --username root --password Password123! --table student --input-fields-terminated-by '|' --export-dir /user/hive/warehouse/sample.db/student/*
mysql -uroot -pPassword123!
mysql> select * from sample.student;
+--------+----------+
| number | name     |
+--------+----------+
| 01     | zhangsan |
| 02     | lisi     |
| 03     | wangwu   |
+--------+----------+
3 rows in set (0.00 sec)
mysql> quit
# 能看到以上内容则表示从hadoop集群的hive中导出数据到mysql数据库成功。

6、 sqoop常用命令

# 列出所有数据库
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password Password123!

# 连接 MySQL 并列出 sample 数据库中的表
sqoop list-tables --connect "jdbc:mysql://master:3306/sample?useSSL=false" --username root --password Password123!

# 将关系型数据的表结构复制到 hive 中,只是复制表的结构,表中的内容没有复制过去
sqoop create-hive-table --connect jdbc:mysql://master:3306/sample --table student --username root --password Password123! --hive-table test
# 如果执行以上命令之后显示hive.HiveImport: Hive import complete.则表示成功

sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123! --table student --fields-terminated-by '|' --delete-target-dir --num-mappers 1 --hive-import --hive-database default --hive-table test
hive
hive> show tables;
OK
test
Time taken: 0.606 seconds, Fetched: 1 row(s)
hive> exit;
# 如果能看到以上test表则表示成功

# 从mysql中导出表内容到HDFS文件中
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123! --table student --num-mappers 1 --target-dir /user/test
# 执行以上命令后在浏览器上访问
master_ip:50070  然后点击Utilities下面的Browse the file system,要能看到user就表示成功

hdfs dfs -ls /user/test
hdfs dfs -cat /user/test/part-m-00000
#  执行以上命令后要能看到数据库中的内容则表示成功
posted @ 2022-05-11 16:15  陽YANG  阅读(46)  评论(0编辑  收藏  举报