簡體   English   中英

通過襪子代理將YARN作業提交到遠程Hadoop集群

[英]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)

其中host1host2都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM