![](/img/trans.png)
[英]Unable to launch python scripts on the YARN Hadoop cluster via remote
[英]Submit YARN jobs to remote Hadoop cluster via socks proxy
我正在嘗試通過SOCKS代理訪問運行YARN的防火牆Hadoop集群。 群集本身不使用代理連接-只有在本地計算機(例如筆記本電腦)上運行的客戶端通過ssh -D 9999 user@gateway-host
到可以查看Hadoop群集的計算機。
在Hadoop配置core-site.xml
(在我的筆記本電腦上)中,我有以下幾行:
<property>
<name>hadoop.socks.server</name>
<value>localhost:9999</value>
</property>
<property>
<name>hadoop.rpc.socket.factory.class.default</name>
<value>org.apache.hadoop.net.SocksSocketFactory</value>
</property>
以這種方式訪問HDFS效果很好。 但是,當我嘗試提交YARN作業時,它失敗了,並且我在日志中看到節點無法相互通信:
java.io.IOException: Failed on local exception: java.net.SocketException: Connection refused; Host Details : local host is: "host1"; destination host is: "host2":8030;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:772)
其中host1
和host2
都是hadoop集群的一部分。
我猜發生了什么,hadoop節點也在嘗試通過socks代理進行通信,這顯然失敗了,因為每個主機上都沒有代理服務器。 除了設置專用代理服務器之外,是否有其他方法可以解決此問題?
沒錯,Hadoop節點一定不能使用SOCKS代理進行通信。 您可以通過在集群端final上標記SocketFactory設置來實現。
在集群的core-site.xml
,將最終標簽添加到默認的SocketFactory屬性中:
<property>
<name>hadoop.rpc.socket.factory.class.default</name>
<value>org.apache.hadoop.net.StandardSocketFactory</value>
<final>true</final>
</property>
顯然,您必須重新啟動群集服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.