hadoop设置的hadoop heap size是根据集群中的每一台机子配置而在那台机子上设置适合它的值吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop设置的hadoop heap size是根据集群中的每一台机子配置而在那台机子上设置适合它的值吗?相关的知识,希望对你有一定的参考价值。

还是全部统一设置的,另外,这个值的参考是什么,比方说我有一个主节点3G内存,一个从节点3G内存,一个从节点4G内存,那我应该分别在每一台机子下设置分别为2G,2G,3G的呢,还是统一2G的,还是说根据加起来的总数,所有都设置9G(<3+3+4)呢?

参考技术A 首先这个参数一般来说是整个集群统一设定的,它的定义是“Hadoop为各个守护进程分配的内存大小”,默认为1000MB,当然实际的肯定需要你根据集群实际情况来设定!分配过大的话,可能会影响整个集群对数据处理的效率,分配过小,可能会导致守护进程异常,进而影响到整个集群的正常运行。你可以先采用默认的大小,后期集群运行的过程中根据具体的测试结果以及日志输出来分析,需要调整的话再调整!hadoop和Hbase当中的很多属性的值都不好定,只能在运行过程中,根据数据量的大小以及集群是偏存储还是偏运算等情况来逐步调整参数。追问

那机子不一样也是统一设定吗?这样的话性能低的机子不就会把整个集群性能拖低了?应该不是这样的吧?

追答

是这样子的!而且一般对于一个集群来说,所有从节点的配置是要求一样的,包括操作系统、内存、CPU、磁盘分区等等,这是对一个集群所有资源最大化利用的要求,像你说的那种一个从节点内存是3G,另一个是4G的情况基本上不存在(根据我的经验来看哈)。主节点对服务器的性能相对于从节点来说要低一些,所以配置可以低一些,但是从节点一般要求就比较高了!我们公司的集群主节点的内存在32G,从节点是64G的。另外,所谓的hadoop集群就是实现存储和计算的分布式化,这种分布式是随机的,由相关服务根据job和task的分布和执行情况来自主判定,假如出现你这种从节点内存不一致的情况,貌似hadoop没有机制可以这么人性化的判定!
注:以上观点是个人经验所得,仅代表个人看法。

追问

那么若是在配置文件中配置了不一样的参数,作业运行的时候会是根据本台机子的配置去生成作业的conf吗?

追答

是的!集群运行时,读取的配置文件是本台服务器上的参数,也就是说如果你不同服务器配置了不同的参数,这种情况是实际存在的。当然,这是在该参数本机与master不冲突的情况下!比如hadoop/conf下有个slaves的配置文件,它里面配置的是整个集群所有节点的主机名,这个就必须要求所有节点上都保持相同配置了!

本回答被提问者采纳

java.lang.OutOfMemoryError: Java heap space

  最近在做hadoop上面的东西,今天跑一个kmeans算法,数据量是200W,运行到最后报错了,

最后在网上找到了答案,原来是hadoop配置的堆的空间太小,解决方法是在haoop-env.sh中加以修改

原本的配置是:

export HADOOP_CLIENT_OPTS="-Xmx128m $HADOOP_CLIENT_OPTS"

修改128为2048即可

以上是关于hadoop设置的hadoop heap size是根据集群中的每一台机子配置而在那台机子上设置适合它的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop块缓存

dfs.block.size 用于本地 hadoop 作业?

如何在hadoop中控制map的个数

Hadoop Intro - Configure

Hadoop配置文件参数详解

如何hadoop 看hive执行日志