HADOOP性能优化和运维

Wesley13 等级 545 0 0

集群中任意一个节点都可以被用来提交认任务,虽然通常我们使用master节点提交任务。HADOOP客户端不参与计算和存储,专门用来上传下载文件和提交任务。

性能优化4大块:

HADOOP性能优化和运维

具体优化如下:

1.选择合适的硬件

低配:

CPU             双路四核2.6GHz

内存              64GB DDR3

磁盘控制器    SAS控制器

硬盘               1TB X 4

中配:

CPU            2 X 6 Core 2.9GHz/15MB cache

内存            128GB DDR3-1600 ECC

磁盘控制器   SAS 6GB/S

磁盘             12 X 3 TB LFF SATA II 7200 RPM

交换机           2 X 千兆交换机

高配:

CPU                2 X 6 Core 2.9GHz/15M cache

内存                256GB DDR3-1600 ECC 

磁盘控制器      2 X SAS 6GB/S

磁盘                 24 X 1 TB SFF Nearline/MDL SAS 7200 RPM

交换机              万兆交换机

节点解释:

NameNode:内存容量决定HDFS所能存储的文件总数,SecondaryNameNode类似。

ResourceManager:内存和需要处理的作业有关。

内存和虚拟CPU要满足一个线性比例:

虚拟CPU个数 = CPU数 X 单个CPU核数 X 单个CPU超线程数。

如:一个双核六路CPU,具有HT(超线程)技术。

则虚拟核数 2 X 6 X 2 = 24

每个CPU分配4 ~ 8GB,则服务内存 96 ~ 192GB,此外还要考虑操作系统和其他服务和预留内存。

2.操作系统调优

1.避免使用swap分区

    vm.swappiness设为0,值域为0 ~ 100

2.调整内存分配

    vm.overcommit_memory设为2。2表示内核允许分配超过所有物理内存和交换空间的50%。

3.修改net.core.somaxconn参数

     一个linux内核参数,表示socket监听backlog上限。值 >= 32768

4.增大同时打开文件描述符的上限。

5.选择合适的文件系统

     文件系统被格式化以后,要禁用文件的访问时间

6.关闭THP

     运行hadoop时,THP会引起CPU占用率偏高。

3.JVM调优

     调整  JM FLAGS 和 JVMGC ,调整后的效率大约有4%的提升。

4.hadoop参数调优(针对CDH5版本)

1.hdfs-site.xml

     dfs.block.size

    134217728

hadoop文件快大小,通常设为128M或256M

     dfs.namenode.handler.count

    40

namenode和datanode同时通信的线程数,默认10,将其设为40.

     dfs.datanode.max.xcievers

    65536

datanode上面连接数的最大值。

     dfs.namenode.balance.bandwidthPerse

    20485760

执行start-balancer.sh的带宽默认 1048576(1MB),将其增大到20MB/s

     dfs.replication

    3

hdfs文件副本数。多个任务同时读取一个文件时,读取可能会造成瓶颈,可适当增加副本数。如果修改hadoop客户端上传文件的副本数,将以hadoop客户端配置为准。

     dfs.datanode.max.transfer.threads

    4096

datanode在进行文件传输时最大线程数,通常设置为8192.

2.core-size.xml

     io.file.buffer.size

    131072

hadoop缓冲区大小,用于hadoop读写hdfs文件还有map的中间结果输出。默认4KB,增加为128KB。

3.yarn-site.xml

     yarn.nodemanager.resource.memory-mb

    8192

物理节点有多少内存加入资源池,设定该值时注意为操作系统和其他服务预留资源。

     yarn.nodemanager.resource.cpu-vcores

    8

物理节点有多少虚拟CPU加入资源池。与上一个参数构成容器资源的两个维度。

     yarn.scheduler.increment.allocation-mb

    1024

内存申请的规整话化单位。默认为1014MB.即如果申请1.5GB,则被申请为2GB。

     yarn.scheduler.increment.allocation-vcores

    1024

