1.什么是sqoop

clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具


2.版本及其区别

现在分为sqoop1和sqoop2

1)架构图(sqoop1和hadoop2完全不兼容)

  

  

  2)优缺点:

  sqoop1的架构,仅仅使用一个sqoop客户端,sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。 
  sqoop1优点架构部署简单 
  sqoop1的缺点命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,安装需要root权限,connector必须符合JDBC模型 
  sqoop2的优点多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。 
  sqoop2的缺点,架构稍复杂,配置部署更繁琐。


sqoop服务器端存在着个connector,每个connector既可以充当FORM也可以充当TO,由connector组成link,再由FROM link和TO link组成一个JOB

sqoop的底层实现是MR

sqoop客户端有shell、rest API和java APIs三种方式。rest API是基于TOMCAT服务器的。

三个组件的唯一标示符是 ID。


3.编译

  sqoop2虽然部署繁琐了,但是必须是趋势。

  官网上提供了binary包和源码包,

  

  (我比较疑惑的是binary包中有pom.xml,也就是说可以编译,当然编译出来的就是这样一个binary;源码包不挂src字样)

  下载sqoop-1.99.4.tar.gz,以及依赖的maven等。在README.txt中有编译指示:mvn package -Pbinary -Dhadoop.profile=100;

  sqoop2已经对hadoop的版本支持的很好,支持hadoop1和hadoop2,不过编译的时候要指定,所以命令应该为:

  mvn package -Pbinary -Dhadoop.profile=200 -DskipTests(我习惯性的跳过测试阶段)

  1.99.4已经没有了1.99.3中maven插件版本的bug,不过要更改JDK,使它和自己环境的JDK版本一致;

  在包中的pom.xml中,默认是1.6,我的环境中JDK是1.7,则改为1.7

  

  在编译的过程中总是卡在一个生成tomcat包中的地方

  

  始终过不去,更改网络不行,而且本身这个链接就可以连接到,所以应该一个BUG或者自己的某些原因

  我的解决办法是自己下载对应版本然后手动改名称后放到dist/target包下面就可以了

  


4.安装  

  安装还是比较简单的,而且docs中已经给了官方步骤以及要求(最大的要求就是HADOOP)

  1).下载解压

  ... ...

  2).修改安装目录下的server/conf中的sqoop.properties,在132行把hadoop配置文件路径替换成自己的

  

  3).修改安装目录下的server/conf中的catalina.properties,把属性common.loader值修改成自己的目录

  (我把sqoop目录下中server/lib/的jar包也包含进去了,官网没让包含,但是不包含后面会出问题)

  4).把JDBC的驱动拷到${SQOOP_HOME}/lib/目录下(默认没有lib文件夹,自己创建,官网说了)

  

  5).把sqoop加入环境变量

  ... ...

  6).启动:sqoop2-server start
     停止:sqoop2-server stop

  (默认sqoop中bin目录下的脚步无执行权限的,要先给权限。官网也没说-_-!)

  

  

  7).进入shell:sqoop2 shell

  

  8).测试

   

  

  9).实例

  HDFS上建立文件,MySQL中建表

  

  

  建立Link

  

  

  建立 job

  

  执行 job

  

  过一会儿就可以查看结果了,可以使用 status job -j 1 来查看进度

  

  

  结果:

  

  

  


自己在编译的时候总是卡在生成tomcat的步骤上,浪费了不少时间,不过也带了一些好处,就是让我把doc一个单词一个单词的看完了,颇有收获

不过这个doc的缺点是没有给出比如利用sqoop在MySQL和hive之间传递数据的帮助文档和实例。没有这些实例就需要自己去摸索和百度谷歌了。

还有一点就是Apache的老毛病,doc的更新慢,也可以说是doc有错,而且不止一处,比如:

这是给出的更新Link的官方文档里面的解释,但实际中:

缩写好像在1.99.3中是 -x,但是1.99.4是 -l 。


MD,其实我最初的目的是把hive中的数据通过sqoop导出到mysql中,供查询使用,看了好几遍API以及看遍了亲爱的百度的文章,都没有能实现目的的方法

只有Google的时候才看到老外遇到同样的问题,认同了心里面不想认同的事实:sqoop2只支持传统数据库到HDFS之间的传输。没有hive和hbase!!

现在也明白了为什么sqoop在Apache官网上同时存在1.4.5和1.99.4两个版本的下载和文档。

看到 not feature complete ,想哭的心都有了。

采纳的答案是:

看来问题老外采纳了换回sqoop1的方案。不过使用sqoop2仍有方法

不过可以看到,是 less efficient 的,总归可以实现。

而 hive 将数据导出的方法有三种:http://blog.csdn.net/fuyangchang/article/details/5301839

