hadoop - Конфигурация нескольких узлов данных в псевдораспределенном режиме

Я новичок в 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>

After run:

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>

And I gain zero datanode. Any help would be greatly appreciated.


person Huy Truong    schedule 14.11.2018    source источник


Ответы (1)


Ключевой частью этого связанного ответа является вам нужно поддерживать разные конфигурации для каждого экземпляра узла данных

Вы не можете поместить два раздела <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

Я бы рекомендовал просто использовать две отдельные виртуальные машины, потому что это будет более точно соответствовать реальному сценарию.

person OneCricketeer    schedule 14.11.2018
comment
Привет @ cricket_007, не могли бы вы дать мне более подробную информацию или какой-нибудь учебник? - person Huy Truong; 14.11.2018
comment
Что вы планируете получить от запуска более одного узла данных? Вы уже находитесь на одной машине, поэтому репликация ничего не делает - person OneCricketeer; 14.11.2018
comment
Да, но я хочу протестировать распределенную функцию, поведение datanode и то, как namenode хранит свои метаданные, fsimage ... - person Huy Truong; 14.11.2018
comment
Ничего не распространяется, пока вы не перейдете через нелокальный сетевой интерфейс. И FSImage по-прежнему работает с одним датанодом - person OneCricketeer; 14.11.2018
comment
Как насчет этого репетитора: (bigdata.wordpress.com/2010/05/27/) - person Huy Truong; 14.11.2018
comment
Виртуальные машины отлично подходят для моделирования, однако в своем ответе я уже добавил все, что вам нужно. - person OneCricketeer; 14.11.2018