Запись Google Dataproc из клиентского приложения использует внутренний IP-адрес кластера для узлов данных.

Я настроил кластер Dataproc в Google Cloud. Он работает и работает, и я могу получить доступ к HDFS и копировать файлы из SSH в консоли браузера. Так что проблема не на стороне Dataproc.

Сейчас я использую Pentaho (программное обеспечение ELT) для копирования файлов. Pentaho должен получить доступ к мастеру и узлам данных.

У меня есть следующее сообщение об ошибке:

456829 [Thread-143] WARN org.apache.hadoop.hdfs.DataStreamer - Abandoning BP-1097611520-10.132.0.7-    1611589405814:blk_1073741911_1087
456857 [Thread-143] WARN org.apache.hadoop.hdfs.DataStreamer - Excluding datanode DatanodeInfoWithStorage[10.132.0.9:9866,DS-6586e84b-cdfd-4afb-836a-25348a5080cb,DISK]
456870 [Thread-143] WARN org.apache.hadoop.hdfs.DataStreamer - DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/jmonteilx/pentaho-shim-test-file.test could only be replicated to 0 nodes instead of minReplication (=1).  There are 2 datanode(s) running and 2 node(s) are excluded in this operation.
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1819)
    at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:265)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2569)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:846)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:510)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:503)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:989)
    at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:871)
    at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:817)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1893)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2606)

IP-адрес, используемый в журнале, является внутренним IP-адресом моего первого узла данных в Dataproc. Мне нужно использовать внешний IP.

Мой вопрос заключается в следующем,

Что-нибудь изменить в файлах конфигурации в файле клиента, чтобы сделать это?

Я пытался :

<property>    
        <name>dfs.client.use.datanode.hostname</name>    
        <value>true</value>
</property>

Безуспешно, Большое спасибо,


person Jean-François Monteil-Lemoine    schedule 28.01.2021    source источник
comment
Где вы используете инструмент Pentaho ETL? На виртуальных машинах GCE, на вашем локальном компьютере, в локальном центре обработки данных или в другом облаке?   -  person Igor Dvorzhak    schedule 28.01.2021
comment
Я использую Pentaho на предпосылке   -  person Jean-François Monteil-Lemoine    schedule 29.01.2021
comment
Позвольте мне добавить, что я создал пользователя с помощью pentaho на виртуальной машине главного узла Linux, а также в HDFS.   -  person Jean-François Monteil-Lemoine    schedule 29.01.2021


Ответы (1)


Инструмент ETL не может получить доступ к узлам данных через внешние IP-адреса из локального центра обработки данных, поскольку, возможно, правила вашего брандмауэра блокируют доступ из Интернета или вы создали Кластер Dataproc с внутренними IP-адресами.

Тем не менее, предоставление доступа к HDFS из Интернета представляет собой угрозу безопасности. По умолчанию кластер Dataproc не настраивает безопасную аутентификацию с помощью Kerberos, поэтому, если вы решите открыть кластер для Интернета, вам как минимум следует настроить безопасный доступ к нему.

Предпочтительным решением является установка безопасного сетевого соединения между локальным кластером и кластером GCP и доступ через него к HDFS. Подробнее об этом можно прочитать в документации GCP.

person Igor Dvorzhak    schedule 29.01.2021