侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

在Hadoop集群环境中为MySQL安装配置Sqoop的教程

数据库  /  管理员 发布于 6年前   180

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。


一、安装sqoop
1、下载sqoop压缩包,并解压

压缩包分别是:sqoop-1.2.0-CDH3B4.tar.gz,hadoop-0.20.2-CDH3B4.tar.gz, Mysql JDBC驱动包mysql-connector-java-5.1.10-bin.jar

[root@node1 ~]# ll
drwxr-xr-x 15 root root  4096 Feb 22 2011 hadoop-0.20.2-CDH3B4-rw-r--r-- 1 root root 724225 Sep 15 06:46 mysql-connector-java-5.1.10-bin.jardrwxr-xr-x 11 root root  4096 Feb 22 2011 sqoop-1.2.0-CDH3B4

2、将sqoop-1.2.0-CDH3B4拷贝到/home/hadoop目录下,并将Mysql JDBC驱动包和hadoop-0.20.2-CDH3B4下的hadoop-core-0.20.2-CDH3B4.jar至sqoop-1.2.0-CDH3B4/lib下,最后修改一下属主。

[root@node1 ~]# cp mysql-connector-java-5.1.10-bin.jar sqoop-1.2.0-CDH3B4/lib[root@node1 ~]# cp hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar sqoop-1.2.0-CDH3B4/lib[root@node1 ~]# chown -R hadoop:hadoop sqoop-1.2.0-CDH3B4[root@node1 ~]# mv sqoop-1.2.0-CDH3B4 /home/hadoop[root@node1 ~]# ll /home/hadoop
total 35748-rw-rw-r-- 1 hadoop hadoop  343 Sep 15 05:13 derby.logdrwxr-xr-x 13 hadoop hadoop  4096 Sep 14 16:16 hadoop-0.20.2drwxr-xr-x 9 hadoop hadoop  4096 Sep 14 20:21 hive-0.10.0-rw-r--r-- 1 hadoop hadoop 36524032 Sep 14 20:20 hive-0.10.0.tar.gzdrwxr-xr-x 8 hadoop hadoop  4096 Sep 25 2012 jdk1.7drwxr-xr-x 12 hadoop hadoop  4096 Sep 15 00:25 mahout-distribution-0.7drwxrwxr-x 5 hadoop hadoop  4096 Sep 15 05:13 metastore_db-rw-rw-r-- 1 hadoop hadoop  406 Sep 14 16:02 scp.shdrwxr-xr-x 11 hadoop hadoop  4096 Feb 22 2011 sqoop-1.2.0-CDH3B4drwxrwxr-x 3 hadoop hadoop  4096 Sep 14 16:17 tempdrwxrwxr-x 3 hadoop hadoop  4096 Sep 14 15:59 user

3、配置configure-sqoop,注释掉对于HBase和ZooKeeper的检查

[root@node1 bin]# pwd
/home/hadoop/sqoop-1.2.0-CDH3B4/bin
[root@node1 bin]# vi configure-sqoop 
#!/bin/bash## Licensed to Cloudera, Inc. under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership....# Check: If we can't find our dependencies, give up here.if [ ! -d "${HADOOP_HOME}" ]; then echo "Error: $HADOOP_HOME does not exist!" echo 'Please set $HADOOP_HOME to the root of your Hadoop installation.' exit 1fi#if [ ! -d "${HBASE_HOME}" ]; then# echo "Error: $HBASE_HOME does not exist!"# echo 'Please set $HBASE_HOME to the root of your HBase installation.'# exit 1#fi#if [ ! -d "${ZOOKEEPER_HOME}" ]; then# echo "Error: $ZOOKEEPER_HOME does not exist!"# echo 'Please set $ZOOKEEPER_HOME to the root of your ZooKeeper installation.'# exit 1#fi

4、修改/etc/profile和.bash_profile文件,添加Hadoop_Home,调整PATH

[hadoop@node1 ~]$ vi .bash_profile 
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then  . ~/.bashrcfi# User specific environment and startup programsHADOOP_HOME=/home/hadoop/hadoop-0.20.2PATH=$HADOOP_HOME/bin:$PATH:$HOME/binexport HIVE_HOME=/home/hadoop/hive-0.10.0export MAHOUT_HOME=/home/hadoop/mahout-distribution-0.7export PATH HADOOP_HOME

二、测试Sqoop

1、查看mysql中的数据库:

[hadoop@node1 bin]$ ./sqoop list-databases --connect jdbc:mysql://192.168.1.152:3306/ --username sqoop --password sqoop
13/09/15 07:17:16 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.13/09/15 07:17:17 INFO manager.MySQLManager: Executing SQL statement: SHOW DATABASESinformation_schemamysqlperformance_schemasqooptest

2、将mysql的表导入到hive中:

