用Sqoop2在Mysql和hadoop导入导出数据

原创 2015年03月14日 09:40:25

        最近在做用户刷赞排除逻辑的时候,需要结合nginx的access.log日志和Mysql中的部分记录联合查询才能做到,之前的nginx日志一直存放在hadoop中,mysql的数据则没有导入到hadoop中去过,要搞定这事还得将Mysql中的一些表导入到HDFS中去才成。虽说Sqoop的大名早已经闻名遐迩了,但是到底没有在生产环境中试用过,这回倒是一个很好的实践机会。

        线上跑的Hadoop版本为社区版本的hadoop2.2.0,一看Sqoop2最新版本是sqoop-1.99.5-bin-hadoop200.tar.gz,但是它是依赖的hadoop2.6.0这个版本,下载下来后就心里打鼓,担心版本匹配不上,试了一把后果不其然,不行,遂下载Sqoop2的1.99.5源代码下来把依赖修改为Hadoop2.2.0,编译倒是能过,但是最终运行的时候还是在报sqlite相关的错误,一时没有解决不掉,就考虑用老的版本来试一试了,sqoop-1.99.3-bin-hadoop100.tar.gz这个版本我是试用过的,但是该版本功能过于简单了,而1.99.4这个版本的功能刚刚好满足我的要求了,就下载sqoop-1.99.4-bin-hadoop200.tar.gz 这个来试一试。

      (1)安装环境

         操作系统:Linux(centos6.5)

         JDK版本:1.7.0_45

         Hadoop版本:hadoop2.2.0

         Sqoop2版本:sqoop-1.99.4-bin-hadoop200

         hadoop安装目录:/home/hadoop/hadoop-2.2.0

         Sqoop2安装目录:/home/hadoop/sqoop-1.99.4-bin-hadoop200

         Hadoop和Sqoop都是同一个用户hadoop下面,hadoop用户的的家目录:/home/hadoop


       (2)修改Sqoop2的配置文件

          1、首先修改配置文件/home/hadoop/sqoop-1.99.4-bin-hadoop200/server/conf/sqoop.properties指定hadoop的配置文件所属路径。

          将原来的如下配置:

# Hadoop configuration directory
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/etc/hadoop/conf/
             修改为:

