Hadoop性能调优建议

一、服务器配置

1. BIOS配置:    关闭smmu/关闭cpu预取/performance策略

2.  硬盘优化    raid0 打卡cache  /jbod     scheduler/sector_size/read_ahead_kb

3.  网卡优化    rx_buff/ring_buffer/lro/中断绑核/驱动升级

4.  内存插法:要用均衡插法,内存配对插。

5.  占用通道:先把每个通道都插满,再去插对应通道。(内存通道分布请查看机箱背板示意图)

6.  Rank数:内存条硬件参数,1R和2R的区别,得用2R的

7.  频率:内存条主频,要选择主频高的。

 8. Scheduler策略:ssd硬盘得用noop策略;机械硬盘建议deadline策略

 9. 驱动升级:用最新版本的网卡驱动程序 

二、操作系统调优

1、关闭selinux:

为了减少selinux的性能损耗,关闭selinux。vim /etc/sysconfig/selinux命令,打开selinux文件。将"SELINUX=enforcing" 改为 "SELINUX=disabled"。保存文件,重启服务器。

2、配置扩展文件描述符:

需要配置最大打开文件数为102400,否则在测试过程中可能会导致软件最大打开文件数被限制在1024,影响服务器性能。在“/etc/security/limits.conf”文件中写入以下配置。保存文件并重启。

 

*表示所有用户;hard表示严格的设定,必定不能超过这个设定的数值;soft表示警告的设定,可以超过这个设定值,但是若超过则有警告信息。

3、关闭不用的系统服务

Cpus等

4、配置网卡中断:(绑定的核专门用于处理网卡中断)

关闭irqbalance,重启服务器生效

systemctl stop irqbalance.service

systemctl disable irqbalance.service

步骤1:查询网卡中断默认在哪个numa上

cat /sys/class/net/$eth1 /device/numa_node

步骤2:查询中断号

cat /proc/interrupts | grep $eth1 | awk -F ':' '{print $1}'

步骤3:根据中断号,将每个中断各绑定在一个核上。

 echo $cpunum > /proc/irq/$irq/smp_affinity_list

步骤4:查看是否绑定成功

cat /proc/irq/$irq/smp_affinity_list

 5、关闭透明大页

查看配置:

cat /sys/kernel/mm/transparent_hugepage/enable

若显示不为nener则修改配置:

echo never > /sys/kernel/mm/transparent_hugepage/enable

三、Hadoop参数调优

1、Yarn组件在3.1.0版本合入的新特性支持,支持Yarn组件在启动Container时使能numa 感知功能,原理是读取系统物理节点上每个Numa节点的CPU核、内存容量,使用 Numactl命令指定启动container的CPU范围和mem bind范围,减少跨片访问.

Yarn-default.xml  里的

yarn.nodemanager.numa-awareness.enabled             默认值为false改成ture

yarn.nodemanager.numa-awareness.read-topology  默认值为false改成ture

2、单台服务器可启动容器数量设置:

Mapred-site.xml

根据内存计算:NUM_container(mem)=容器内存/container内存

Mapreduc.map.memory.mb

Mapreduce.reduce.memory.mb

3、根据CPU计算:

NUM_container(vcore)=容器vcore/container vcore

mapreduce.map.cpu.vcores

Mapreduce.reduce.cpu.vcores

默认的DefaultResourceCalculator只考虑内存资源,并不采用vcore相关设置。   采用DominantResourceCalculator可以精确控制设置vcore资

在Capacity-scheduler.xml

yarn.scheduler.capacity.resource-calculator  默认值为DefaultResourceCalculator  改为  DominantResourceCalculator

4、Yarn 资源设置:资源的多少会决定任务执行的性能,而不决定任务运行的成败

Yarn-default.xml   

yarn.nodemanager.resource.memory-mb   默认值为-1   改为  容器内存,一般设置物理内存75%左右

