【问题标题】:Building hadoop cluster on small nodes在小节点上搭建hadoop集群
【发布时间】:2015-10-11 11:36:32
【问题描述】:

我正在四个非常小的虚拟服务器(2GB RAM,每个 2Cores)上准备 hadoop 集群,以进行概念验证。 一台服务器作为名称节点和资源管理器,三台作为数据节点。

每次我运行测试作业(包含数据的 3.4 GB 文件)时 - 两个数据节点(随机的)以最大能力工作,其中一个正在休眠(通过 htop 监控)。 所有 3 个数据节点都在 hadoop GUI 中可见。 我错过了什么?

任何帮助将不胜感激。

yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>hadoop-master:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>hadoop-master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>hadoop-master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>hadoop-master:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>hadoop-master:8088</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
    <name>dfs.data.dir</name>
    <value>/opt/hadoop/hadoop/dfs/data</value>
    <final>true</final>
</property>
<property>
    <name>dfs.name.dir</name>
    <value>/opt/hadoop/hadoop/dfs/name</value>
    <final>true</final>
</property>
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.blocksize</name>
    <value>67108864</value>
</property>

【问题讨论】:

  • 正在处理多少个文件(“3,4 GB”不清楚 - 一个 3.4 的文件还是 3 和 4 中的两个?)。另外,什么类型/扩展名?
  • 首先取决于您的工作中处理了多少任务。告诉你每份工作有多少个映射器/减速器?还给我们更多其他信息:您运行了什么作业以及您是如何运行它的(hadoop 命令或其他)?
  • 这是一个带有json对象的文件(每行ID和json)。
  • 我的工作有一个映射器和一个reducer。作业从文件中一一获取对象,对该对象的数据进行一些计算并保存结果。每个对象都是独立计算的。作业从命令行执行。
  • 由于您的作业有 1 个映射器和减速器,因此您的作业只需要 3 个容器(1 个用于映射器,1 个用于减速器,1 个用于 Application Master)。每个节点有多少个 vCore?假设您有 8 个 vCore(默认值为 8,由“yarn.nodemanager.resource.cpu-vcores”确定),“mapreduce.map.cpu.vcores”设置为 1,“mapreduce.reduce.cpu.vcores”设置为1,只需一个节点即可运行您的工作。由于所有三个容器都可以分配在单个节点中。为什么您希望使用所有 3 个节点?

标签: hadoop


【解决方案1】:

我找到了解决方案。
为了增加文件 mapred-site.xml 中减速器的数量,我添加了

<property>
    <name>A</name>
    <value>5</value>
</property> 

在我向集群添加了额外的节点之后,hadoop 增加了映射器,而没有对配置进行任何额外的更改。现在所有数据节点都以最大能力工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多