# Hadoop configuration directory
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/hadoop-2.2.0/etc/hadoop/

               2、修改配置文件/home/hadoop/sqoop-1.99.4-bin-hadoop200/server/conf/catalina.properties。

              这里即时把/home/hadoop/hadoop-2.2.0/share/hadoop下全部的*.jar包加入到sqoop2的类路径中去。

          将原来的如下配置:

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/usr/lib/hadoop/*.jar,/usr/lib/hadoop/lib/*.jar,/usr/lib/hadoop-hdfs/*.jar,/usr/lib/hadoop-hdfs/lib/*.jar,/usr/lib/hadoop-mapreduce/*.jar,/usr/lib/hadoop-mapreduce/lib/*.jar,/usr/lib/hadoop-yarn/*.jar,/usr/lib/hadoop-yarn/lib/*.jar

             修改为:

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/common/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/common/lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/hdfs/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/hdfs/lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/mapreduce/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/mapreduce/lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/tools/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/tools/lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/yarn/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/yarn/lib/*.jar,/home/hadoop/hadoop-2.2.0/share/hadoop/httpfs/tomcat/lib/*.jar

       (3)修改环境变量

由于sqoop2和Hadoop的用户都为hadoop,并且hadoop用户的home目录为:/home/hadoop,所以直接修改/home/hadoop/.bash_profile在文件末尾追加如下内容即可:   

export SQOOP_HOME=/home/hadoop/sqoop-1.99.4-bin-hadoop200  
export PATH=$SQOOP_HOME/bin:$PATH  
export CATALINA_HOME=$SQOOP_HOME/server  
export LOGDIR=$SQOOP_HOME/logs

  当然完成上述修改后需要在hadoop用户下执行命令来让配置即可生效:

source  /home/hadoop/.bash_profile

       (4)小试sqoop2

     至此可以来试一试sqoop2可用不可用,进入目录/home/hadoop/sqoop-1.99.4-bin-hadoop200/bin下执行下述命令体验下。

     启动sqoop2的服务:./sqoop2-server start

    进入Client的shell环境:./sqoop2-shell

    Client连接到服务端:set server --host 127.0.0.1 --port 12000 --webapp sqoop

         

        其它建立link、job可以参考:

       http://sqoop.apache.org/docs/1.99.5/CommandLineClient.html


           SQOOP2不知道何故,我死活找不到从mysql导出数据到HDFS的时候,怎么去指定字段的分隔符号,求助百度、谷歌、官网都没有用!悲剧了,所以我不得不另谋出路,虽说此时此刻可以去看看Sqoop2的源代码,看看是否有地方设置分隔符号,但是最快速的办法莫过于试用另外的版本,比如1.4.5,肯定是可以的,否则SQOOP也不能这么有名了。

          且看我试用Sqoop1.4.5的经历,期间也不是一帆风顺的!

     

  

重拾初心——Sqoop1和Sqoop2的刨析对比

Sqoop是一款开源的工具,主要用于在Hadoop和传统的数据库(MySQL、postgresql等)进行数据的传递,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres等)中的数...
  • Gamer_gyt
  • Gamer_gyt
  • 2017年02月18日 13:56
  • 8034

Sqoop2基础

安装Sqoop2通过Cloudera Manager的Add a service来安装Sqoop2 Server即可,不需要安装client。试用Sqoop不需要下载client,启动Sqoop2 s...
  • u011491148
  • u011491148
  • 2015年06月06日 09:58
  • 2235

sqoop使用中文手册

文章转载自:http://www.zihou.me/html/2014/01/28/9114.html Sqoop中文手册 8,038浏览 1条回复 子猴:Sqo...
  • myrainblues
  • myrainblues
  • 2015年02月09日 17:36
  • 15395

Sqoop2的安装与使用

Installation Sqoop ships as one binary package however it’s compound from two separate parts - clie...
  • u014729236
  • u014729236
  • 2015年07月14日 13:27
  • 8484

sqoop2简单使用

Sqoop1.99.7 1.    HDFSà MYSQL 1.       启动服务:                sqoop2-serverstart   [root@slave2 bi...
  • Eat_shopping
  • Eat_shopping
  • 2017年05月21日 16:20
  • 1147

sqoop2 调研

sqoop2 调研 日期 版本 说明 修改人员 确认人员 2015-12-16 2.0 第二版 bean bean sqoop简介sqoop 即 SQL to H...
  • robby_chan
  • robby_chan
  • 2016年02月25日 14:16
  • 1199

Java api 调用Sqoop2进行MySQL-->Hive的数据同步

1.相关jar包 2.一些需要的参数定义在message.properties中 jdbcHiveUrl=jdbc:hive2://10.1.9.91:10000 //hive地...
  • qq_30629571
  • qq_30629571
  • 2017年09月15日 17:23
  • 837

sqoop将mysql数据导入到hive指定的数据库中

本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 欢迎交流,禁止将本人博客直接复制下来,上传到百度文库等平台。我们在使用hive时,经常需要建立一些库,以防止总是...
  • qy20115549
  • qy20115549
  • 2017年01月02日 20:49
  • 4797

Sqoop2学习(二)—将MySQL数据库中数据导入到HDFS中

问题导读:         1、Sqoop客户端如何创建服务端连接?                 Sqoop的安装此处不再介绍,此处接我上一篇博文:Sqoop2学习(一)—Sqoop1.99.3介...
  • NIITYZU
  • NIITYZU
  • 2015年01月17日 18:46
  • 3235

Sqoop2 从MySQL导入数据到Hadoop HDFS

前言Apache Sqoop(TM) is a tool designed for efficiently transferring bulk data between Apache Hadoop a...
  • lusyoe
  • lusyoe
  • 2017年03月05日 21:29
  • 1811
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Sqoop2在Mysql和hadoop导入导出数据
举报原因:
原因补充:

(最多只允许输入30个字)