yarn.scheduler.minimum-allocation-mb    默认值为1024MB   改为  最小容器内存;最大容器数量(单节点)=容器内存/最小容器内

mapred-default.xml

mapreduce.map.java.opts     JVM最大内存,一般设置为container内存的0.75 ~ 0.8

mapreduce.reduce.java.opts    JVM最大内存,一般设置为container内存的0.75 ~ 0.8

5、HDFS的Handler数量由dfs.namenode.handler.count、dfs.namenode.service.handler.count和dfs.datanode.handler.count控制。4节点规模不需要配置的太大。

dfs.namenode.handler.count   Namenode 的RPC服务的用于监听处理来自客户端请求的线程数

Dfs.namenode.service.handler.count   Namenode的RPC服务端用于监听来自datanode和所有非客户端节点请求的线程数

Dfs.datanode.handler.count    Datanode同时可以处理来自客户端的请求线程数,当集群规模比较大或者同时跑的任务比较多,可以增加此值

6、减小副本数降低可靠性的方式提升写入的性能。减轻磁盘IO压力和网络压力。

增大客户端任务写入数据时数据包大小。dfs.client-write-packet-size设置过小,导致发送数据包的效率较低,写HDFS数据较慢,适当扩大该参数可以提升写HDFS时的效率(设置会65536的整数倍,推荐131072)

Dfs.replication    默认3副本,但可以修改客户端的副本数设置

Dfs.client-write-packet-size   客户端任务写入数据时数据包大小

6、Map buffer大小:

mapreduce.task.io.sort.mb  一般设置为容器内存的25%,加大可以减少map中间结果spill到硬盘次数。

mapreduce.map.sort.spill.percent  默认0.8 , io sort buffer 达到80%时开始spill到硬盘。

mapreduce.reduce.shuffle.parallelcopies  默认 5或者10 , 可加大

7、reduce merge 内存中merge

每个reduce task把map 结果copy过去时都要对从各个map 端来的数据做merge(合并)动作, reduce端的内存没有那么大的时候, 只能把拉过来的数据先保存到本地磁盘中然后才做merge, 如果reduce端
的内存可以设置的很大, 完全就可以做memtomem的merge动作,
mapreduce.reduce.merge.memtomem.enabled=true

当map输出文件达到mapreduce.reduce.merge.memtomem.threshold时,触发合并

8、Heartbeat

yarn.nodemanager.heartbeat.interval-ms 1000   (ms)  设置成100

yarn.resourcemanager.nodemanagers.heartbeat-interval-ms


9、读写文件的buffer设置

io.file.buffer.size