虚拟CPU的规整话化单位。默认为1个

     yarn.scheduler.maximum.allocation-mb

    8192

单个任务(容器)能够被申请到的最大内存。默认8GB,如果设定和

yarn.nodemanager.resource.cpu-mb一样,则表示单个任务使用的内存资源不受限制。

     yarn.scheduler.minimum.allocation-mb

    8192

单个任务(容器)能够被申请到的最小内存。默认1GB

     yarn.scheduler.maximum.allocation-vcores

    4

单个任务(容器)能够被申请到的最大CPU数目。默认8GB,如果设定和

yarn.nodemanager.resource.cpu-vcores一样,则表示单个任务使用的内存资源不受限制。

4.mapred-site.xml

     mapreduce.map.output.compress

    true

map任务的中间结果是否压缩,true压缩。

     mapreduce.job.jvm.numtasks

    -1

jvm重用设置,默认为1,表示一个jvm只能启动一个任务,-1表示可以的启动任务不受限制。

     mapreduce.map.speculative

    true

     mapreduce.reduce.speculative

    true

分别开启map和reduce任务的推测机制,推测机制可以有效地防止,因为瓶颈而导致的拖累整个作业,但也注意,推测机制会抢占系统资源。

     mapreduce.cluster.local.dir

    /data0/mapred,/data1/mapred,/data2/mapred,/data3/mapred

mapreduce中间结果的本地存储路径,将该值设置为一系列多磁盘目录有助于提高I/O效率

     mapreduce.map.memory.mb

    -1

map任务需要的内存大小。

     mapreduce.map.cpu.vcores

    1

map任务需要的虚拟CPU数目。要与mapreduce.map.memory.mb成线性比例才不至于浪费。

     mapreduce.reduce.memory.mb

    -1

reduce任务需要的内存大小,一般要大于mapreduce.map.memory.mb。

     mapreduce.reduce.cpu.vcores

    1

reduce任务向调度器需要的虚拟CPU数,默认为1,根据容器虚拟CPU数设定,可以适量增大。要与mapreduce.map.memory.mb成线性比例才不至于浪费,一般要大于mapreduce.map.cpu.vcores。

     mapreduce.reduce.shuffle.parallelcopies

    25

该参数为reduce任务从map任务复制输出的工作线程数,默认5,可适当调高,太高会引起大量数据同时在网络传输,引起I/O压力,科学的设置为4 x Lgn,n为集群容量大小。

     mapreduce.reduce.shuffle.input.buffer.percent

    0.7

shuffle中复制阶段耗费reduce任务堆比例,默认0.7,由上面的计算得出。

     mapreduce.reduce.shuffle.merge.percent

    0.66

当内存使用率超过该参数时,会触发一次合并操作,将内存中的数据刷写到磁盘

     mapreduce.job.reduce.slowstart.completedmaps

    0.05

控制reduce任务的启动时机,默认0.05,即当map任务完成数目的5%时,启动reduce。

5.HADOOP参数调优总结

(1)增大作业的并行度,如增大map任务数量

(2)保证任务执行时有足够的资源

(3)满足前两个原则的前提下,尽量为shuffle阶段提供资源

收藏
评论区

相关推荐

