Hadoop3教程(三十六):(生产调优篇)企业开发场景中的参数调优案例概述

这篇具有很好参考价值的文章主要介绍了Hadoop3教程(三十六):(生产调优篇)企业开发场景中的参数调优案例概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(170)企业开发场景案例

这章仅做兴趣了解即可。

需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。

需求分析:

1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster

平均每个节点运行10个 / 3台 ≈ 3个任务(4 3 3)

当然,这只是个案例演示,生产环境中一般是结合机器配置、业务等来做综合配置,肯定是不会像案例里这样对某个任务进行配置的。

下面直接贴一下教程里给出的实际调优参数的设置:

HDFS参数调优

(1)修改hadoop-env.sh,配置NameNode和DataNode占用最大内存都为1G

export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx1024m"
export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx1024m"

(2)修改hdfs-site.xml,配置心跳并发数

<!-- NameNode有一个工作线程池,默认值是10 -->
<property>
  <name>dfs.namenode.handler.count</name>
  <value>21</value>
</property>

(3)修改core-site.xml,配置垃圾回收站

<!-- 配置垃圾回收时间为60分钟 -->
<property>
  <name>fs.trash.interval</name>
  <value>60</value>
</property>

(4)分发配置

[atguigu@hadoop102 hadoop]$ xsync hadoop-env.sh hdfs-site.xml core-site.xml

MapReduce参数调优

(1)修改mapred-site.xml

<!-- 环形缓冲区大小,默认100m -->
<property>
 <name>mapreduce.task.io.sort.mb</name>
 <value>100</value>
</property>
 
<!-- 环形缓冲区溢写阈值,默认0.8 -->
<property>
 <name>mapreduce.map.sort.spill.percent</name>
 <value>0.80</value>
</property>

<!-- merge合并次数,默认10个 -->
<property>
 <name>mapreduce.task.io.sort.factor</name>
 <value>10</value>
</property>

<!-- maptask内存,默认1g; maptask堆内存大小默认和该值大小一致mapreduce.map.java.opts -->
<property>
 <name>mapreduce.map.memory.mb</name>
 <value>-1</value>
 <description>The amount of memory to request from the scheduler for each   map task. If this is not specified or is non-positive, it is inferred from mapreduce.map.java.opts and mapreduce.job.heap.memory-mb.ratio. If java-opts are also not specified, we set it to 1024.
 </description>
</property>
 
<!-- matask的CPU核数,默认1个 -->
<property>
 <name>mapreduce.map.cpu.vcores</name>
 <value>1</value>
</property>

<!-- matask异常重试次数,默认4次 -->
<property>
 <name>mapreduce.map.maxattempts</name>
 <value>4</value>
</property>

<!-- 每个Reduce去Map中拉取数据的并行数。默认值是5 -->
<property>
 <name>mapreduce.reduce.shuffle.parallelcopies</name>
 <value>5</value>
</property>

<!-- Buffer大小占Reduce可用内存的比例,默认值0.7 -->
<property>
 <name>mapreduce.reduce.shuffle.input.buffer.percent</name>
 <value>0.70</value>
</property>

<!-- Buffer中的数据达到多少比例开始写入磁盘,默认值0.66。 -->
<property>
 <name>mapreduce.reduce.shuffle.merge.percent</name>
 <value>0.66</value>
</property>

<!-- reducetask内存,默认1g;reducetask堆内存大小默认和该值大小一致mapreduce.reduce.java.opts -->
<property>
 <name>mapreduce.reduce.memory.mb</name>
 <value>-1</value>
 <description>The amount of memory to request from the scheduler for each   reduce task. If this is not specified or is non-positive, it is inferred
  from mapreduce.reduce.java.opts and mapreduce.job.heap.memory-mb.ratio.
  If java-opts are also not specified, we set it to 1024.
 </description>
</property>

<!-- reducetask的CPU核数,默认1个 -->
<property>
 <name>mapreduce.reduce.cpu.vcores</name>
 <value>2</value>
</property>

<!-- reducetask失败重试次数,默认4次 -->
<property>
 <name>mapreduce.reduce.maxattempts</name>
 <value>4</value>
</property>

<!-- 当MapTask完成的比例达到该值后才会为ReduceTask申请资源。默认是0.05 -->
<property>
 <name>mapreduce.job.reduce.slowstart.completedmaps</name>
 <value>0.05</value>
</property>

<!-- 如果程序在规定的默认10分钟内没有读到数据,将强制超时退出 -->
<property>
 <name>mapreduce.task.timeout</name>
 <value>600000</value>
</property>

(2)分发配置

[atguigu@hadoop102 hadoop]$ xsync mapred-site.xml

YARN参数调优

(1)修改yarn-site.xml配置参数如下:

<!-- 选择调度器,默认容量 -->
<property>
	<description>The class to use as the resource scheduler.</description>
	<name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

