下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java一直都是主流的语言之一,因为大数据的人才急需导致Java相关的工作岗位再次火爆起来。而在大数据中优化是一个非常关键的课题。今天和大家一起讨论一下关于大数据优化的相关问题。 随着企业要处理的数据量越来越大,MapReduce思想越来越受到重视。Hadoop是MapReduce的一个开源实现,由于其良好的扩展性和容错性,已得到越来越广泛的应用。Hadoop作为一个基础数据处理平台,虽然其应用价值已得到大家认可,但仍存在很多问题,以下是主要几个: (1)Namenode/jobtracker单点故障。
2、 Hadoop采用的是master/slaves架构,该架构管理起来比较简单,但存在致命的单点故障和空间容量不足等缺点,这已经严重影响了Hadoop的可扩展性。 (2)HDFS小文件问题。在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode需要2G空间。如果存储1亿个文件,则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。 (3)job
3、tracker同时进行监控和调度,负载过大。为了解决该问题,yahoo已经开始着手设计下一代Hadoop MapReduce(见参考资料1)。他们的主要思路是将监控和调度分离,独立出一个专门的组件进行监控,而jobtracker只负责总体调度,至于局部调度,交给作业所在的client。 (4)数据处理性能。 很多实验表明,其处理性能有很大的提升空间。Hadoop类似于数据库,可能需要专门的优化工程师根据实际的应用需要对Hadoop进行调优,有人称之为“Hadoop Performance Optimization” (HPO)。
4、; 为了提高其数据性能,很多人开始优化Hadoop。总结看来,对于Hadoop,当前主要有几个优化思路: (1) 从应用程序角度进行优化。由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路。 (2) 对Hadoop参数进行调优。当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路。 (3)
5、从系统实现角度进行优化。这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往效果明显。 以上三种思路出发点均是提高hadoop应用程序的效率。实际上,随着社会的发展,绿色环保观念也越来越多地融入了企业,因而很多人开始研究Green Hadoop,即怎样让Hadoop完成相应数据处理任务的同时,使用最少的能源. 当前学术界的一些优化思路,有人试图从Hadoop自动配置角度对Hadoop进行优化,但更多的是从系统实现角度进
6、行优化,概括其优化点和实验效果如下: (1)从参数自动调优角度对Hadoop进行优化,给出了一种Hadoop优化的新思路,即怎样对其190多个配置参数进行自动调整,使应用程序执行效率最高。 (2) 提出prefetching和preshuffling机制,在不同负载不同规模集群下测试,效率提升了约73%。 (3) 影响Hadoop效率的五个因素,并通过提出相应的解决方案,使Hadoop效率提高了2.53.5倍。
7、 (4) 为Hadoop提供了一种索引机制 Trojan Index,同时提出了一种高效的join算法 Trojan Join,实验表明,效率比Hadoop和HadoopDB高很多。 除了学术界的优化,工业界也在不断进行优化以适应自己公司的产品需要,主要有: (1)Baidu公司。baidu对Hadoop中关键组件使用C+进行了重写(包括map, shuffler和reducer等),经他们内部测试(5 nodes,40GB data),效率提升了约20%.
8、 (2)淘宝。淘宝针对自己集群特点(作业小,slot多,作业之间有依赖,集群共享,有些作业有时效性),对jobtracker和namenode进行了优化,据其官方博客称,其jobtracker有较大性能提升,且namenode吞吐量提升了8+倍。但其具体优化方法,未公开。从应用程序角度进行优化 (1) 避免不必要的reduce任务如果要处理的数据是排序且已经分区的,或者对于一份数据, 需要多次处理, 可以先排序分区;然后自定义InputSplit, 将单个分区作为单个mapred的输入;在map中处理数据, Red
9、ucer设置为空。 这样, 既重用了已有的 “排序”, 也避免了多余的reduce任务。 (2)外部文件引入有些应用程序要使用外部文件,如字典,配置文件等,这些文件需要在所有task之间共享,可以放到分布式缓存DistributedCache中(或直接采用-files选项,机制相同)。更多的这方面的优化方法,还需要在实践中不断积累。 (3) 为job添加一个Combiner为job添加一个combiner可以大大减少shuffle阶段从map task拷贝给
10、远程reduce task的数据量。一般而言,combiner与reducer相同。 (4) 根据处理数据特征使用最适合和简洁的Writable类型Text对象使用起来很方便,但它在由数值转换到文本或是由UTF8字符串转换到文本时都是低效的,且会消耗大量的CPU时间。当处理那些非文本的数据时,可以使用二进制的Writable类型,如IntWritable, FloatWritable等。二进制writable好处:避免文件转换的消耗;使map task中间结果占用更少的空间。 (5) 重用Writabl
11、e类型很多MapReduce用户常犯的一个错误是,在一个map/reduce方法中为每个输出都创建Writable对象。例如,你的Wordcout mapper方法可能这样写:public void map(.) for (String word : words) output.collect(new Text(word), new IntWritable(1); 这样会导致程序分配出成千上万个短周期的对象。Java垃圾收集器就要为此做很多的工作。更有效的写法是:class My
12、Mapper Text wordText = new Text(); IntWritable one = new IntWritable(1); public void map(.) for (String word: words) wordText.set(word); output.collect(wordText, one); (6) 使用StringBuffer而不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度精密注塑设备转让合同模板范本4篇
- 2025年环保材料产品研发设计委托合同模板4篇
- 2025年度农机作业租赁远程监控服务合同4篇
- 二零二五年度大型体育场馆运营与管理分包合同范本4篇
- 买卖合同书范文(2024版)
- 个人固定资产转让协议
- 2024项目部安全培训考试题含完整答案【各地真题】
- 2024年企业主要负责人安全培训考试题附答案
- 2022-2027年中国婴幼儿营养品行业市场调研及投资战略规划建议报告
- 2023-2024年项目部安全培训考试题答案达标题
- 2024年资格考试-对外汉语教师资格证笔试参考题库含答案
- 软件研发安全管理制度
- 三位数除以两位数-竖式运算300题
- 寺院消防安全培训课件
- 比摩阻-管径-流量计算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 五年级数学应用题100道
- 西方经济学(第二版)完整整套课件(马工程)
- 高三开学收心班会课件
- GB/T 33688-2017选煤磁选设备工艺效果评定方法
- 科技计划项目申报培训
评论
0/150
提交评论