主页 > 知识库 > 数据库 > 数据库综合 >

分析型数据库的Hadoop 连接器

来源:TechTarget中国 作者:网络 发表于:2012-07-03 15:03  点击:
这篇文章介绍一下几个数据库的Hadoop 适配器的资料: AsterData 和 Greenplum 虽然在2008年8月期间都宣布自己是第一个在数据库层面实现MapReduce 的厂商,但是之后双方走的路线却不尽相同。 AsterData 之后走的路线还是将MapReduce层面的东西交给Hadoop 来做
这篇文章介绍一下几个数据库的Hadoop 适配器的资料:
  AsterData 和 Greenplum 虽然在2008年8月期间都宣布自己是第一个在数据库层面实现MapReduce 的厂商,但是之后双方走的路线却不尽相同。 AsterData 之后走的路线还是将MapReduce层面的东西交给Hadoop 来做,并在一年之后的2009年10月宣布跟Cloudera 合作推出了第一个Hadoop 连接器。 这个连接器主要有如下特点:
  • 双向连接:Hadoop 和 AsterData 互相能够保持数据的同步传输。
  • SQL-MapReduce:通过sql 可以直接调用后面的手写的mapreduce端代码
  • MapReduce 执行的时候会占用尽可能多的内存,尤其是保证中间结果尽量不写入到磁盘。
   Greenplum 在今年9月的时候完成了它的第一个Hadoop 适配器,也是和Cloudera 合作开发, 不过它是单向的从HDFS 往Greenplum 导数据,仍然是通过所有集群节点并行加载。 它主要利用了机器的优势装载, 本身技术上并没有优化太多, 速度还算可以。 另外一个特点是它的适配器集成了它的Chorus , 作为数据生命周期管理的一个重要特性。
  Vertica 在2009年10月与Cloudera 合作开发出了Vertica-Hadoop 集成适配器,它当时只实现了从Vertica 往Hadoop 导入数据的功能,一年之后它增强了从Hadoop 的HDFS 往Vertica 导数据的功能,从而实现了Vertica 与 Hadoop 的双向连接功能,值得一提的是,Vertica 的适配器有两个很变态的功能,一个是能从在vertica 的客户端通过sql 直接指定sql运行在hadoop 集群上, 这个跟AsterData 的SQL-MapReduce 差不多,这个过程是透明的, 他后台的适配器能自动把SQL 翻译成HiveQL 然后执行返回。 另外一个特性是它的Hadoop 连接器是直接读Vertica 的文件格式和元数据,对,数据只存储一份,不像其他的连接器实际上是数据存两份要你自己确保两份数据是同步的。 (更准确的说法应该是Vertica 里面的数据是可以配置mirror的,用来提高IO并行能力和数据高可用性,Hadoop 的HDFS 的其中1到2个复制备份是直接依赖与Vertica 文件系统的, 而不像行数据库Greenplum,AsterData 那样数据在DBMS 里面和Hadoop 里面是完全不同的备份)
  另外一个开源的基于Mysql 的列式数据库Calpont 公司的InfiniteDB 也在今年9月完成了Hadoop 与InfiniteDB 的双向对接。 它简单实现了Hadoop 里面的DBInputFormat 和DBOutouptFormat 类,这种连接应该是手工进行同步的(猜测),另外猜测数据应该也是只储存一份。
  MicroSoft 的SQL Server 前段时间也在Yahoo 分离出来的Hortonwork的帮助下发布了第一个Hadoop 适配器,同样也是从HDFS 往SQL Server 导数据。 MicroSoft 本来是由自己的MapReduce 解决方案的,还是聚集了N多数据库大牛做的,但是毕竟还是不可能像Google 那样什么东西都领先一个时代的前提下,Microsoft 也不可能跟现在的Hadoop 生态圈级别的规模抵抗。 毕竟它是希望它的SQL Server 和Azure 平台能够跟业界融合,不然你从哪找人写你自己的编程语言。
  从行数据库往Hadoop里面导数据由于本身可以自己实现Hadoop 里面的DBInputFormat 方法或者用JDBC 接口的工具比如Cloudera 的Sqoop 导入。 但是这种导入方式的效率并不高,因为它并不是所有集群节点的并行加载。
  列数据库似乎更容易实现Hadoop 的双向连接器,而且连接器并不用双方之间互相导数据,数据存一份就够了,在使用的时候, 列数据库和Hadoop 可以很容易的双方互相解析对方的文件格式, 而行数据库往往很难做到这点。
  IBM 的Netezza 也是在Cloudera 的合作下与今年6月做出的Hadoop – Netezza 连接器,没什么特别需要介绍的。这个可以从Cloudera
   Teradata 最早实现Hadoop 读HDFS 是在09年底的时候,跟Netezza 一样,是将HDFS 的文件格式解析成裸的txt 格式,然后用数据库自带的并行加载工具导入TD 里面。 一年之后同样是跟Cloudera 合作开发出Hadoop 的适配器,能够并行的将TD 的数据导入到Hadoop 里面去。 不过目前并没有公开版的TD-Hadoop 适配器。你需要购买了TD 或者Cloudera 的企业版才能找他们要。 今年7月份的的SIGMOD 大会上有一篇论文是Teradata 的: A Hadoop based distributed loading approach to parallel data warehouses 。 主要是论证怎么样在TD 和Hadoop 都有默认的复制机制之下能够并行加快数据装载速度同时又减少不必要的数据传输。 这个显然比默认的Hadoop 适配器的机制NB 很多。
  Oracle 的Hadoop 连接器最早好像是由Quest 公司做的,一个为很多数据库厂商提供周边解决工具和方案的公司,很多Oracle DBA 都可能听过Quest 公司的数据库优化工具还是做的非常优秀的。 第一款OraHive 发布于今年6月,是一个单向的从Hadoop 往Oracle 抽数据的方式,而且正入其名字所说,是由执行Hive语句来实现,而不是像其他厂商的从HDFS 读数据的方式,今年10月发布的OraOop 实现了从Oracle 往Hadoop 导数据,使用了Cloudera 公司的数据库导入工具Sqoop。 Oracle 在今年的10月4日OpenWorld大会上也发布了自己的Hadoop 集成解决方案, 不过说实话,Oracle 在数据仓库上即不是一个廉价的储存解决方案,也不是一个高性能的计算解决方案,它再怎么针扎也无法代表未来数据仓库的主流方向了。 实在是不明白它为什么没有收购Netezza,AsterData,Greenplum,Vertica 这四家非常代表未来方向的公司。
  SybaseIQ 也与本月宣布了他们的Sybase IQ 15.4 ,大概下个月之前发布,其中也提到了Hadoop 的连接器,其中包括一个JAVA 的MapReduce 接口, 一个扩展的c++。 不太清楚它是双向的还是单向的。

    有帮助
    (4)
    100%
    没帮助
    (0)
    0%