CPU 缓存一致性协议 MESI
CPU 高速缓存(Cache Memory) ---------------------- ### CPU 为何要有高速缓存 CPU 在摩尔定律的指导下以每 18 个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及 CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而 CPU 的高度运算需要高速的数据。为了解决这个问题,CPU 厂商在 CPU
HADOOP性能优化和运维
集群中任意一个节点都可以被用来提交认任务,虽然通常我们使用master节点提交任务。HADOOP客户端不参与计算和存储,专门用来上传下载文件和提交任务。 性能优化4大块: ![](https://static.oschina.net/uploads/space/2017/0406/111251_QSBe_192561.png) 具体优化如下: 1.选
2021年最新版大数据面试题全面总结
更新内容和时间表 -------- #### 大数据基础篇 * Part0:Java基础篇 * Part1:Java高级篇 * Part2:Java之JVM篇 * Part3:NIO和Netty篇 * Part4:分布式理论篇 #### 框架篇 * Part5:Hadoop之MapReduce * Part6:Hadoop
Apache Hadoop 2.4.1 命令参考
### 概述 所有的Hadoop命令都是通过bin/hadoop目录下的脚本所执行,在没有任何参数的情况下运行Hadoop脚本将打印该命令描述。 Usage:Hadoop  \[--config confdir\] \[COMMAND\] \[GENERIC\_OPTIONS\] \[COMMAND\_OPTIONS\] hadoop有个输入选项解析框
CDHHadoop单机安装
1.修改java_home的文件:hadoop-env.sh,yarn-env.sh,mapreduce.env.sh export JAVA_HOME=/usr/local/devtools/jdk/jdk1.7.0_45 2.修改core-site.xml <configuration>
Hadoop 2.4.0和YARN的安装过程
### **Hadoop 2.x新特性**     将Mapreduce框架升级到Apache YARN,YARN将Map reduce工作区分为两个:JobTracker组件:实现资源管理和任务JOB;计划/监视组件:划分到单独应用中。 使用MapReduce的2.0,开发人员现在可以直接Hadoop内部基于构建应用程序。Hadoop2.2也已经在微软w
Hadoop Yarn REST API未授权漏洞利用挖矿分析
Hadoop Yarn REST API未授权漏洞利用挖矿分析 =============================== **一、背景情况** 5月5日腾讯云安全曾针对攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程执行代码的安全问题进行预警,在预警的前后我们曾多次捕获相关的攻击
Hadoop 新 MapReduce 框架 Yarn 详解
Hadoop MapReduceV2(Yarn) 框架简介 原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 [Hadoop 官方简介](https://www.oschina.net/action
Hadoop 系列YARN:资源调度平台(YARN参数解读与调优)
YARN:资源调度平台 =========== YARN参数解读与调优 ----------- yarn-site.xml文件默认参数: [http://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml](https://www.oschina.
Hadoop2.7.3完全分布式集群安装过程
需要安装的软件 ------- Hadoop包含HDFS集群和YARN集群。部署Hadoop就是部署HDFS和YARN集群。 机器数量、角色 ------- 4台。 NameNode 1台、DataNode 3台 主机名 IP 角色 amaster 192.168.37.143 Name Node:9000 Resource Manag
Hadoop不能加载本地库问题解决
在执行hadoop命令或者启动dfs、yarn的时候总会出现这个警告 1 2 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 修改下log输
Hadoop压缩
一、Hadoop压缩简介 1、hadoop的3个阶段 (1)分布式文件系统HDFS (2)分布式编程框架MapReduce (3)yarn框架 2、Hadoop数据压缩 MR操作过程中进行大量数据传输。 压缩技术能够有效的减少底层存储(HDFS)读写字
Hadoop完整搭建过程(二):伪分布模式
1 伪分布模式 ======= 伪分布模式是运行在单个节点以及多个Java进程上的模式。相比起本地模式,需要进行更多配置文件的设置以及`ssh`、`YARN`相关设置。 2 `Hadoop`配置文件 ============== 修改`Hadoop`安装目录下的三个配置文件: * `etc/hadoop/core-site.xml` * `e
Hadoop技术原理总结
Hadoop技术原理总结 1、Hadoop运行原理 Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,其最核心的设计包括:MapReduce和HDFS。基于 Hadoop,你可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。 基于MapReduce计算模型编写分布式并行程序相对简单,
Hadoop框架:Yarn基本结构和运行原理
本文源码:[GitHub·点这里](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fcicadasmile%2Fbig-data-parent) || [GitEE·点这里](https://gitee.com/cicadasmile/big-data-parent