Проблема решена из-за конфигурации zookeeper в core-site.xml . Я объясняю детали в конфигурации высокой доступности Hadoop следующим образом:
HDFS-site.xml
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
<description>Logical name for this new nameservice</description>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
<description>Unique identifiers for each NameNode in
the nameservice</description>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>10.32.0.1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>10.32.0.2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>10.32.0.1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>10.32.0.2:50070</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.
server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>
qjournal://10.32.0.1:8485;10.32.0.2:8485;10.32.0.3:8485/mycluster
</value>
</property>
<property>
<name>dfs.permissions.enable</name>
<value> false </value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hdfs/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hdfs</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop_store/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
core-site.xml (например, в узле "10.32.0.1"):
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/tmp/hadoop/dfs/journalnode</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>0.0.0.0:2181,10.32.0.2:2181,10.32.0.3:2181</value>
</property>
Конфигурация Zookeeper, например, в "10.32.0.1":
server.1=0.0.0.0:2888:3888
server.2=10.32.0.2:2888:3888
server.3=10.32.0.3:2888:3888
Кроме того, я создал myid файл в / var / lib / zookeeper / data с идентификатором этого узла.
Сначала удалите все нижеуказанные папки:
rm -rf /tmp/hadoop/dfs/journalnode
rm -rf /usr/local/hadoop_store/hdfs/namenode
rm -rf /usr/local/hadoop_store/hdfs/datanode
rm -rf /opt/hadoop/logs/*
Затем создайте эти папки:
mkdir /usr/local/hadoop_store/hdfs/namenode
mkdir /usr/local/hadoop_store/hdfs/datanode
После этого дайте правильное разрешение этим папкам:
chmod 777 /usr/local/hadoop_store/hdfs/namenode
chmod 777 /usr/local/hadoop_store/hdfs/datanode
chown -R root /usr/local/hadoop_store/hdfs/namenode
chown -R root /usr/local/hadoop_store/hdfs/datanode
chmod 777 /tmp/hadoop/dfs/journalnode
chown -R root /tmp/hadoop/dfs/journalnode
Теперь вы можете выполнить этот этап для форматирования этих папок.
Самое главное, как отформатировать эти три узла. Вы должны пройти следующие этапы:
1. Остановите службу Hdfs
2. Запустите только узлы журнала (так как они должны быть осведомлены о форматировании)
/opt/hadoop/bin/hdfs --daemon start journalnode
В первом наменоде (как пользователь hdfs или root)
hadoop namenode -формат
На журнальных узлах:
hdfs namenode -initializeSharedEdits -force
Перезапустите Zookeeper:
/ home / zookeeper-3.4.14 / bin / zkServer.sh restart
Формат Zookeeper:
hdfs zkfc -formatZK -force (to force zookeeper to reinitialise)
перезапустите первый наменод:
/opt/hadoop/bin/hdfs --daemon start namenode
На втором наменоде:
hdfs namenode -bootstrapStandby -force (force synch with first namenode)
На каждом датоделе очистить каталог данных:
hadoop datanode -format
Перезапустите службу HDFS:
/opt/hadoop/sbin/start-dfs.sh
Кстати, у меня есть три узла, два наменода и один датодет.
Вы можете проверить журнал hadoop в / opt / hadoop / logs / .