Google在2010年的时候对外公布了其使用的一个大数据交互式分析系统,名字叫Dremel。同时还发布了相关的论文,
http://research.google.com/pubs/pub36632.html。
从论文中看,Dremel有两个方面的重大创新点,
- 以面向列的结构存储记录
- 并行聚合计算
以面向列的结构存储记录
Dremel将数据集合中的每条记录中的相同属性组织称一个列。比如说,有一份数据,每条记录有三个属性,分别是F1、F2和F3,在Dremel中,所有记录的F1会被放到一起进行存储,相同的、F2和F3也会被放到一起存储。这个就是基于列的结构。
采用这种结构,如果统计或者分析的时候只用到了F1属性,那么F2和F3就不需要被加载了,这可以有效降低系统从磁盘读取数据的量,加快处理速度。
目前流行的hadoop在存储的时候,是面向行的存储结构,就算只需要行中的几个属性,整行数据也必须要被加载进来,对磁盘的消耗对比可想而知。
并行聚合计算
Dremel采用了执行树来进行具体查询语句的执行,整棵树的每一层都会将查询条件进行拆分,提交给下一层,叶子节点执行数据加载和最初的计算,然后从下往上进行聚合。并行程度是相当搞的,可以充分利用集群的计算能力。
从论文中的数据来看,Dremel在执行聚合查询方面的能力要比hadoop的map-reduce快很多,一般都在10秒以内完成。主要就是应为Dremel做了上述两个改进导致的。
分享到:
相关推荐
《What does it take to make Google work at scale?》。Google 存储、计算、调度的软件 Stack:GFS,bigtable,dremel,spanner,Map-Reduce,borg,还有和open source的对比。
它将计算任务分为Map(映射)和Reduce(归约)两个阶段,Google的MapReduce框架就是这一思想的实现。 ### 5. Load II #### 5.1 分布式文件系统 分布式文件系统是为了支持大数据存储和处理需求而设计的文件系统。...
Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、...
Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、...
- **Reduce阶段**:对Map阶段的结果进行聚合,通过用户定义的Reduce函数生成最终结果。 - **优化**:包括推测执行(猜测某些任务可能运行较慢并提前启动备份任务)、重用JVM(减少任务启动时间)等。 3. **Hadoop...
它将复杂的分布式计算简化为两个主要操作:Map(映射)和Reduce(规约)。Map阶段将输入数据分割成键值对,然后在不同的机器上并行处理;Reduce阶段则聚合Map阶段的结果,处理每个键的所有值。MapReduce框架自动处理...
- **Map阶段**:对输入数据进行处理,输出键值对。 - **Reduce阶段**:对相同键的所有值进行汇总处理。 #### 六、BigTable - **架构**:基于GFS和Chubby的分布式存储系统。 - **子表**:数据划分和负载均衡的基本...
Map阶段将数据映射到一系列键值对,Reduce阶段则聚合这些键值对的结果。 ### 2.3 分布式锁服务 Chubby Chubby是一种分布式锁服务,为分布式系统提供了一种可靠和一致性的协调机制。它为其他分布式系统提供了一个...
MapReduce的主要组件包括Map、Reduce、Combine、Partition和Group等。它的一个重要过程是shuffle,这一过程涵盖了从Map到Reduce的数据传输。 除了MapReduce,还有其他的一些分布式计算框架,比如S4、Dryad和Pregel...
- **MapReduce工作机制**:包括Map、Shuffle、Reduce阶段。 - **推测执行**:提高整体性能,当某些任务执行慢时,启动备用任务。 - **重用JVM**:优化资源利用率,避免频繁创建和销毁JVM实例。 - **IDS(Input ...
它将复杂计算任务分解为两个阶段——“Map”(映射)和“Reduce”(规约)。Map阶段将原始数据拆分成小块,由多个工作节点并行处理,而Reduce阶段则汇总和整合这些结果。MapReduce在处理海量数据时表现出了强大的...
value>对的位置本地硬盘上读取缓冲的中间数据时,它调用远程过程、从Map Worker的Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据并且把key和相关的中间结果值集合传递给用户定义的Reduce函数。...
它将复杂任务分解为简单的Map和Reduce操作,使得开发者可以轻松处理大规模数据的计算问题。 Chubby是Google内部使用的一种分布式锁服务,基于Paxos算法保证一致性。Paxos是一种解决分布式一致性问题的算法,通过多...
它通过将工作分解为映射(map)和化简(reduce)两个阶段,使得并行计算成为可能。该模型简化了在大规模集群上编写复杂数据处理任务的过程。 3. **《Pregel - A System for Large-Scale Graph Processing》**:...
ODPS特别强调了对MapReduce的支持,并且引入了类Dremel的准实时查询和类Pregel的图编程功能,使得数据分析更加高效和全面。此外,ODPS还具备多用户管理和权限控制功能,为构建企业级数据仓库提供了完整解决方案。 ...
- **MapReduce**:是Hadoop的数据处理模型,它将复杂的计算任务分解为“Map”和“Reduce”两个阶段,便于并行处理。Map阶段将数据分片处理,Reduce阶段则将结果聚合。 【Hadoop相关概念】 1. **机架感知**:Hadoop...
通过将复杂的数据处理任务分解为 Map 和 Reduce 两个阶段执行,大大降低了并行编程的难度。 4. **Bigtable: A Distributed Storage System for Structured Data**:Bigtable 是谷歌为解决结构化数据存储问题而设计的...