繁体   English   中英

从客户端应用程序写入的 Google Dataproc 将集群的内部 IP 用于 Datanodes

[英]Google Dataproc writing from a client app uses cluster's internal IP for Datanodes

我在 Google Cloud 上设置了一个 Dataproc 集群。 它已启动并正在运行,我可以访问 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地址是我在Dataproc中的第一个datanode的内部IP。 我需要使用外部 IP。

我的问题如下,

为此,需要更改客户端文件中的配置文件吗?

我试过了:

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

没有成功,非常感谢,

ETL 工具无法通过本地数据中心的外部 IP 访问 DataNode,因为您的防火墙规则可能会阻止来自 inte.net 的访问,或者您使用内部 IP 创建了 Dataproc 集群

也就是说,允许从 inte.net 访问 HDFS 是一种安全风险 默认情况下,Dataproc 集群不配置带 Kerberos 的安全身份验证,因此如果您决定向 inte.net 开放集群,您至少应该配置对它的安全访问

首选解决方案是在本地和 GCP 集群之间建立 secure.network 连接,并通过它访问 HDFS。 您可以在GCP 文档中阅读有关此选项的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM