0

我是hadoop的新手。我已经在单机上设置了 hadoop - 伪分布式模式。我的 hdfs-site.xml 配置为默认值:

<configuration>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/yarn_data/hdfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/yarn_data/hdfs/datanode</value>
</property>

运行后:

hdfs namenode -format
start-all.sh
jps

我有一个名称节点和一个数据节点。
我想在这台机器上有多个数据节点,我尝试按照这个建议进行配置:stackoverflow和我的配置:

<configuration>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/yarn_data/hdfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/yarn_data/hdfs/datanode-1</value>
    <name>dfs.datanode.address</name>
    <value>0.0.0.0:9870</value>
    <name>dfs.datanode.http.address</name>
    <value>0.0.0.0:9090</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/yarn_data/hdfs/datanode-2</value>
    <name>dfs.datanode.address</name>
    <value>0.0.0.0:9871</value>
    <name>dfs.datanode.http.address</name>
    <value>0.0.0.0:9091</value>
</property>

我获得零数据节点。任何帮助将不胜感激。

4

1 回答 1

0

该链接答案的关键部分是您必须为每个数据节点实例维护不同的配置

您不能将两个<name><value>部分作为同一个XML 文件的一部分

您需要有两个单独的配置文件,每个数据节点一个。
但是,我不完全确定是否有可能HADOOP_CONF_DIR为独特的 Hadoop 进程设置两个变量。可能有一种方法可以做hadoop --config /some/path datanode,但start-dfs只是隐藏这种方法来让数据节点远离你

话虽如此,假设您已经export HADOOP_CONF_DIR=/etc/hadoop并且ls $HADOOP_CONF_DIR/hdfs-site.xml正在工作,那么您可以在自己的终端中尝试以下操作

mkdir /etc/hadoop2
cp /etc/hadoop/* /etc/hadoop2/

# EDIT the new hdfs-site.xml file

hadoop --config /etc/hadoop2 datanode

我建议只使用两个单独的虚拟机,因为这将更接近现实世界的场景

于 2018-11-14T04:18:07.483 回答