基于分布式数据库的存储和hadoop的分布式计算的分布式sql计算方法

阅读全文 http://click.aliyun.com/m/23098/
1.   目录
2.      目录

3.      背景和设计思想

4.      架构

没有代理节点

有代理节点

模块说明

两种架构的区别

5.      应用架构

6.      基本概念说明

7.      增删改操作

8.      查询操作

阶段树

阶段

查询步骤

9.      例子

均衡策略

查询

9..1       排序

9..2       分组聚合

9..3       连接

9..4       子查询

10.             与已有系统的区别和优点

11.             应用场景




3.   背景和设计思想


为了解决分布式数据库下,复杂的sql(如全局性的排序、分组、join、子查询,特别是非均衡字段的这些逻辑操作)难以实现的问题;在有了一些分布式数据库和hadoop实际应用经验的基础上,对比两者的优点和不足,加上自己的一些提炼和思考,设计了一套综合两者的系统,利用两者的优点,补充两者的不足,具体的说,使用数据库水平分割的思想实现数据存储,使用mapreduce的思想实现sql计算。



这里的数据库水平分割的意思是只分库不分表,对于不同数量级别的表,分库的数量可以不一样,例如1亿的数据量分10个分库,10亿的分50个分库。对于使用mapreduce的思想实现计算;对于一个需求,转换成一个或多个有依赖关系的sql,其中的每个sql分解成一个或多个mapreduce任务,每个mapreduce任务又包含mapsql、洗牌(shuffle)、reducesql,这个过程可以理解为类似hive,区别是连mapreduce任务中的map和reduce操作也是通过sql实现,而非hadoop中的map和reduce操作.



这是基本的mapreduce的思想,但是在hadoop的生态圈中,第一代的mapreduce将结果存储于磁盘,第二代的mapreduce根据内存使用情况将结果存储于内存或磁盘,类比一下用数据库来存储,那么mapreduce的结果就是存储在表中,而数据库的缓存机制天然支持根据内存情况决定存储在内存还是磁盘;另外,hadoop生态圈中,计算模型也并非mareduce一种,这里的mapreduce的计算思想,可以用类似spark的RDD迭代计算方式来替代;本系统还是基于mapreduce来说明的.



4.   架构
根据以上的思想,系统的架构如下:

没有代理节点
阅读全文 http://click.aliyun.com/m/23098/

猜你喜欢

转载自liangyan9966.iteye.com/blog/2379206