hadoop性能调优

本文详细探讨了Hadoop在处理大数据时面临的问题,包括单点故障、小文件问题、调度压力等,并提出了从操作系统调优、应用程序优化、参数调整及系统实现角度进行性能提升的多种策略。优化思路包括避免不必要的Reduce任务、使用Combiner、选择合适的Writable类型等,还涉及了Linux文件系统参数、Hadoop通用和任务特定参数的调整,以及YARN的资源管理。通过对Hadoop进行全方位的调优,可以显著提高其在大数据处理中的性能。
摘要由CSDN通过智能技术生成

一、 Hadoop概述
随着企业要处理的数据量越来越大,MapReduce思想越来越受到重视。Hadoop是MapReduce的一个开源实现,由于其良好的扩展性和容错性,已得到越来越广泛的应用。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Hadoop的架构图如下所示:

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)操作系统调优

Hadoop的运行环境,硬件配置起得至关重要的作用,硬件的参数配置对性能影响非常大,在部署Hadoop时,合理的硬件选择是一种优化思路。

(2)从应用程序角度进行优化。

由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路。

(3)对Hadoop参数进行调优。

当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路。

(4)从系统实现角度进行优化。

这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往效果明显。

 

二、 运行环境
原则一: 主节点可靠性要好于从节点。
原则二:多路多核,高频率cpu、大内存。
比如,NameNode节点中100万文件的元数据要消耗800M内存,内存决定了集群保存文件数的总量,ResourceManager同时运行的作业会消耗一定的内存。

  DataNode的内存需要根据cpu的虚拟核数(vcore) 进行配比,CPU的vcore数计算公式为=cpu个数 * 单cpu核数* HT(超线程)

内存容量大小 = vcore数 * 2GB(至少2GB)

原则三: 根据数据量确定集群规模
  一天增加10GB, 365天,原数据1TB,replacation=3, 1.5个mapreduce 计算完保存的数据,规划容量

  (1TB + 10GB*365)*3*1.5 =20.53TB

如果一台datanode的存储空间为2TB,21/2=11,总节点为 = 11+2 =13

还要考虑作业并不是均匀分布的, 有可能会倾斜到某一个时间段,需要预留资源。

原则四: 不要让网路I/O 成为瓶颈
hadoop 作业通常是 I/O密集型而非计算密集型, 瓶颈通常集中出现在I/O上, 计算能力可以通过增加新节点进行线性扩展,要注意网络设别处理能力。

三、 操作系统调优
(1) 避免

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值