2009年11月24日星期二

HadoopDB



分析数据库(Analytical DB)占有39.8亿/146亿(27%)的数据库市场.递增率是10.3%

Share-nothing : 无共享,指数据分布在不同的主机器,数据横向分割,相互之间是独立的.

Analytical DB vendor leader : Teradata.
Share-nothing project :
Oracle, Exadata
Microsoft, Madison

以share-nothing布署的DBMS称为并行数据库(parallel database)

HadoopDB 由三部分组成
1) PostgreSQL (or MySQL) : database layer
2) Hadoop : communication layer
3) Hive : translation layer,给SMS planner用的轻量修改版.

相关的项目:
1) Yahoo, Pig
2) Microsoft, SOCPE
3) Open source, Hive
4) Greenplum, 永亚软件
5) Aster Data

4,5加入了写MapReduce方法的支持.

期望的特性:
Performance : 低消耗,低底线也是高性能的表现
Fault Tolerance : 对于Analytics DB来说,没有要开机重运行的查询. 分析的工作负担是只读查询而且无更新. 机器越多,配置越低,失败机率越高,
运行在主机类型差异的环境的能力 : 主机差异可能性很高,并发查询的速度取决于最差的主机的性能
灵活的查询接口: UDF (user defined functions), SQL, non-SQL 都需要

背景和当前解决方案的缺点:
Gamma ; Grace parallel DBMS : Fault Tolerance, 差异环境的运行能力不行.
MapReduce: Performace不行

HadoopDB:
组件:
1) Data Connector : 连接MySQL和PostgreSQL,并做为Hadoop中InputFormat的实现. 是DBMS与TaskTracker之间的接口
2) Catalog : DB的元信息,如连接参数,数据集的分布,副本的位置,分区等等. 当前是以XML文件形式保存在HDFS上,以后想以独立服务的形式提供.
3) DataLoader : 装载时通过一个指定的分区键重分区数据,将单点的数据分为小的多块分区或块(chunk),及以批量的装载多个单点的数据库以块的形式, 分为两个,Global Hasher和LocalHasher
GlobalHasher从存在HDFS上原文件读出数据,并分区成和Cluster结点一样多的块,(估计)还保存在HDFS上
LocalHasher从HDFS上读出一个分区,并切分成更小的块(有最大块大小的设置,推荐1G)保存在本地的数据库中.
两个Hasher用的相同的hash方法,它的不同之处在于确保每个块有相同的大小.
4) SQL到MapReduce,再到SQL (简称SMS planner)
Hive将一个SQL查询(HiveQL)变为多个operator,以有向无环图的形式组织,分别交由MapReduce的两个阶段执行.Hive中有简单的优化器来优化operator.
SMS planner采用相同的方式, 但在Map阶段,直接对本地数据库(本地的Chunk)进行SQL的查询,这是因为每个Slave(TaskTracker)都有安装的数据库,对Reducer来说还要分成多个operator,(这应该是采用了Hive的技术).
对于SMS planner来说,针对不同类型的分区有两种情况,一是分区时已保证相同的主键被分到了一个TaskTracker, 这时候只要一个Map的操作就能完成,二是分区时不能保证结果集的主键分到同一个TraskTracker, 这时候要Map和Reduce两个阶段一起工作.

HadoopDB安装布署:
1)Java 1.6
2)Hadoop 0.19.1
3)安装DBMS在每个slave结点上.










没有评论:

发表评论