<!-- ResourceManager处理调度器请求的线程数量,默认50;如果提交的任务数大于50,可以增加该值,但是不能超过3台 * 4线程 = 12线程(去除其他应用程序实际不能超过8) -->
<property>
	<description>Number of threads to handle scheduler interface.</description>
	<name>yarn.resourcemanager.scheduler.client.thread-count</name>
	<value>8</value>
</property>

<!-- 是否让yarn自动检测硬件进行配置,默认是false,如果该节点有很多其他应用程序,建议手动配置。如果该节点没有其他应用程序,可以采用自动 -->
<property>
	<description>Enable auto-detection of node capabilities such as
	memory and CPU.
	</description>
	<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
	<value>false</value>
</property>

<!-- 是否将虚拟核数当作CPU核数,默认是false,采用物理CPU核数 -->
<property>
	<description>Flag to determine if logical processors(such as
	hyperthreads) should be counted as cores. Only applicable on Linux
	when yarn.nodemanager.resource.cpu-vcores is set to -1 and
	yarn.nodemanager.resource.detect-hardware-capabilities is true.
	</description>
	<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
	<value>false</value>
</property>

<!-- 虚拟核数和物理核数乘数,默认是1.0 -->
<property>
	<description>Multiplier to determine how to convert phyiscal cores to
	vcores. This value is used if yarn.nodemanager.resource.cpu-vcores
	is set to -1(which implies auto-calculate vcores) and
	yarn.nodemanager.resource.detect-hardware-capabilities is set to true. The	number of vcores will be calculated as	number of CPUs * multiplier.
	</description>
	<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
	<value>1.0</value>
</property>

<!-- NodeManager使用内存数,默认8G,修改为4G内存 -->
<property>
	<description>Amount of physical memory, in MB, that can be allocated 
	for containers. If set to -1 and
	yarn.nodemanager.resource.detect-hardware-capabilities is true, it is
	automatically calculated(in case of Windows and Linux).
	In other cases, the default is 8192MB.
	</description>
	<name>yarn.nodemanager.resource.memory-mb</name>
	<value>4096</value>
</property>

<!-- nodemanager的CPU核数,不按照硬件环境自动设定时默认是8个,修改为4个 -->
<property>
	<description>Number of vcores that can be allocated
	for containers. This is used by the RM scheduler when allocating
	resources for containers. This is not used to limit the number of
	CPUs used by YARN containers. If it is set to -1 and
	yarn.nodemanager.resource.detect-hardware-capabilities is true, it is
	automatically determined from the hardware in case of Windows and Linux.
	In other cases, number of vcores is 8 by default.</description>
	<name>yarn.nodemanager.resource.cpu-vcores</name>
	<value>4</value>
</property>

<!-- 容器最小内存,默认1G -->
<property>
	<description>The minimum allocation for every container request at the RM	in MBs. Memory requests lower than this will be set to the value of this	property. Additionally, a node manager that is configured to have less memory	than this value will be shut down by the resource manager.
	</description>
	<name>yarn.scheduler.minimum-allocation-mb</name>
	<value>1024</value>
</property>

<!-- 容器最大内存,默认8G,修改为2G -->
<property>
	<description>The maximum allocation for every container request at the RM	in MBs. Memory requests higher than this will throw an	InvalidResourceRequestException.
	</description>
	<name>yarn.scheduler.maximum-allocation-mb</name>
	<value>2048</value>
</property>

<!-- 容器最小CPU核数,默认1个 -->
<property>
	<description>The minimum allocation for every container request at the RM	in terms of virtual CPU cores. Requests lower than this will be set to the	value of this property. Additionally, a node manager that is configured to	have fewer virtual cores than this value will be shut down by the resource	manager.
	</description>
	<name>yarn.scheduler.minimum-allocation-vcores</name>
	<value>1</value>
</property>

<!-- 容器最大CPU核数,默认4个,修改为2个 -->
<property>
	<description>The maximum allocation for every container request at the RM	in terms of virtual CPU cores. Requests higher than this will throw an
	InvalidResourceRequestException.</description>
	<name>yarn.scheduler.maximum-allocation-vcores</name>
	<value>2</value>
</property>

<!-- 虚拟内存检查,默认打开,修改为关闭 -->
<property>
	<description>Whether virtual memory limits will be enforced for
	containers.</description>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>

<!-- 虚拟内存和物理内存设置比例,默认2.1 -->
<property>
	<description>Ratio between virtual memory to physical memory when	setting memory limits for containers. Container allocations are	expressed in terms of physical memory, and virtual memory usage	is allowed to exceed this allocation by this ratio.
	</description>
	<name>yarn.nodemanager.vmem-pmem-ratio</name>
	<value>2.1</value>
</property>

(2)分发配置

[atguigu@hadoop102 hadoop]$ xsync yarn-site.xml