分别是导出到另一张表中,导出到本地系统,导出到HDFS。对,到HDFS上中转一下... ...

导出到HDFS:
  hive> insert overwrite directory '/admln/sqoop2'
        > select * from test;

还有一个值得注意的知识点是:JDBC链接的是数据库中的表;HDFS是基于目录的。



sqoop1.99.4安装与简介的更多相关文章

  1. Hadoop2.2.0环境下Sqoop1.99.3安装

    本文转载自http://blog.csdn.net/liuwenbo0920/article/details/40504045 1.安装准备工作: 已经装好的hadoop环境是hadoop 2.2.0 ...

  2. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令

    一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...

  3. hadoop 2.6.0上安装sqoop-1.99.6-bin-hadoop200

    第一步:下载sqoop-1.99.6-bin-hadoop200.tar.gz  地址:http://www.eu.apache.org/dist/sqoop/1.99.6/ 第二步:将下载好的sqo ...

  4. Sqoop 1.99.4 安装

    1.安装准备工作:已经装好的 hadoop 环境是 hadoop-2.5.1 64位下载的sqoop安装包(注意是hadoop200)http://www.us.apache.org/dist/sqo ...

  5. sqoop1.9.7安装和使用

    安装1.下载sqoop1.9.7.地址: http://www.apache.org/dyn/closer.lua/sqoop/1.99.72.解压sqoop ,并配置环境变量 ~/.bash_pro ...

  6. Sqoop 1.99.6 安装和使用

        安装   1.安装准备工作:   下载的sqoop安装包 http://mirrors.hust.edu.cn/apache/sqoop/1.99.6/sqoop-1.99.6.tar.gz ...

  7. [sqoop1.99.7] sqoop实例——数据ETL

    一.创建一个mysql的link MySQL链接使用的是JDBC,必须有对应的驱动文件jar,还得有对应的访问权限,请确保能在server端访问MySQL.确保mysql的jar包已经导入到${SQO ...

  8. InfluxDB学习之InfluxDB的安装和简介

    最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...

  9. sqoop1.99.4 JAVA API操作

    貌似天国还没有介绍1.99.4的java操作代码的,自己吃一次螃蟹吧 如果你是MAVEN项目 <dependency> <groupId>org.apache.sqoop< ...

随机推荐

  1. 基于Storm 分布式BP神经网络,将神经网络做成实时分布式架构

    将神经网络做成实时分布式架构: Storm 分布式BP神经网络:    http://bbs.csdn.net/topics/390717623 流式大数据处理的三种框架:Storm,Spark和Sa ...

  2. samba服务设置,Linux系统和Windows文件共享

    samba是一个工具套件,在Unix上实现SMB(Server Message Block)协议,或者称之为NETBIOS/LanManager协议.SMB协议通常是被windows系列用来实现磁盘和 ...

  3. C++11空指针

    [C++11空指针] 早在 1972 年,C语言诞生的初期,常数 0 带有常数及空指针的双重身分. C 使用 preprocessor macro NULL 表示空指针, 让 NULL 及 0 分别代 ...

  4. mysql创建用户两次授权

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'     ->     IDENTIFIED BY 'some_pass' ...

  5. 给windows 7安装文件添加USB3.0驱动

    给Air安装win7进入语言与区域选择之后,发现键盘触摸板都失灵.   原因:新款的 Macbook Air 2013 因为使用了 USB3.0 端口键盘和触摸板设备,所以在安装 Windows 7 ...

  6. android 解释dp,px,pt,sp单位

    1.dp(dip):不同设备有不同的显示效果,这个和设备硬件有关系,一般我们为了支持WVGA,HVGA和QVGA对剑使用这个,它是不依赖像素的 2.px:pixels(像素),不同设备显示效果相同,一 ...

  7. ASP.NET MVC 修改视图的默认路径(MVC2,MVC3)

    ASP.NET MVC2 修改视图的默认路径 步骤:1.编写继承自WebFormViewEngine的类,重写视图路径 2.在Application_Start()中添加语句: ViewEngines ...

  8. Combox和DropDownList控件的区别

    共同点:都是下拉框控件 不同点:Combox用在winform上,DropDownList用在网页上,且两者绑定方式略有不同 绑定数据例子如下—— 1.Combox绑定 DataTable dtBus ...

  9. 使用#pragma阻止一些warnings

    这篇博客的内容都是记的网上的.是流水账.只是记录下来以便日后之有,避免每次重新google. #pragma除了可以用来把不同功能的代码进行分隔组织外还可以用来disable一些warnings.这在 ...

  10. .NET常用类库--苏飞合集

    在线网站:http://tool.sufeinet.com/CodePreview/CodeView.aspx?action=view&file=Zip/SharpZip.cs C#基类库大全 ...