热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

最近在做用户刷赞排除逻辑的时候,需要结合nginx的access.log日志和Mysql中的部分记录联合查询才能做到,之前的nginx日志一直存放在hadoop中,mysql的数据则没有导入到hadoop中去过,要搞定这事还得将Mysql中的一些表导入到HDFS中去才成。虽说Sqoop的大名早

最近在做用户刷赞排除逻辑的时候,需要结合nginx的access.log日志和Mysql中的部分记录联合查询才能做到,之前的nginx日志一直存放在hadoop中,mysql的数据则没有导入到hadoop中去过,要搞定这事还得将Mysql中的一些表导入到HDFS中去才成。虽说Sqoop的大名早

最近在做用户刷赞排除逻辑的时候,需要结合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的经历,期间也不是一帆风顺的!


推荐阅读
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • Zookeeper为分布式环境提供灵活的协调基础架构。ZooKeeper框架支持许多当今最好的工业应用程序。我们将在本章中讨论ZooKeeper的一些最显着的应用。雅虎ZooKee ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
author-avatar
五月妖精23
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有