HadoopDB 是一个 Mapreduce 和传统关系型数据库的结合方案,以充分利用 RDBMS 的性能和 Hadoop 的容错、分布特性。2009 年被 Yale 大学教授 Abadi 提出,继而商业化为 Hadapt,据称从 VC 那儿拉到了 10M 刀投资。
本文是对 HadoopDB 论文的总结。其中不免掺杂些自己的不成熟想法,更详细的内容,还请参见原论文 HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads
满足 1,4:利用分表的方式,扩散到多个节点。一般情况下节点最多为几十个,原因:1.每增加一个节点,失败率增加;2.并行数据库假设各个机器都是同质化的,但这往往不太可能
满足 2,3,4:Map - repartition - Reduce 原为非结构化数据,但也可以适用结构化数据。
融合了之前两者,做出系统层面的改进,而不仅仅是语言和接口层面。
这三个解决方案对 4 个指标的关系如下图:
如图
作用
hadoopTask <-通信-> Database on Node。节点上的 DB 类似于 Hadoop 中的数据源 HDFS
实现
扩展了 Hadoop 的 InputFormat
作用
1.链接参数如数据库位置,驱动类和证书; 2.一些元数据如数据簇中的数据集,副本的位置,数据的划分。
实现
HDFS 上的 XML。希望做成类似于 Hadoop 的 namenode。
作用
将数据合理划分,从 HDFS 转移到节点中的本地文件系统
实现
global hasher:分配到不同节点 local hasher:继续划分为不同 chunks
作用
将 HiveQL 转化为特定执行计划,在 hadoopDB 中执行。原则是尽可能的讲操作推向节点上的 RDBMS 上执行,以此提高执行效率。
实现
扩展 Hive: 1.执行查找前,用 catolog 的信息更新 Hive 的 metastore,定向到节点数据库的表 2.执行前,决定划分的键;将部分查询语句推到节点的数据库中执行。
示例参见下文的 slides
对 hadoopDB 的一些看法:
HadoopDB:混合分布式系统,布布扣,bubuko.com
原文:http://www.cnblogs.com/zhwl/p/3655717.html