执行程序

(1)重启集群

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

(2)执行WordCount程序

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

(3)观察Yarn任务执行页面

http://hadoop103:8088/cluster/apps文章来源地址https://www.toymoban.com/news/detail-720421.html

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

到了这里,关于Hadoop3教程(三十六):(生产调优篇)企业开发场景中的参数调优案例概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【hadoop3.x】一 搭建集群调优

    https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221 2.1 模板虚拟机环境准备 0)安装模板虚拟机,IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1)hadoop100 虚拟机配置要求如下(本文 Linux 系统全部以 CentOS-7.5-x86-1804 为例) (1)使用 yum 安装需要虚拟机可以正常上网,

    2024年02月07日
    浏览(49)
  • 大数据技术之Hadoop(生产调优手册)

    大数据技术之Hadoop(生产调优手册) 1)NameNode内存计算 每个文件块大概占用150byte,一台服务器128G内存为例,能存储多少文件块呢? 2)Hadoop2.x系列,配置NameNode内存 NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3g。在hadoop-env.sh文件中配置如下。 HADOOP_NAMENODE

    2024年02月09日
    浏览(45)
  • 【生产级实践】Docker部署配置Hadoop3.x + HBase2.x实现真正分布式集群环境

    网上找了很多资料,但能够实现Docker安装Hadoop3.X和Hbase2.X真正分布式集群的教程很零散,坑很多, 把经验做了整理, 避免趟坑。 1、机器环境 这里采用三台机器来部署分布式集群环境: 192.168.1.101 hadoop1 (docker管理节点) 192.168.1.102 hadoop2 192.168.1.103 hadoop3 2、下载Docker Hadoop的

    2024年02月02日
    浏览(49)
  • 【大数据之Hadoop】二十八、生产调优-HDFS集群扩容及缩容

      增加或缩减服务器,注意不允许白名单和黑名单同时出现同一个主机。   原有数据节点不能满足数据存储需求时,需要在原有集群的基础上动态增加节点,即动态增加服务器,增加服务器的同时不需要重启集群。   hadoop完全分布式集群设置了3个datanode节点,当白名

    2024年02月03日
    浏览(62)
  • 第三部分:Spark调优篇

    第一部分:Spark基础篇_奔跑者-辉的博客-CSDN博客 第一部分:Spark基础篇_奔跑者-辉的博客-CSDN博客 第三部分:Spark调优篇_奔跑者-辉的博客-CSDN博客 目录 1 常规性能调优 常规性能调优一:  最优资源配置 常规性能调优二:  RDD调优 常规性能调优三:并行度调节 常规性能调优四

    2024年02月16日
    浏览(39)
  • 【大数据基础】Hadoop3.1.3安装教程

    来源: https://dblab.xmu.edu.cn/blog/2441/ 前言:重装解决一切bug!事实上,问题中的绝大部分衍生问题都可以通过重装解决。 创建Hadoop用户 首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 : 接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码: 可为

    2024年02月09日
    浏览(66)
  • Hadoop3教程(十四):MapReduce中的排序

    排序是MR中最重要的操作之一,也是面试中可能被问到的重点。 MapTask和ReduceTask中都会对数据按照KEY来排序,主要是为了效率,排完序之后,相同key值的数据会被放在一起,更方便下一步(如Reducer())的汇总处理。 默认排序是按照 字典顺序 (字母由小到大,或者是数字由小

    2024年02月07日
    浏览(68)
  • Hadoop(01) Hadoop3.3.6安装教程,单机/伪分布式配置

    在安装 Hadoop 3.3.6 前,需要满足以下前置条件: Java Development Kit (JDK):Hadoop 是用 Java 编写的,因此需要安装并配置适当版本的 JDK。Hadoop 3.3.6 建议使用 JDK 8 或更高版本。确保正确安装 JDK,并设置 JAVA_HOME 环境变量。 SSH:Hadoop 集群中的节点需要通过 SSH 进行通信和管理。确保在

    2024年02月06日
    浏览(49)
  • Hadoop3教程(二):HDFS的定义及概述

    随着实际生产环境中的数据越来越大,在一台服务器上无法存储下所有的数据,那么就要把数据分散到多台服务器的磁盘里存放。但是像这样做跨服务器的数据管理和维护是很难的,所以就迫切需要一种方式,来协调管理多台机器上的文件,这就是分布式文件管理系统。 HD

    2024年02月07日
    浏览(45)
  • Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)

    目录 前言: 一、VMware Workstation 二、Ubuntu系统安装 新建虚拟机 三、Ubuntu系统的配置 四、更新apt 五、安装SSH、配置SSH无密码登陆  六、安装Java环境 七、安装 Hadoop3.1.3 八、Hadoop单机配置(非分布式) 九、Hadoop伪分布式配置 前言:         本篇教程由作者本人进行修改,原教

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包