Повторная попытка подключения к серверу: уже пробовала 9 раз; политика повторных попыток — RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, sleepTime = 1000 МИЛЛИСЕКУНД)

У меня есть три физических узла. В каждом узле я вхожу в докер с помощью этой команды.

   docker run -v /home/user/.ssh:/root/.ssh --privileged 
   -p 5050:5050 -p 5051:5051 -p 5052:5052 -p 2181:2181 -p 8089:8081 
   -p 6123:6123 -p 8084:8080 -p 50090:50090 -p 50070:50070 
   -p 9000:9000 -p 2888:2888 -p 3888:3888 -p 4041:4040 -p 8020:8020 
   -p 8485:8485 -p 7078:7077 -p 52222:22 -e WEAVE_CIDR=10.32.0.3/12 
   -e MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins 
   -e LIBPROCESS_IP=10.32.0.3 
   -e MESOS_RESOURCES=ports*:[11000-11999] 
   -ti hadoop_marathon_mesos_flink_2 /bin/bash

Я настраиваю Hadoop следующим образом: Core-site.xml:

 <configuration>
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://mycluster</value>
   </property>
   <property>
     <name>fs.default.name</name>
     <value>hdfs://mycluster</value>
   </property>
 </configuration>

hdfs-site.xml:

  <configuration>
    <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.journalnode.edits.dir</name>
      <value>/tmp/hadoop/dfs/jn</value>
    </property>

    <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.ha.fencing.methods</name>
       <value>shell(/bin/true)</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>

     <property>
       <name>ha.zookeeper.quorum</name>
       <value>10.32.0.1:2181,10.32.0.2:2181,10.32.0.3:2181</value>
     </property>
   </configuration>

Проблема в том, что когда я форматирую namenode:

   hadoop namenode -format

Он не может форматировать namenode. Я получаю эту ошибку:

2019-05-06 06:35:09,969 INFO ipc.Client: повторная попытка подключения к серверу: 10.32.0.2/10.32.0.2:8485. Уже пробовал 9 раз(а); политика повторных попыток — RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, sleepTime = 1000 МИЛЛИСЕКУНД)

2019-05-06 06:35:09,969 INFO ipc.Client: повторная попытка подключения к серверу: 10.32.0.3/10.32.0.3:8485. Уже пробовал 9 раз(а); политика повторных попыток — RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, sleepTime = 1000 МИЛЛИСЕКУНД)

2019-05-06 06:35:09,987 ОШИБКА namenode.NameNode: не удалось запустить namenode. org.apache.hadoop.hdfs.qjournal.client.QuorumException: невозможно проверить, готовы ли JN к форматированию. Выброшено 1 исключение:

10.32.0.1:8485: вызов с 50c5244de4cd/10.32.0.1 на 50c5244de4cd:8485 завершился неудачно при исключении соединения: java.net.ConnectException: соединение отклонено; Подробнее см.: http://wiki.apache.org/hadoop/ConnectionRefused

Я уже опубликовал порты, которые требуются в Hadoop, но все равно получаю отказ в подключении.

Кто-нибудь, пожалуйста, скажите мне, в чем проблема конфигурации?

Заранее спасибо.


person M_Gh    schedule 06.05.2019    source источник


Ответы (1)


Проблема решена из-за конфигурации 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
  1. На первом namenode (как пользователь hdfs или root)

    Узел имен Hadoop -формат

  2. На узлах журнала:

    узел имен hdfs -initializeSharedEdits -force

  3. Перезапустите ZooKeeper:

    /home/zookeeper-3.4.14/bin/zkServer.sh перезапуск

  4. Формат ZooKeeper:

    hdfs zkfc -formatZK -force (to force zookeeper to reinitialise)
    
  5. перезапустите этот первый namenode:

    /opt/hadoop/bin/hdfs --daemon start namenode
    
  6. На втором namenode:

    hdfs namenode -bootstrapStandby -force ​(force synch with first namenode)
    
  7. На каждом узле данных очистите каталог данных:

    hadoop datanode -format
    
  8. Перезапустите службу HDFS:

    /opt/hadoop/sbin/start-dfs.sh
    

Кстати, у меня есть три узла, два namenode и один datanode. Вы можете проверить журнал Hadoop в /opt/hadoop/logs/.

person M_Gh    schedule 11.05.2019