[关闭]
@zhangyy 2018-11-19T14:15:29.000000Z 字数 3647 阅读 122

sqoop 的安装与常用抽数操作

协作框架


  • sqoop 简介处理
  • sqoop 环境配置处理
  • sqoop 数据导入导出处理

一: sqoop 简介处理

  1. - 1. Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 MySQL ,Oracle ,Postgres等)中的数据导进到HadoopHDFS中,也可以将HDFS的数据导进到关系型数据库中。
  2. - 2. Sqoop中一大亮点就是可以通过hadoopmapreduce把数据从关系型数据库中导入数据到HDFS,可以将hive 的数据,hdfs 上面的数据进行 提取的到关系型数据当中。 反之亦可操作。

二:sqoop 安装与配置处理:

  1. 环境需求: 安装好的hadoop环境与hive 环境已经配置。

2.1 配置单节点的zookeeper 环境

  1. tar -zxvf zookeeper-3.4.5-cdh5.3.6.tar.gz
  2. mv zookeeper-3.4.5-cdh5.3.6 yangyang/zookeeper
  3. cd yangyang/zookeeper/conf
  4. cp -p zoo_sample.cfg zoo.cfg

2.2 给定zookeeper 的Datadir 目录:

  1. # the directory where the snapshot is stored.
  2. # do not use /tmp for storage, /tmp here is just
  3. # example sakes.
  4. #dataDir=/tmp/zookeeper
  5. <!--给定dataDir 目录 -->
  6. dataDir=/home/hadoop/yangyang/zookeeper/data
  7. # the port at which the clients will connect
  1. echo "1" > /home/hadoop/yangyang/zookeeper/myid

2.3 启动zookeeper服务

  1. cd /home/hadoop/yangyang/zookeer/sbin/
  2. ./zkServer.sh start

image_1aj9f5pnt1bpj11ghsc1c2g1gcp9.png-13.3kB

  1. tar -zxvf sqoop-1.4.5-cdh5.3.6.tar.gz
  2. mv sqoop-1.4.5-cdh5.3.6 yangyang/sqoop
  3. cp -p mysql-connector-java-5.1.27-bin.jar /home/hadoop/yangyang/sqoop/lib/
  4. cd yangyang/sqoop/conf
  5. cp -p sqoop-env-template.sh sqoop-env.sh

2.4 配置sqoop环境

vim sqoop-env.sh

  1. #Set path to where bin/hadoop is available
  2. <!--配置hadoop目录-->
  3. export HADOOP_COMMON_HOME=/home/hadoop/yangyang/hadoop
  4. #Set path to where hadoop-*-core.jar is available
  5. <!--配置hadoopmapreduce目录-->
  6. export HADOOP_MAPRED_HOME=/home/hadoop/yangyang/hadoop
  7. <!--配置hbase 目录>
  8. #set the path to where bin/hbase is available
  9. #export HBASE_HOME=
  10. #Set the path to where bin/hive is available
  11. <!--配置hive的目录-->
  12. export HIVE_HOME=/home/hadoop/yangyang/hive
  13. <!--配置zookeeper 的目录处理>
  14. #Set the path for where zookeper config dir is
  15. export ZOOCFGDIR=/home/hadoop/yangyang/zookeeper/conf

二:sqoop 的环境测试处理

2.1 在mysql 的环境下创建数据库,并创建表处理

  1. mysql -uroot -p123456
  2. create database yangyang;
  3. use yangyang;
  4. 创建一个my_user表:
  5. CREATE TABLE `my_user` (
  6. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  7. `account` varchar(255) DEFAULT NULL,
  8. `passwd` varchar(255) DEFAULT NULL,
  9. PRIMARY KEY (`id`)
  10. );
  11. 插入数据:
  12. INSERT INTO `my_user` VALUES ('1', 'admin', 'admin');
  13. INSERT INTO `my_user` VALUES ('2', 'pu', '12345');
  14. INSERT INTO `my_user` VALUES ('3', 'system', 'system');
  15. INSERT INTO `my_user` VALUES ('4', 'zxh', 'zxh');
  16. INSERT INTO `my_user` VALUES ('5', 'test', 'test');
  17. INSERT INTO `my_user` VALUES ('6', 'pudong', 'pudong');
  18. INSERT INTO `my_user` VALUES ('7', 'qiqi', 'qiqi');

三: 将mysql的数据表导入到hdfs 上面:

3.1 sqoop 导入不指定目录:

  1. bin/sqoop import \
  2. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  3. --username root \
  4. --password 123456 \
  5. --table my_user
  6. 导出的路径在hdfs 上面的目录是
  7. /usr/hadoop/my_user/
  8. 注意:
  9. 不指定导入目录,默认情况是导入到hdfs上面用户家目录下面。
  10. 默认导入到HDFS里面,分隔符是,

3.2 导入带目录路径:

  1. bin/sqoop import \
  2. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  3. --username root \
  4. --password 123456 \
  5. --table my_user \
  6. --target-dir /db_0521/ \
  7. -m 1 \
  8. --delete-target-dir \
  9. --fields-terminated-by '\t' \
  10. --direct

image_1aj9hg21ll5qn154t36r48ivm.png-64kB
image_1aj9hnd0u1qp513rqgot1qve1j971t.png-44.5kB

3.3 增量导入:

  1. bin/sqoop import \
  2. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  3. --username root \
  4. --password 123456 \
  5. --table my_user \
  6. --target-dir /db_0521/ \
  7. -m 1 \
  8. --fields-terminated-by '\t' \
  9. --direct \
  10. --check-column id \
  11. --incremental append \
  12. --last-value 4

image_1aj9hltd61cet4171itg1s3ui4q13.png-41kB
image_1aj9hmft350t1kg51q0r17ef1a6c1g.png-51.6kB

3.4 从mysql 导入hive 当中:

  1. bin/sqoop import \
  2. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  3. --username root \
  4. --password 123456 \
  5. --table my_user \
  6. --delete-target-dir \
  7. --hive-import \
  8. --hive-database yangyang \
  9. --hive-table mysql2hive \
  10. --fields-terminated-by '\t'

image_1aj9i4cv3n781k5onod17o11u819.png-85.9kB
image_1aj9i590o9rdf0h1hkk8kclmam.png-53.3kB
image_1aj9i81lo1orc17eb1l1o1sf6ld413.png-14.2kB

3.5 从hdfs 当中导出mysql 当中:

  1. 新建一张空表:
  2. create table hdfs2mysql like my_user;
  3. 导出命令
  4. bin/sqoop export \
  5. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  6. --username root \
  7. --password 123456 \
  8. --table hdfs2mysql \
  9. --export-dir /user/hive/warehouse/yangyang.db/mysql2hive \
  10. --input-fields-terminated-by '\t'

image_1ak30340f1el07mkqjgp4q1ef19.png-104.7kB
image_1ak3042scfps1kc118q19ch1tpnm.png-49.7kB

  1. hive 当中导出到mysql 当中:
  2. 注意:其实就是从HDFS导入到RDBMS
  1. 新建一张空表:
  2. create table hive2mysql like my_user;
  3. 导出命令:
  4. bin/sqoop export \
  5. --connect jdbc:mysql://namenode01.hadoop.com:3306/yangyang \
  6. --username root \
  7. --password 123456 \
  8. --table hive2mysql \
  9. --export-dir /user/hive/warehouse/yangyang.db/mysql2hive \
  10. --input-fields-terminated-by '\t'

image_1ak318seitg057fu99ir01h4k1t.png-74.3kB
image_1ak319dco1umg7h8ahg13qqg272a.png-53.5kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注