dfs_hosts_allow в Cloudera Manager

Я пытаюсь настроить HDFS и Cloudera Manager через API Cloudera Manager. Однако я застрял в определенном месте:

Я настраиваю все роли HDFS, но NameNode отказывается взаимодействовать с узлами данных. Соответствующая ошибка из журнала DataNode:

Initialization failed for Block pool BP-1653676587-172.168.215.10-1435054001015 (Datanode Uuid null) service to master.adastragrp.com/172.168.215.10:8022 Datanode denied communication with namenode because the host is not in the include-list: DatanodeRegistration(172.168.215.11, datanodeUuid=1a114e5d-2243-442f-8603-8905b988bea7, infoPort=50075, ipcPort=50020, storageInfo=lv=-56;cid=cluster4;nsid=103396489;c=0)
    at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:917)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:5085)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1140)
    at 

Мой DNS настроен через файл hosts, поэтому я подумал, что применим следующий ответ, и безуспешно попробовал решение: https://stackoverflow.com/a/29598059/1319284

Однако у меня есть еще один небольшой кластер с практически такой же конфигурацией, насколько я могу судить, который работает. DNS также настраивается через /etc/hosts, но здесь я настроил кластер через графический интерфейс Cloudera Manager вместо API.

После этого я, наконец, нашел каталог конфигурации запущенного процесса NameNode, а там нашел файл dfs_hosts_include. Открытие показывает, что включен только 127.0.0.1. В рабочем кластере все узлы включены в этот файл. Я нахожу похожую странность в topology.map:

<?xml version="1.0" encoding="UTF-8"?>

<!--Autogenerated by Cloudera Manager-->
<topology>
  <node name="master.adastragrp.com" rack="/default"/>
  <node name="127.0.0.1" rack="/default"/>
  <node name="slave.adastragrp.com" rack="/default"/>
  <node name="127.0.0.1" rack="/default"/>
</topology>

... Это выглядит неправильно. Опять же, в рабочем кластере IP-адреса соответствуют ожидаемым.

Я не только не знаю, что пошло не так, я также не знаю, как повлиять на эти файлы, так как все они автоматически генерируются Cloudera Manager. Кто-нибудь видел это раньше и может дать рекомендации здесь?


person kutschkem    schedule 23.06.2015    source источник


Ответы (1)


Наконец-то я нашел, где у меня была проблема. Проблема была в /etc/cloudera-scm-agent/config.ini

Я создал этот файл с помощью шаблона и в итоге получил

listening_ip=127.0.0.1

о чем агент cloudera-cm с радостью сообщил серверу. Для получения дополнительной информации см. вопрос Изменение соли /etc/hosts, но все еще кэшируете старый?

person kutschkem    schedule 23.06.2015
comment
Я обнаружил, что конфигурация агента Cloudera не имеет к этому никакого отношения. Единственное, что заставляет HDFS работать, — это убедиться, что имя хоста привязано к 127.0.0.1, потому что весь трафик исходит с этого адреса, а NameNode DFS соответствует исходному IP-адресу с именем хоста DataNode. - person Jari Turkia; 10.04.2018
comment
@JariTurkia Я не уверен, что понял ваш комментарий. Проблема заключалась в том, что NameNode сопоставил все хосты с петлевым адаптером, что неверно, поскольку в кластере было более одного узла, которые не находились на том же хосте, что и NameNode. Агент scm сообщил NameNode, что он прослушивал адаптер обратной связи, вместо этого он должен был сообщить, какой IP-адрес, обращенный к сети, он прослушивал (который будет вашим исходным IP-адресом). Исходный IP-адрес не 127.0.0.1 и не может быть 127.0.0.1, если узел находится на другом хосте. - person kutschkem; 10.04.2018
comment
Хорошо, тогда этот случай немного отличается от моего. У меня была настройка с одним хостом, и все хосты имели 127.0.1.1 в качестве IP-адреса. - person Jari Turkia; 10.04.2018