这个属性只要是读写文件就都得使用. 默认4K (4K~64K,太大了可能会变差)

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Hadoop集群搭建是一个庞大且复杂的过程,但通过CSDN上的相关教程和资源,可以使整个过程变得更加简单和容易。 首先,你需要从CSDN上搜索关于Hadoop集群搭建的教程,找到一篇适合你的文章。通常,这些教程会提供详细的步骤和说明,以及相应的代码和配置示例。 在开始之前,确保你已经安装好了Java和Hadoop,并且所有的节点都能够相互通信。 接下来,按照教程中的步骤进行以下操作: 1. 配置Hadoop集群的主节点和从节点。这涉及到在每个节点上配置hadoop-env.sh和core-site.xml文件,以便它们能够相互识别和通信。 2. 配置Hadoop分布式文件系统(HDFS)。根据教程中的指示,你需要在主节点上设置NameNode和SecondaryNameNode,并在从节点上设置DataNode。确保你正确配置了hdfs-site.xml文件,以指定数据存储和复制策略。 3. 配置Hadoop的计算框架(MapReduce)。在主节点上设置JobTracker,并在从节点上设置TaskTracker。确保你正确配置了mapred-site.xml文件,以指定任务分发和执行策略。 4. 启动Hadoop集群。按照教程中的说明启动每个节点,并通过命令行或网页界面验证集群的状态和可用性。 5. 运行Hadoop任务。通过编写和提交MapReduce程序,利用Hadoop集群来处理大规模数据。确保你在程序中正确指定输入和输出路径,并设置好Map和Reduce的逻辑。 除了以上步骤,你可能还需要考虑一些其他的配置调优,例如配置网络和安全相关的参数,以及调整Hadoop集群的性能和资源管理。 总的来说,通过CSDN上的教程和资源,你可以从头开始搭建一个Hadoop集群并开始运行MapReduce程序。在这个过程中,请确保仔细阅读并遵循教程中的步骤和说明,同时根据需要进行适当的调整和优化。 ### 回答2: Hadoop是一个开源的分布式计算框架,用于处理大规模数据的存储和计算。要搭建Hadoop集群,首先需要准备好硬件设备和操作系统环境。 硬件方面,需要至少三台计算机作为Hadoop集群的节点,其中一台作为主节点(NameNode),其他节点作为工作节点(DataNode)。每台计算机需要具备一定的硬件配置和网络连接,以支持Hadoop集群的正常运行。 操作系统环境方面,Hadoop可以运行在Linux或Windows系统上,但建议使用Linux系统,如Ubuntu或CentOS。在每台计算机上安装并配置好相应的操作系统,确保网络能够互通。 接下来,需要下载和安装Hadoop软件包。可以从Hadoop官方网站或其他开源软件镜像站点下载相应的版本。解压缩软件包并设置相关环境变量,以便在每台计算机上使用Hadoop命令。 然后,需要对Hadoop集群的配置文件进行适当的修改。需要编辑hadoop-env.sh、core-site.xml、hdfs-site.xml和mapred-site.xml等配置文件,指定正确的节点信息和相关参数。 在配置文件修改完成后,需要启动Hadoop集群的各个组件。首先启动主节点的NameNode服务,然后启动工作节点的DataNode服务。接着启动其他组件,如ResourceManager和NodeManager等。 最后,可以通过Hadoop提供的命令和Web界面,来验证和管理Hadoop集群的状态和任务。可以使用hadoop fs、hadoop jar等命令来操作Hadoop分布式文件系统和运行MapReduce任务等。 总之,搭建Hadoop集群需要准备硬件设备、安装操作系统、下载配置Hadoop软件包、修改配置文件,启动集群服务,然后进行验证和管理。通过这些步骤,就可以成功地搭建一个Hadoop集群,用于处理大规模数据的计算任务。 ### 回答3: Hadoop是一个用于处理大规模数据集的开源分布式计算框架。CSDN是一个面向IT技术人员的社区平台。下面将介绍如何搭建Hadoop集群并将其应用于CSDN。 首先,搭建Hadoop集群需要准备一定数量的计算机作为节点,这些计算机可以是物理机也可以是虚拟机。每个节点都要安装操作系统,并保证网络连通。 接下来,需要在每个节点上安装Java环境,因为Hadoop是基于Java开发的。可以选择合适版本的Java进行安装。 然后,下载Hadoop的二进制包并解压缩到每个节点的指定文件夹中。配置Hadoop的核心文件,包括hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml等。 在主节点上配置启动和停止Hadoop集群的脚本,并将其复制到所有其他节点上。通过执行启动脚本,可以启动Hadoop集群的各个组件,包括HDFS和YARN。 在搭建完Hadoop集群后,可以将其应用于CSDN。首先,将CSDN的相关数据上传到Hadoop集群的HDFS中,以便供后续的分析和处理使用。 然后,根据需求和数据特点,使用Hadoop的MapReduce或Spark等计算框架进行数据分析和挖掘,提取出有价值的信息。 最后,将分析结果存储到Hadoop集群中的HDFS或其他适当的存储介质中,以便随时查询和使用。 总的来说,搭建Hadoop集群可以为CSDN提供强大的数据处理和分析能力,帮助实现更精确的数据挖掘和决策支持,从而提升CSDN平台的价值和竞争力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值