没有合适的资源?快使用搜索试试~ 我知道了~
Hadoop平台优化文献综述.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 95 浏览量
2022-07-06
23:11:22
上传
评论
收藏 101KB DOCX 举报
温馨提示
试读
11页
Hadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docxHadoop平台优化文献综述.docx
资源推荐
资源详情
资源评论
Hadoop 平台优化文献综述(极力推荐) [复制链接]
yiranwuqing yiranwuqing 当前离线
注册时间 2011-3-10 最后登录 2012-3-20 在线时间 88 小时阅读权限 90 积分 13835 帖子 61
主题 21 精华 0UID12322 IP 卡 狗仔卡
论坛元老
签到 163 注册时间 2011-3-10 最后登录 2012-3-20 在线时间 88 小时阅读权限 90 积分 13835
帖子 61 主题 21 精华 0UID12322 串个门 加好友 打招呼 发消息 电梯直达 1#
发表于 2011-10-6 02:44:22 |只看该作者 |倒序浏览
1.
概述
随着企业要处理的数据量越来越大,MapReduce 思想越来越受到重视。Hadoop 是 MapReduce
的一个开源实现,由于其良好的扩展性和容错性,已得到越来越广泛的应用。Hadoop 作为
一个基础数据处理平台,虽然其应用价值已得到大家认可,但仍存在很多问题,以下是主要
几个:
(1)
Namenode/jobtracker 单点故障。 Hadoop 采用的是 master/slaves 架构,该架构管
理起来比较简单,但存在致命的单点故障和空间容量不足等缺点,这已经严重影响了 Hadoop
的可扩展性。
(2)
HDFS 小文件问题。在 HDFS 中,任何 block,文件或者目录在内存中均以对象
的形式存储,每个对象约占 150byte,如果有 1000 0000 个小文件,每个文件占用一个 block,
则 namenode 需要 2G 空间。如果存储 1 亿个文件,则 namenode 需要 20G 空间。这样 namenode
内存容量严重制约了集群的扩展。
(3)
jobtracker 同时进行监控和调度,负载过大。为了解决该问题,yahoo 已经开始着
手设计下一代 Hadoop MapReduce(见参考资料 1)。他们的主要思路是将监控和调度分离,
独立出一个专门的组件进行监控,而 jobtracker 只负责总体调度,至于局部调度,交给作业
所在的 client。
(4)
数据处理性能。 很多实验表明,其处理性能有很大的提升空间。Hadoop 类似于
数据库,可能需要专门的优化工程师根据实际的应用需要对Hadoop 进行调优,有人称之为
“Hadoop Performance Optimization” (HPO)。
为了提高其数据性能,很多人开始优化Hadoop。总结看来,对于Hadoop,当前主要有几个
优化思路:
(1) 从应用程序角度进行优化。由于 mapreduce 是迭代逐行解析数据文件的,怎样在迭
代的情况下,编写高效率的应用程序,是一种优化思路。
(2) 对 Hadoop 参数进行调优。当前 hadoop 系统有 190 多个配置参数,怎样调整这些参
数,使 hadoop 作业运行尽可能的快,也是一种优化思路。
(3) 从系统实现角度进行优化。这种优化难度是最大的,它是从 hadoop 实现机制角度,
发现当前 Hadoop 设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往
效果明显。
以上三种思路出发点均是提高 hadoop 应用程序的效率。实际上,随着社会的发展,绿色环
保观念也越来越多地融入了企业,因而很多人开始研究Green Hadoop,即怎样让Hadoop 完
成相应数据处理任务的同时,使用最少的能源(见参考资料[14][15])。
本文主要介绍了当前学术界的一些优化思路,有人试图从 Hadoop 自动配置角度对 Hadoop
进行优化,但更多的是从系统实现角度进行优化,概括其优化点和实验效果如下:
(1) 论文[6]试图从参数自动调优角度对 Hadoop 进行优化,论文只给出了可能的解决方
案,并未给出实现,因而效果不可知。但它给出了一种Hadoop 优化的新思路,即怎样对其
190 多个配置参数进行自动调整,使应用程序执行效率最高。
(2) 论文[7]提出 prefetching 和 preshuffling 机制,在不同负载不同规模集群下测试,效
率提升了约 73%。
(3) 论文[8]研究了影响 Hadoop 效率的五个因素,并通过提出相应的解决方案,使 Hadoop
效率提高了 2.5~3.5 倍。
(4) 论文[9]为 Hadoop 提供了一种索引机制– Trojan Index,同时提出了一种高效的 join
算法– Trojan Join,实验表明,效率比 Hadoop 和 HadoopDB 高很多。
除了学术界的优化,工业界也在不断进行优化以适应自己公司的产品需要,主要有:
(1)Baidu 公司。baidu 对 Hadoop 中关键组件使用 C++进行了重写(包括 map, shuffler 和
reducer 等),经他们内部测试(5 nodes,40GB data),效率提升了约20%(见参考资料[4])。
(2)淘宝。淘宝针对自己集群特点(作业小,slot 多,作业之间有依赖,集群共享,有些
作业有时效性),对 jobtracker 和 namenode 进行了优化,据其官方博客称,其 jobtracker 有
较大性能提升,且 namenode 吞吐量提升了 8+倍(见参考资料[5])。但其具体优化方法,未
公开。
2.
从应用程序角度进行优化
(1) 避免不必要的 reduce 任务
如果要处理的数据是排序且已经分区的,或者对于一份数据, 需要多次处理, 可以先排序分
区;然后自定义 InputSplit, 将单个分区作为单个 mapred 的输入;在 map 中处理数据, Reducer
设置为空。
这样, 既重用了已有的 “排序”, 也避免了多余的 reduce 任务。
(2)外部文件引入
有些应用程序要使用外部文件,如字典,配置文件等,这些文件需要在所有task 之间共享,
可以放到分布式缓存 DistributedCache 中(或直接采用-files 选项,机制相同)。
更多的这方面的优化方法,还需要在实践中不断积累。
(3) 为 job 添加一个 Combiner
为 job 添加一个 combiner 可以大大减少 shuffle 阶段从 map task 拷贝给远程 reduce task 的数
据量。一般而言,combiner 与 reducer 相同。
(4) 根据处理数据特征使用最适合和简洁的 Writable 类型
Text 对象使用起来很方便,但它在由数值转换到文本或是由 UTF8 字符串转换到文本时都是
低效的,且会消耗大量的 CPU 时间。当处理那些非文本的数据时,可以使用二进制的 Writable
类型,如 IntWritable, FloatWritable 等。二进制 writable 好处:避免文件转换的消耗;使
map task 中间结果占用更少的空间。
(5) 重用 Writable 类型
很多 MapReduce 用户常犯的一个错误是,在一个 map/reduce 方法中为每个输出都创建
Writable 对象。例如,你的 Wordcout mapper方法可能这样写:
1
2
3
4
5
6
7
8
9
10
11
12
public void map(...) {
…
for (String word : words) {
output.collect(new Text(word), new IntWritable(1));
}
}
这样会导致程序分配出成千上万个短周期的对象。Java 垃圾收集器就要为此做很多的工作。
更有效的写法是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
剩余10页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8254
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功