文章连接(VLDB‘2010)

该文章提出了对Hadoop的修改,使之能够适用于迭代计算,将原生的Hadoop中每一个job中一个map-reduce对改成多个map-reduce对,这样job就可以复用(如果不复用,每一个job完成之后都会把reduce的结果写进Hdfs文件,同时启动新的job时会从Hdfs中读文件,造成I/O压力),实现了在job内就可以控制迭代,同时由于迭代计算本身的特性(不变的数据invariant data会多次复用,而且变的数据比不变的数据要小很多),将invariant data缓存(cache)起来,进一步减少了I/O,使得迭代的效率更高。
下面架构图:

与Hadoop比较的四点改变:

1.提供了一套新的编程接口,更加适用于迭代计算;
HaLoop给迭代计算一个抽象的递归公式:

2.HaLoop的master进行job内的循环控制,直到迭代计算结束;

循环控制在Hadoop中是在job间的,因为Hadoop的一个job只能是一个map-reduce对,迭代计算需要多次map-reduce,因此需要启动多个job,而且每个job完成之后需要进行判断,而判断的时候需要从hdfs中读取reduce的结果文件,这样又要启动额外的任务,因此HaLoop将其做了修改,一个job中可以有多个map-reduce对,而且提供了判断接口,这样不需要再启动额外的任务来判断迭代是否结束,下图说明了Hadoop与HaLoop的不同:
判断结束有两种方法:
a.设置相邻两次迭代计算的差值门限(threshold)
b.设置迭代的最大次数
3.Task Scheduler也进行了修改,使得任务能够尽量满足data locality(尽量本地计算对HaLoop来说非常重要,否则Cache没有任何用处,还是得耗费网络I/O),除此之外应该让两次迭代的任务尽量使用相同的数据。
下图很清楚地说明了如果能够满足任务使用相同数据时的好处:

如图所示,从整体来看我们可以这样简化过程:输入的是(data input)Ri和L,输出的是(data output)Ri+1.

该job一共有三个map任务,三个reduce任务,分布在三个节点上,对于map任务,在n2,n3中运行,数据都是邻接表(linkage table),这是静态数据(invariant data),而R也即迭代的中间数据则在n1上运行,这是动态数据(variant data)。上一次迭代完成后,进入下一个迭代环节,如果我们依然用n2,n3节点计算L邻接表的数据,而n1计算Ri中的数据,这样我们就不需要再将n2,n3的map结果传给reduce,因为跟上次的结果是一样的,只需要将n1的计算结果传到后面。
4.slave nodes对数据进行cache并index索引,索引也以文件的形式保存在本地磁盘。

slave的cache有:

a.Reduce input cache:这样cache之后,如果上次的Map output跟这次的一样,就不用网络I/O,直接从磁盘I/O进内存。
b.Reduce output cache:用于判断迭代的终止。
c.Map input cache:如果这一次的计算是网路I/O得到的数据,则将其cache起来方便下次使用。
总结HaLoop的缺点:
1.静态数据与动态数据不能完全分离;
2.迭代的终止条件不能准确判断;
3.抽象度不够高。
来源于:http://wuyanzan60688.blog.163.com/blog/static/127776163201211553756914/

HaLoop——适用于迭代计算的Hadoop相关推荐

  1. HaLoop—适用于迭代计算的Hadoop

    对Hadoop进行修改,使之能够适用于迭代计算,将原生的Hadoop中每一个job中一个map-reduce对改成多个map-reduce对,这样job就可以复用(如果不复用,每一个job完成之后都会 ...

  2. 史上最全,100+大数据开源处理工具汇总

    本文除了一些常用的大数据工具,还总结汇总了其他大数据工具,几乎是最全的大数据工具的总结. 如果你想入门大数据,可以对他们进行简单的了解. 如果你想学习自己熟悉意外的大数据工具,可以看这篇文章. 如果你 ...

  3. 大数据分析工具(下)

    查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitH ...

  4. 大数据平台的软件有哪些?

    查询引擎 一.Phoenix 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌 ...

  5. 开源大数据处理系统/工具大全

    查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitH ...

  6. (转)一共81个,开源大数据处理工具汇总

    [思路网注] 本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考. 本文一共分为上下两部分.我们将针对大数据开源工具不同 ...

  7. [转]开源大数据处理工具汇总

    查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitH ...

  8. 大数据开源处理工具汇总

    查询引擎 一.Phoenix 贡献者:: Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于 Gi ...

  9. 100+大数据开源处理工具汇总

    本文除了一些常用的大数据工具,还总结汇总了其他大数据工具,几乎是最全的大数据工具的总结. 如果你想入门大数据,可以对他们进行简单的了解. 如果你想学习自己熟悉意外的大数据工具,可以看这篇文章. 如果你 ...

最新文章

  1. python 3.5 格式化字符串输出
  2. java项目打jar包
  3. 设置IDEA显示Services窗口,方面服务启动关停等操作
  4. Leetcode每日一题:20.valid-parentheses(有效的括号)
  5. CS230+deeplearning.ai专项课程笔记及作业目录
  6. AC内WLAN漫游配置实例
  7. python中map和filter区别_Python中map、filter和reduce的使用总结
  8. ubuntu 16.04 + zabbix 3.4 + postgresql shell
  9. 大数据学习之大数据概述
  10. 一句口诀记住 OSI七层协议模型
  11. 39 What Determines the Kind of Person You Are ?是什么决定了你是哪种内型的人 ?
  12. 计算机学报在线阅读,计算机研究与发展计算机学报软件学报电子学报西安交通大学学报.doc...
  13. bpmn-js所有事件
  14. 在excel中如何筛选重复数据_Excel如何快速筛选
  15. Android应用开发实战-保活组件
  16. Qt 精美的button合集
  17. oracle.简单查询、排序、限定查询、单行函数
  18. MySQL(四)Select总结及补充聚合函数及分组过滤MD5加密
  19. LVTTL转LVDS MS90C385B/G与LVDS转LVTTL MS90C386B 功能特点及应用详解
  20. Tableau基础-第三章(快速表计算)

热门文章

  1. Apture 电容麦克风接口设置
  2. ReentrantReadWriteLock、StampedLock
  3. 中国十大无线耳机排行榜,音质好配置高的蓝牙耳机分享
  4. 适合运动的无线蓝牙耳机有哪些,运动无线蓝牙耳机推荐
  5. 有关数据库sql语句基础小白初学者可学(持续更新)
  6. java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间
  7. 真正的程序员就应该这样.
  8. 扫盲贴2.5寸移动硬盘的厚度有几种
  9. 排名方法可用于分数排名,购买量排名等排名计算
  10. DTU网关连接MQTT服务器、MQTT.fx工具测试