前言:
目前各位老铁们对“hadoop内存配置”大致比较注重,各位老铁们都想要剖析一些“hadoop内存配置”的相关资讯。那么小编也在网络上收集了一些关于“hadoop内存配置””的相关文章,希望同学们能喜欢,我们一起来了解一下吧!
然后我们再来看,
首先namenode节点,我们说用来存,元数据的
如果一台服务器是128G的内存,那么,在namenode的文件块每个,占用150byte.
这个服务器就可以存储,9.1亿个文件块...这样的话,基本上,就够用了.
可以看到我们的服务器内存是4G对吧
在hadoop2.x中,namenode的内存,默认是2000m,如果我们的服务器内存是4G,那么给
namenode配置可以配置3G,因为要留下1G给操作系统,和其他软件使用
在hadoop2.x 中,可以配置hadoop-env.sh 文件,来配置namenode的内存
但是到了hadoop3.x,namenode的内存,就变成了动态配置的了.
就是说,如果你不配置的话,他会自动的去配置
我们可以去看一下这个配置
走到cd /opt/module/hadoop-3.1.3/
然后继续进入
cd etc/hadoop/
然后编辑
vim hadoop-env.sh
找到上面这里,可以看到
可以看到解释也说了,如果不配置就自动配置
现在我们没有配置,我们看一下他自动配置的话
配置了多少
cd /opt/module/hadoop-3.1.3/
根据文档我们去执行去看看
首先我们新开个hadoop102的窗口,然后
cd /opt/module/hadoop-3.1.3/
然后执行
myhadoop.sh start
然后我们执行jpsall 去看看各个进程 可以看到namenode的,进程号是6788
比如我们要查看一下 namenode的,占用内存情况
jmap -heap 6788 可以看到
hadoop3.x 自动给namenode分配的内存是 984.0MB对吧
为什么是984MB呢,我们知道我们的服务器有4G的内存
但是他才给namenode分了984mb,有些少对吧.
肯定是不符合要求的...太少了...
这也体现了hadoop3.x自动给分配的不合理性,所以我们一般都是自己去设置
因为如果你内容比较多,984MB不够用了,到时候程序就可能崩掉了.
我们再去看看jmap -heap 6956
这个是给datanode自动分配的内存
可以看到也是分配了984MB对吧..
这就说明,hadoop3.x自己自动分配的内存,有时候不是我们想要的,因为我们有4G的内存,作为namenode节点,我完全可以给他多一些内存对吧,至少1,2g 是可以的对吧,但是他自动分配的
却很少..所以这里我们需要修改它
修改怎么修改呢,按照什么标准呢?
可以看到上面有个网址...这个就是CDH给咱们总结的
可以进去看看
可以去打开这个网址去看看,可以看到
namenode 要设置内存,最小要设置1G,然后每增加1000000 100万个block,每增加100万个文件块,
就给他增加1G的内存就可以对吧.
具体就是修改上面这个hadoop-env.sh文件
然后我们去看一下,找到这个文件,然后
我们搜索 /NAMENODE
搜索到了以后,我们这里比如要把namenode的内存,设置成1G
可以看到上面的设置,参数之间都是用 空格加上一个-然后后面是参数设置的
可以看到我们也这样设置,加上红色部分的字样
然后我们再去搜一下DATANODE去看看设置
然后我们去设置就可以了,可以看到在原来的基础上,加上
export HDFS_NAMENODE_OPTS = -Dhadoop.security.logger=info,rfas -Xmx1024m
-Xmx1024m 加上了这一块. 然后给DATANODE也加上这一块,然后保存提交就可以了.
然后我们修改完配置文件,再去分发配置文件
xsync hadoop-env.sh
分发完了以后,我们再去重启,集群,让配置生效就可以了
myhadoop.sh stop 先关闭集群
然后再去myhadoop.sh start 再去启动集群
启动以后我们再去看一下,现在namenode和datanode的 内存是多少了
先把进程号记录下来,8599 8768对吧
首先我们先去看看namenode的内存
jmap -heap 8599
可以看到现在就是我们设置的内存是1024mb了对吧
然后我们再去看datanode的
jmap -heap 8768 可以看到
可以看到datanode的,占用内存也已经变成了,我们设置的1024mb了对吧.
标签: #hadoop内存配置