GoogleDataProc从客户端应用程序编写时使用集群的内部ip作为数据节点

eqfvzcg8  于 2021-07-15  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

我在google云上安装了一个dataproc集群。它是sup和运行,我可以访问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>

没有成功,非常感谢,

rbpvctlc

rbpvctlc1#

etl工具无法通过外部ips从内部数据中心访问datanodes,原因可能是防火墙规则阻止了从internet的访问,或者您使用内部ips创建了dataproc集群。
也就是说,允许从internet访问hdfs是一种安全风险。默认情况下,dataproc集群不配置带有kerberos的安全身份验证,所以如果您决定向internet开放集群,您至少应该配置对它的安全访问。
首选的解决方案是在本地和gcp集群之间建立安全的网络连接,并通过它访问hdfs。您可以在gcp文档中阅读有关此选项的更多信息。

相关问题