Hadoop 2.8.1 в Ubuntu 16.04 — диспетчер ресурсов аварийно завершает работу на NameNode

возникла следующая проблема: у меня есть кластер hadoop (2.8.1, java 8), и мой диспетчер ресурсов продолжает ломаться примерно через 30 секунд-1 минуту или когда я пытаюсь добавить какие-либо файлы в hdfs.

У меня есть 3 VPS (Ubuntu 16.04.2 LTS), 1 для Namenode и 2 для Data Nodes. Это в основном для игры, поэтому просто имейте 20 ГБ места (которого, я считаю, должно быть достаточно, чтобы увидеть небольшой эффект работы mapreduce)

содержимое моих файлов:

/etc/hosts на каждом из серверов:

135.59.171.41 01-slave 01-slave
188.166.167.150 02-master 02-master
155.59.170.39 03-slave 03-slave

hdfs-site.xml на мастере

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration
    <property>
       <name>dfs.replication</name>
       <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/store/hdfs/namenode</value>
    </property>
</configuration>

hdfs-site.xml на ведомых устройствах

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration
    <property>
       <name>dfs.replication</name>
       <value>3</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/store/hdfs/datanode</value>
    </property>
</configuration>

core-site.xml на главном и подчиненном устройствах

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property> 
    <name>fs.default.name</name>
   <value>hdfs://stegosaurus-server-02-master:9000</value>
</property>
</configuration>

JAVA HOME находится в Hadoop-env на всех 3 серверах)

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

.bashrc hadoop, связанный со всеми 3 серверами)

# -- HADOOP ENVIRONMENT VARIABLES START -- #
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.egd=file:/dev/../dev/urandom"

Содержимое mapred-site.xml (все 3 сервера)

<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
 <name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>02-master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>02-master:19888</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Djava.security.egd=file:/dev/../dev/urandom</value>
</property>
</configuration>

Содержимое yarn-site.xml (все 3 сервера)

<?xml version="1.0"?>
<configuration>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>02-master:8025</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>02-master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>02-master:8051</value>
</property>
</configuration>

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

просмотр портов дает следующие результаты

02-master:/usr/local/hadoop/etc/hadoop$ sudo lsof -i -P -n | grep LISTEN 
sshd     1310     root    3u  IPv4  13858      0t0  TCP *:22 (LISTEN)
sshd     1310     root    4u  IPv6  13871      0t0  TCP *:22 (LISTEN)
apache2  1452     root    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
apache2  1455 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
apache2  1456 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
apache2  1457 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
apache2  1458 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
apache2  1459 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)
java     7491   hduser  210u  IPv4 170841      0t0  TCP *:50070 (LISTEN)
java     7491   hduser  226u  IPv4 171053      0t0  TCP 188.166.169.154:9000 
(LISTEN)
java     7718   hduser  220u  IPv4 171925      0t0  TCP *:50090 (LISTEN)
apache2 19108 www-data    3u  IPv4  15075      0t0  TCP *:80 (LISTEN)

masters и slaves заполняются только на master: masters

02-master

рабы

01-slave
03-slave

Брандмауэр также отключен на всех трех серверах.

Что я понял, так это то, что при сбое RM, если я telnet master от мастера через порт, который используется пряжей, будет «отказано в соединении».

если я попробую

yarn application -list

он попытается подключиться к порту адреса менеджера ресурсов и умрет после 10 попыток.

Когда он загружается, я вижу веб-приложение на портах 8088 и 50070, но затем, когда пряжа умирает, очевидно, что 8088 недоступен, я не уверен, что еще я могу добавить сюда. Сейчас это довольно запутанно, потому что я думаю, что уже пробовал что-нибудь. Можешь мне помочь?

запуск jps на namenode (обратите внимание, что диспетчер ресурсов запускается, а затем умирает при попытке):

7491 NameNode
7718 SecondaryNameNode
12091 Jps

последние строки в журналах ResourceManager обычно

scheduler: class org.apache.hadoop.ipc.DefaultRpcScheduler
2017-10-25 21:01:13,025 INFO org.apache.hadoop.ipc.Server: Starting Socket 
Reader #1 for port 8033
2017-10-25 21:01:13,054 INFO 
org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl: Adding 
protocol 
org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocolPB to 
the server
2017-10-25 21:01:13,055 INFO org.apache.hadoop.ipc.Server: IPC Server 
Responder: starting
2017-10-25 21:01:13,055 INFO org.apache.hadoop.ipc.Server: IPC Server 
listener on 8033: starting

IP V6 выключен

Пожалуйста помоги.. :(


person B_C    schedule 26.10.2017    source источник
comment
Сколько памяти у вас есть на каждом хосте, сколько памяти/кучи вы выделили каждому серверу?   -  person tk421    schedule 26.10.2017
comment
@tk421 у меня есть: основной узел: 0 свопов, всего 488 м, 146 доступных узел данных 1: всего 488, 250 доступных, 0 свопов узел данных 2: Всего 488, 169 доступно, 0 свопов Теперь я вижу, в чем проблема, я думаю. Есть ли какие-либо предложения по минимальной сумме, которую мне нужно? может 1гиг или 2 гига? Я не планирую использовать его для чего-то большого, просто играю - в то время как спецификации предлагают корпоративные настройки для минимальной конфигурации. Спасибо за вашу помощь, я попытаюсь увеличить память и посмотреть, что произойдет.   -  person B_C    schedule 27.10.2017
comment
Я бы сказал, что 8-10 ГБ - это хороший минимум. Как правило, размер кучи узла данных, диспетчера узлов и диспетчера ресурсов должен составлять не менее 0,6–0,75 ГБ, поэтому общая занимаемая площадь будет составлять 1 ГБ. Namenode хранит хэш-карту каждого блока в HDFS, поэтому вам нужно больше памяти, например, минимум 2-4 ГБ, если только вы не планируете генерировать слишком много данных. Узел вторичного имени не нужен, если вы просто хотите поиграть с Hadoop. В качестве альтернативы можно использовать одну из предварительно упакованных виртуальных машин (Cloudera или Hortonworks), которые уже настраивают свои параметры в соответствии с виртуальной машиной.   -  person tk421    schedule 27.10.2017


Ответы (1)


Как упомянул
@tk421, проблема заключалась в нехватке оперативной памяти. Я удвоил оперативную память на узлах данных и учетверил оперативную память на NameNode, и все заработало.

Большое спасибо за вашу помощь @tk421 и хорошего дня!

person B_C    schedule 20.11.2017