前言:
现在同学们对“hadoop内存配置”都比较注重,小伙伴们都想要分析一些“hadoop内存配置”的相关资讯。那么小编在网摘上搜集了一些有关“hadoop内存配置””的相关知识,希望姐妹们能喜欢,你们快快来了解一下吧!
然后我们来,看个配置yarn 生产环境核心参数的案例
首先我们的需求就是,我们要统计1G数据中,每个单词出现的次数.
我们有3台服务器,然后每台配置4G,4核cpu,4线程.可以看到
然后就是去配置yarn的参数,按照我们实际的环境
我们先分析一下需求,可以看到,我们有1G的文件需要处理,那么
如果我们每个maptask用默认的处理128M的内容,那么需要8个MapTask 1个reducetask
1个 mrappmaster 也就是我们需要 8 +1 +1 10个容器,那么,我们有3台服务器,10个任务
那么10 / 3 = 3 个任务,也就是,我们每台服务器要运行至少3个任务..也就是3个container对吧
这个时候,我们有10个任务需要运行,我们可以这样划分:
4,3,3 这3台服务器,分别运行 4,3,3个任务
3个任务的 我们可以 其中有一个个来 运行 mrappmaster对吧,这个占用资源少.
然后至于服务器,我们可以在京东搜索一下去看看,可以看到标明了,几核几线程的...对吧,还有内存
硬盘多大
可以看到我这里,看性能CPU,打开资源监视器
可以看到我这个就是有16个核心对吧
然后还可以去京东去看看,机架就是长上面这样子的.
这个机架一般是可以防静电之类的.
然后我们去配置参数,可以看到首先去配置capacityscheduler,这个容量调度器,我们中小公司,我们用这个容量调度器就可以了.
然后我们再去看线程数的设置,可以看到,默认是50,这个是resourcesmanager来处理请求的线程数,
我们一共3台机器,每个机器4线程的,那么我们一共可以开12个线程,所以这里,默认50个线程是不合理的,那么这里我们设置成8个线程.
然后配置这个 yarn.nodemanager.resource.detect-hardware-capabilities 这个参数
这个配置是否自动检测硬件配置可以看到设置成false,默认就可以,我们要手动检测对吧.
可以看到这个配置 yarn.nodemanager.resource.count-logical-processors-as-cores
这个是否将虚拟的核数当做CPU的核数, 这里我们设置成false,因为我们每个机器的配置都一样对吧,我们说如果你的配置,比如3台机器有I5,I7,I3的,配置不一样,这个时候你就可以把
这个配置打开.把I7,虚拟成2个I5来用对吧.
让算力均衡.
然后这个,yarn.nodemanager.resource.prores-vcores-multiplier 这个,默认是1.0对吧,就是说
1台机器就当1个来用,比如你想用,2核心 4线程的 设备,但现在你有个,4核心8线程的,那么这个时候,
这个设置为2.0,那么就把这个4核心8线程的设备给虚拟出2台 2核心4线程的设备了.
然后这里,设置nodemanager的内存数,可以看到默认是8G,但是我们只有4G对吧,所以这里
改成4096,改成 yarn.nodemanager.resource.memory-mb是 4G
然后我们再看yarn.nodemanager.resource.cpu-vcores 这里 4个CPU,4个线程
虽然默认是8个,默认nodemanager使用8个核心工作,而这里我们只有4个核心,所以这里设置成4
注意这些配置都是针对单台nodemanager设置的.
可以看到nodemanager的最小内存是1G,这个是没问题的,这样就可以了.
然后 最大内存我们知道我们的机器,最大内存是4G,系统还得用一部分,这里我们设置成最大内存是
2G,不能用默认的8G对吧.
并且一个容器占用2G的话,我4G还可以用两个容器对吧.
然后最小的CPU可以看到默认是1个,这个没问题,我们有4核cpu对吧
然后最大CPU核心数,可以看到默认是4个,我们,修改为2个,因为我一共有4个核心,不能都分出去了对吧.
这个虚拟内存检测,这里默认是打开的,我们修改为关闭
为什么关闭呢?
我们来看一下
首先比如说我们实际上有4G的,服务器内存,这个是真实的内存,这个是不可以设置的,
然后一般,可以看到虚拟内存是屋里内存的2.1倍, 虚拟内存就是8.4G,但是从centos7开始,
这个对虚拟内存的使用,java虚拟机和Linux系统就不太友善了,各自为政.
这个时候Linux系统,为java8虚拟机开辟了一块虚拟内存,比如5个G,但是java8虚拟机他不用,
他自己又弄了一块..4G,但是真正java8虚拟机使用的时候,根本用不到4G...所以就造成了
Linux系统给他开辟的这5G的内存,就浪费了,所以在centos7和java8之间,我们一般关闭这个配置.
然后我们要去配置就可以了
但需要注意,因为这里我的,3台机器的配置都是一样的...所以我直接设置成一样的配置就可以了
,但是如果你的机器,比如一台是64G,一台是128G,一台是16G内存,那么这个时候,你就不能
这样配置了,你需要,单独配置每台nodemanager对吧.
首先我们进入 cd /opt/module/hadoop-3.1.3/文件夹
然后
然后我们进入 cd /etc/hadoop/
然后
执行 vim yarn-site.xml
然后
走到文件的末尾
然后把之前的配置,全部都粘贴过来
可以看到然后就可以,退出保存了,然后再把配置,分发到其他的服务器上去
执行 xsync yarn-site.xml 这样分发这个配置文件
好分发完了以后,我们去开启集群
myhadoop.sh start 去开启集群
好启动完了,我们去看看
这里jpsall 可以看到,没问题对吧
有hadoop102 到104 这3台都运行了
然后我们去hadoop集群管理后台去看一下:
可以看到对应的内存,已经变成12G了对吧,因为我们3台每台4G,然后
Minimum Allocation 最小内存是1024,最大内存是Maximum Allocation 是2048
好启动好以后,我们去执行wordcount程序
在 /opt/module/hadoop-3.1.3 这个目录下,然后执行
hadoop jar share/hadoop/
回车去看一下目录
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /input2
我们输入是input 输出是input2
我们去看一下保证input2没有这个输出文件夹
我们把output1,output都删除掉
然后上面我们回车,去执行,wordcount程序
然后执行的时候,我们去hadoop集群去看看,可以看到Allocated Memory
Allocated 是划拨的意思 可以看到我们配置了最大是2G内存.
他这里使用了也是2G内存对吧.
然后
我们去看执行情况可以看到,正在执行对吧
然后可以看到现在已经用了 MEMORY USED 是2G的内存,然后Memory Total这个是总共内存是12GB对吧
Minimum Allocation 已经分配最小内存是1024 1G对吧,分配最大内存是Maximum Allocation 2048 2G对吧
标签: #hadoop内存配置