美文网首页
Hadoop学习笔记(4)-Sqoop

Hadoop学习笔记(4)-Sqoop

作者: 丸蛋蟹 | 来源:发表于2017-03-22 10:36 被阅读318次

    自行整理, 学习用途, 侵知删歉

    一. 定义

    Sqoop是SQL-to-Hadoop数据库导入工具, 从RDBMSs(Relational Database Management Systems) 双向到HDFS.

    支持系统:
    Hive Avro HBase Accumulo
    使用JDBC连接到RDBMSs.

    特点

    • 可导入单个或者所有数据库中的表格
    • 可以通过WHERE指定导入的行 列
    • 可以提供任意的SELECT语句
    • 可以自动生成一个Hive表格, 根据输入的数据
    • 可以支持增长性的数据导入
    • 可以将HDFS导出到其他数据库
    • 支持文本文件(--as-textfile)、avro(--as-avrodatafile)、SequenceFiles(--as-sequencefile)。

    二.工作原理

    Sqoop检查每一个table并且自动生成一个Java class来导入数据到HDFS
    Sqoop会产生和运行一个Map-only的MapReduce job来导入数据

    默认会有4个Mapper连接到RDBMS, 每一个导入1/4数据

    Sqoop Connectors
    自定义Sqoop connectors提供更高速的访问;
    目前支持Netezza, Teradata, Oracle Database

    三.使用示例

    • list all databases
    sqoop list- databases \
    --username fred -P \
    --connect jdbc:mysql://dbserver.example.com/
    
    • list all tables in the User database
    sqoop list-tables \
    --username haixin -P \
    --connect jdbc:mysql://dbserver.example.com/User
    
    • import all tables in the User database
    sqoop import-all-tables \
    --username haixin \
    --password haixin \
    --connect jdbc:mysql://dbserver.example.com/User
    
    • import a table named "movielens" to HDFS as a new table "movie"
     sqoop import \ 
    --connect jdbc:mysql://localhost/movielens \ 
    --table movie
    --fields-terminated-by '\t' \  #这个option是用tab符分隔HDFS文件, 在Hive和Pig里有用处
    --username training --password training
    

    然后在$ hadiio fs -ls movie可以看到新增的文件

    四. Sqoop2

    新版本的Sqoop可以在机器上以服务运行

    sqoop和sqoop2的区别:

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

    当HDFS有数据写入时, NameNode会把文件标记为存在, 但是size = 0
    当每一份block写入后, 其他的clients会看到block
    为了避免多人同时访问同一份数据, 最好是先将数据导入到一个临时目录;
    当文件完全写入后, 将其一直目标文件夹(atomic操作), 因为这个操作只需要NameNode更新一下metaData, 所以也很快;
    一些机构标准的注释方式:
    ./incoming/...
    ./for_processing/...
    ./completed/...

    • REST接口也可以访问HDFS
      WebHDFS, HttpFS

    相关文章

      网友评论

          本文标题:Hadoop学习笔记(4)-Sqoop

          本文链接:https://www.haomeiwen.com/subject/wlwwnttx.html