zoukankan      html  css  js  c++  java
  • 【大数据技术】Sqoop

     1.Sqoop是什么

    Sqoop:SQL-to-Hadoop,传统数据库与Hadoop间数据同步工具。(MySQL、Oracle <==> HDFS、HBase、Hive)

    Sqoop 的核心设计思想是利用 MapReduce 分布式批处理,加快了数据传输速度,保证了容错性。也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的。

    2.Sqoop1和Sqoop2两个版本
    这两个版本是完全不兼容的,其具体的版本号区别为1.4.x为sqoop1(最高版本1.4.6),1.99x为sqoop2。sqoop1和sqoop2在架构和用法上已经完全不同。

    (1)sqoop2优势:

    在架构上,sqoop2引入了sqoop server(具体服务器为tomcat),对connector实现了集中的管理。访问方式也变得多样化了,其可以通过REST API、JAVA API、WEB UI以及CLI控制台方式进行访问。

     安全性能方面也有一定的改善,sqoop1需要显示指定数据库的用户名和密码。sqoop2中,如果是通过CLI方式访问的话,会有一个交互过程界面,你输入的密码信息不被看到。
    (2) sqoop2缺点:

     sqoop2的部署相比于sqoop1复杂的多。

    sqoop2不兼容sqoop1,sqoop1中的import和export脚本实现的功能用JAVA API去重新编写。

     
    3.Sqoop原理

    (1)sqoop import原理:
            从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝。

    • 在导入前,Sqoop使用JDBC来检查将要导入的数据表。
    • Sqoop检索出表中所有的列以及列的SQL数据类型。
    • 把这些SQL类型的映射到java数据类型,例如(VARCHAR、INTEGER)———>(String,Integer)。
    • 在MapReduce应用中将使用这些对应的java类型来保存字段的值。
    • Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。

    (2)sqoop export原理:
            获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中。

    • 在导出前,sqoop会根据数据库连接字符串来选择一个导出方法 ————>对于大部分系统来说,sqoop会选择JDBC。
    • Sqoop会根据目标表的定义生成一个java类。
    • 这个生成的类能够从文本中解析出记录,并能够向表中插入类型合适的值(除了能够读取ResultSet中的列)。
    • 然后启动一个MapReduce作业,从HDFS中读取源数据文件。
    • 使用生成的类解析出记录,并且执行选定的导出方法。
     
    参考文档:
  • 相关阅读:
    【转】几种Java序列化方式的实现
    【转】Java泛型方法
    【转】java序列化一定要应该注意的6个事项!
    [转]Android APK签名原理及方法
    [转]Android中内存占用的含义:(VSS,PSS,RSS,USS)
    红黑树的C语言实现
    Btree算法的C语言实现
    C++之迭代器失效总结
    tcpdump抓包工具用法说明
    setsockopt函数功能及参数详解
  • 原文地址:https://www.cnblogs.com/badboy200800/p/10006169.html
Copyright © 2011-2022 走看看