一些介绍 - 我正在学习Hadoop。我已经在Hadoop(聚类(之上实现了机器学习算法,并仅在一个小例子(30MB(上对其进行了测试。
几天前,我安装了 Ambari 并创建了一个由四台机器(主机器和 3 台工人(组成的小集群。Master 具有资源管理器和 NameNode。
现在我正在通过增加数据量(300MB,3GB(来测试我的算法。我正在寻找如何调整我的迷你集群的指针。具体来说,我想知道如何在Ambari中确定MapReduce2和YARN设置。
如何确定容器的最小/最大内存,容器的保留内存,排序分配内存,映射内存和减少内存?
问题是我的作业在Hadoop上的执行速度非常慢(聚类是一种迭代算法,这使事情变得更糟(。
我感觉我的集群设置不好,原因如下:
- 我为 30MB 的数据集运行一个作业(我为此作业设置的块内存为 8MB,因为数据很小且处理量很大(- 执行时间 30 分钟
- 我运行相同的作业,但将相同的数据集乘以 10 倍 - 300MB(相同的块大小,8MB( - 执行时间 2 小时
- 现在相同数量的数据 - 300MB,但块大小为128MB - 相同的执行时间,甚至可能大于2小时
HDFS上的块大小为128MB,所以我认为这会导致加速,但事实并非如此。我的怀疑是集群设置(最小/最大 RAM 大小、映射和减少 RAM(不好,因此即使实现了更大的数据局部性,它也无法改进。
这可能是设置错误的结果,还是我错了?
请在 Yarn 配置中设置以下属性,为每个作业分配 33% 的最大纱线内存,这可以根据您的要求进行更改。
yarn.scheduler.capacity.root.default.user-limit-factor=1yarn.scheduler.capacity.root.default.user-limit-factor=0.33如果您需要更多信息,请参阅以下链接 https://analyticsanvil.wordpress.com/2015/08/16/managing-yarn-memory-with-multiple-hive-users/