伪分布式模式下的多个数据节点配置



我是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名称节点-格式
启动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>

我得到零个数据节点。如有任何帮助,我们将不胜感激。

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

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

您需要有两个独立的配置文件,每个数据节点一个
但是,我我不完全确定是否有可能为唯一的Hadoop进程提供两个HADOOP_CONF_DIR变量。可能有一种方法可以实现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

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

最新更新