[hadoop@node1 bin]$ ./sqoop import --connect jdbc:mysql://192.168.1.152:3306/sqoop --username sqoop --password sqoop --table test --hive-import -m 1
13/09/15 08:15:01 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.13/09/15 08:15:01 INFO tool.BaseSqoopTool: Using Hive-specific delimiters for output. You can override13/09/15 08:15:01 INFO tool.BaseSqoopTool: delimiters with --fields-terminated-by, etc.13/09/15 08:15:01 INFO tool.CodeGenTool: Beginning code generation13/09/15 08:15:01 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `test` AS t LIMIT 113/09/15 08:15:02 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `test` AS t LIMIT 113/09/15 08:15:02 INFO orm.CompilationManager: HADOOP_HOME is /home/hadoop/hadoop-0.20.2/bin/..13/09/15 08:15:02 INFO orm.CompilationManager: Found hadoop core jar at: /home/hadoop/hadoop-0.20.2/bin/../hadoop-0.20.2-core.jar13/09/15 08:15:03 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hadoop/compile/a71936fd2bb45ea6757df22751a320e3/test.jar13/09/15 08:15:03 WARN manager.MySQLManager: It looks like you are importing from mysql.13/09/15 08:15:03 WARN manager.MySQLManager: This transfer can be faster! Use the --direct13/09/15 08:15:03 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.13/09/15 08:15:03 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)13/09/15 08:15:03 INFO mapreduce.ImportJobBase: Beginning import of test13/09/15 08:15:04 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `test` AS t LIMIT 113/09/15 08:15:05 INFO mapred.JobClient: Running job: job_201309150505_000913/09/15 08:15:06 INFO mapred.JobClient: map 0% reduce 0%13/09/15 08:15:34 INFO mapred.JobClient: map 100% reduce 0%13/09/15 08:15:36 INFO mapred.JobClient: Job complete: job_201309150505_000913/09/15 08:15:36 INFO mapred.JobClient: Counters: 513/09/15 08:15:36 INFO mapred.JobClient: Job Counters 13/09/15 08:15:36 INFO mapred.JobClient:  Launched map tasks=113/09/15 08:15:36 INFO mapred.JobClient: FileSystemCounters13/09/15 08:15:36 INFO mapred.JobClient:  HDFS_BYTES_WRITTEN=58332313/09/15 08:15:36 INFO mapred.JobClient: Map-Reduce Framework13/09/15 08:15:36 INFO mapred.JobClient:  Map input records=6553613/09/15 08:15:36 INFO mapred.JobClient:  Spilled Records=013/09/15 08:15:36 INFO mapred.JobClient:  Map output records=6553613/09/15 08:15:36 INFO mapreduce.ImportJobBase: Transferred 569.6514 KB in 32.0312 seconds (17.7842 KB/sec)13/09/15 08:15:36 INFO mapreduce.ImportJobBase: Retrieved 65536 records.13/09/15 08:15:36 INFO hive.HiveImport: Removing temporary files from import process: test/_logs13/09/15 08:15:36 INFO hive.HiveImport: Loading uploaded data into Hive13/09/15 08:15:36 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `test` AS t LIMIT 113/09/15 08:15:36 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `test` AS t LIMIT 113/09/15 08:15:41 INFO hive.HiveImport: Logging initialized using configuration in jar:file:/home/hadoop/hive-0.10.0/lib/hive-common-0.10.0.jar!/hive-log4j.properties13/09/15 08:15:41 INFO hive.HiveImport: Hive history file=/tmp/hadoop/hive_job_log_hadoop_201309150815_1877092059.txt13/09/15 08:16:10 INFO hive.HiveImport: OK13/09/15 08:16:10 INFO hive.HiveImport: Time taken: 28.791 seconds13/09/15 08:16:11 INFO hive.HiveImport: Loading data to table default.test13/09/15 08:16:12 INFO hive.HiveImport: Table default.test stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 583323, raw_data_size: 0]13/09/15 08:16:12 INFO hive.HiveImport: OK13/09/15 08:16:12 INFO hive.HiveImport: Time taken: 1.704 seconds13/09/15 08:16:12 INFO hive.HiveImport: Hive import complete.

三、Sqoop 命令

Sqoop大约有13种命令,和几种通用的参数(都支持这13种命令),这里先列出这13种命令。
接着列出Sqoop的各种通用参数,然后针对以上13个命令列出他们自己的参数。Sqoop通用参数又分Common arguments,Incremental import arguments,Output line formatting arguments,Input parsing arguments,Hive arguments,HBase arguments,Generic Hadoop command-line arguments,下面说明一下几个常用的命令:
1.Common arguments
通用参数,主要是针对关系型数据库链接的一些参数
1)列出mysql数据库中的所有数据库

sqoop list-databases Cconnect jdbc:mysql://localhost:3306/ Cusername root Cpassword 123456


2)连接mysql并列出test数据库中的表

sqoop list-tables Cconnect jdbc:mysql://localhost:3306/test Cusername root Cpassword 123456

命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码


3)将关系型数据的表结构复制到hive中,只是复制表的结构,表中的内容没有复制过去。

sqoop create-hive-table Cconnect jdbc:mysql://localhost:3306/testCtable sqoop_test Cusername root Cpassword 123456 Chive-tabletest

其中 Ctable sqoop_test为mysql中的数据库test中的表 Chive-table
test 为hive中新建的表名称


4)从关系数据库导入文件到hive中

sqoop import Cconnect jdbc:mysql://localhost:3306/zxtest Cusernameroot Cpassword 123456 Ctable sqoop_test Chive-import Chive-tables_test -m 1


5)将hive中的表数据导入到mysql中,在进行导入之前,mysql中的表
hive_test必须已经提起创建好了。

sqoop export Cconnect jdbc:mysql://localhost:3306/zxtest Cusernameroot Cpassword root Ctable hive_test Cexport-dir/user/hive/warehouse/new_test_partition/dt=2012-03-05


6)从数据库导出表的数据到HDFS上文件

./sqoop import Cconnectjdbc:mysql://10.28.168.109:3306/compression Cusername=hadoopCpassword=123456 Ctable HADOOP_USER_INFO -m 1 Ctarget-dir/user/test


7)从数据库增量导入表数据到hdfs中

./sqoop import Cconnect jdbc:mysql://10.28.168.109:3306/compressionCusername=hadoop Cpassword=123456 Ctable HADOOP_USER_INFO -m 1Ctarget-dir /user/test Ccheck-column id Cincremental appendClast-value 3


  • 上一条:
    MySQL中开启和使用通用查询日志的实例教程
    下一条:
    MySQL中查询日志与慢查询日志的基本学习教程
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客