HadoopDB:混合分布式系统
2013-08-29 11:40
169 查看
HadoopDB 是一个 Mapreduce 和传统关系型数据库的结合方案,以充分利用 RDBMS 的性能和 Hadoop 的容错、分布特性。2009 年被 Yale 大学教授 Abadi 提出,继而商业化为 Hadapt,据称从 VC 那儿拉到了 10M 刀投资。
本文是对 HadoopDB 论文的总结。其中不免掺杂些自己的不成熟想法,更详细的内容,还请参见原论文 HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads
2.容错:数据分析系统(即使有故障节点也能顺利工作) 不同于 事务型的系统的容错(从故障中无损的恢复)。节点故障时,原来的查询操作不需要重启。
3.在异构型环境中运行的能力。即使所有机器硬件一样,但某些机器在某些时候可能因为软件原因、网络原因也会性能降低。分布式操作时,要防止木桶效应。
4.活的查询接口:商业化的数据分析一般建立在 SQL 查询上,UDF 等 non-SQL 也是需要的。
并行数据库
满足 1,4:利用分表的方式,扩散到多个节点。一般情况下节点最多为几十个,原因:1.每增加一个节点,失败率增加;2.并行数据库假设各个机器都是同质化的,但这往往不太可能
MapReduce
满足 2,3,4:Map - repartition - Reduce 原为非结构化数据,但也可以适用结构化数据。
2:(错误节点)动态的规划节点执行任务,将错误节点任务发放给新节点。并在本地磁盘做 checkpoint 存储。
3:(拖后腿的节点)节点间冗余的执行。执行慢的节点的任务交付给速度快的节点执行
4:Hive 的 HQL
HadoopDB
融合了之前两者,做出系统层面的改进,而不仅仅是语言和接口层面。
这三个解决方案对 4 个指标的关系如下图:
作用
hadoopTask <-通信-> Database on Node。节点上的 DB 类似于 Hadoop 中的数据源 HDFS
实现
扩展了 Hadoop 的 InputFormat
Catalog:
作用
1.链接参数如数据库位置,驱动类和证书;
2.一些元数据如数据簇中的数据集,副本的位置,数据的划分。
实现
HDFS 上的 XML。希望做成类似于 Hadoop 的 namenode。
Data Loader
作用
将数据合理划分,从 HDFS 转移到节点中的本地文件系统
实现
global hasher:分配到不同节点
local hasher:继续划分为不同 chunks
SQL to MapReduce to SQL (SMS) Planner
作用
将 HiveQL 转化为特定执行计划,在 hadoopDB 中执行。原则是尽可能的讲操作推向节点上的 RDBMS 上执行,以此提高执行效率。
实现
扩展 Hive:
1.执行查找前,用 catolog 的信息更新 Hive 的 metastore,定向到节点数据库的表
2.执行前,决定划分的键;将部分查询语句推到节点的数据库中执行。
其数据预处理代价过高:数据需要进行两次分解和一次数据库加载操作后才能使用;
将查询推向数据库层只是少数情况,大多数情况下,查询仍由Hive 完成.因为数据仓库查询往往涉及多表连接,由于连接的复杂性,难以做到在保持连接数据局部性的前提下将参与连接的多张表按照某种模式划分;
维护代价过高.不仅要维护Hadoop 系统,还要维护每个数据库节点;
目前尚不支持数据的动态划分,需要手工一次划分好
slides:
下载 slides,请猛戳这里
《HadoopDB》 —— Fenng
《架构大数据:挑战、现状与展望》 计算机学报 王珊 原文地址:http://biaobiaoqi.github.com/blog/2013/05/18/a-hybrid-system-hadoopdb/
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
本文是对 HadoopDB 论文的总结。其中不免掺杂些自己的不成熟想法,更详细的内容,还请参见原论文 HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads
背景
PB 级数据分析系统的能力要求
1.性能:节省开销(时间、资金)。2.容错:数据分析系统(即使有故障节点也能顺利工作) 不同于 事务型的系统的容错(从故障中无损的恢复)。节点故障时,原来的查询操作不需要重启。
3.在异构型环境中运行的能力。即使所有机器硬件一样,但某些机器在某些时候可能因为软件原因、网络原因也会性能降低。分布式操作时,要防止木桶效应。
4.活的查询接口:商业化的数据分析一般建立在 SQL 查询上,UDF 等 non-SQL 也是需要的。
并行数据库
满足 1,4:利用分表的方式,扩散到多个节点。一般情况下节点最多为几十个,原因:1.每增加一个节点,失败率增加;2.并行数据库假设各个机器都是同质化的,但这往往不太可能
MapReduce
满足 2,3,4:Map - repartition - Reduce 原为非结构化数据,但也可以适用结构化数据。
2:(错误节点)动态的规划节点执行任务,将错误节点任务发放给新节点。并在本地磁盘做 checkpoint 存储。
3:(拖后腿的节点)节点间冗余的执行。执行慢的节点的任务交付给速度快的节点执行
4:Hive 的 HQL
HadoopDB
融合了之前两者,做出系统层面的改进,而不仅仅是语言和接口层面。
这三个解决方案对 4 个指标的关系如下图:
架构
如图组件介绍
Databse Connector:作用
hadoopTask <-通信-> Database on Node。节点上的 DB 类似于 Hadoop 中的数据源 HDFS
实现
扩展了 Hadoop 的 InputFormat
Catalog:
作用
1.链接参数如数据库位置,驱动类和证书;
2.一些元数据如数据簇中的数据集,副本的位置,数据的划分。
实现
HDFS 上的 XML。希望做成类似于 Hadoop 的 namenode。
Data Loader
作用
将数据合理划分,从 HDFS 转移到节点中的本地文件系统
实现
global hasher:分配到不同节点
local hasher:继续划分为不同 chunks
SQL to MapReduce to SQL (SMS) Planner
作用
将 HiveQL 转化为特定执行计划,在 hadoopDB 中执行。原则是尽可能的讲操作推向节点上的 RDBMS 上执行,以此提高执行效率。
实现
扩展 Hive:
1.执行查找前,用 catolog 的信息更新 Hive 的 metastore,定向到节点数据库的表
2.执行前,决定划分的键;将部分查询语句推到节点的数据库中执行。
示例
示例参见下文的 slides总结
对 hadoopDB 的一些看法:其数据预处理代价过高:数据需要进行两次分解和一次数据库加载操作后才能使用;
将查询推向数据库层只是少数情况,大多数情况下,查询仍由Hive 完成.因为数据仓库查询往往涉及多表连接,由于连接的复杂性,难以做到在保持连接数据局部性的前提下将参与连接的多张表按照某种模式划分;
维护代价过高.不仅要维护Hadoop 系统,还要维护每个数据库节点;
目前尚不支持数据的动态划分,需要手工一次划分好
slides:
下载 slides,请猛戳这里
参考资料
HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads《HadoopDB》 —— Fenng
《架构大数据:挑战、现状与展望》 计算机学报 王珊 原文地址:http://biaobiaoqi.github.com/blog/2013/05/18/a-hybrid-system-hadoopdb/
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
相关文章推荐
- HadoopDB:混合分布式系统
- [转]关注HadoopDB,一个分布式并行数据库系统
- 大数据开发hadoop核心的分布式消息系统:Apache Kafka 你知道吗
- java hadoop分布式系统文件操作
- hadoop 伪分布式系统命令行运行java类报Exception in thread "main" java.lang.ClassNotFoundException:解决办法
- VMware12使用三台虚拟机Ubuntu16.04系统搭建hadoop-2.7.1+hbase-1.2.4(完全分布式)
- Hadoop 2.7.3 完全分布式集群系统搭建
- Ubuntu14.04集群分布式Hadoop-2.6.0系统安装
- 用虚拟机在centOS系统搭建hadoop分布式集群(updating...)
- 了解hadoop与分布式系统
- 分布式系统基础架构(Hadoop)
- Hadoop分布式集群系统添加节点
- Java架构师攻城狮之路:大数据,分布式,hadoop,java,高并发系统设计,高端培训视频,全栈开通
- Hadoop和RDBMS的混合系统
- Ubuntu系统安装+Hadoop伪分布式环境搭建+eclipse环境配置
- 从装机到hadoop完全分布式--系统配置
- Centos 6.5版本的Linux系统下关于hadoop2.4.1伪分布式的搭建
- hadoop - hadoop2.6 分布式 - 集群环境搭建 - 系统搭建和网络配置
- centos6.8系统安装 Hadoop 2.7.3伪分布式集群
- 分布式系统学习:Hadoop集群部署(1)