簡體   English   中英

Hadoop中的AmazonS3Client代理(oozie)

[英]AmazonS3Client over proxy in hadoop(oozie)

我正在嘗試通過oozie運行Java代碼。 該代碼是為非代理環境編寫的,但是我試圖在需要代理服務器設置的環境中實現該代碼。 這是我運行作業時遇到的錯誤。

2015-05-18 09:22:26,929 WARN com.amazonaws.http.AmazonHttpClient: Unable to execute HTTP request: connect timed out
java.net.SocketTimeoutException: connect timed out

現在這是預期的行為,因為我需要通過代理將其傳遞給該代理,但是問題是我看不到該代理連接。 所有人都試圖直接連接到Internet,並被防火牆阻止。

我已經使用/etc/hadoop/conf/mapred-site.xml屬性為所有hadoop節點的所有連接設置了通用代理(因為它們有時都會需要它):

<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx1024m -Dhttp.proxyHost=1.1.1.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=1.1.1.1 -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.localdomain</value>
    <final>false</final>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx1024m -Dhttp.proxyHost=1.1.1.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=1.1.1.1 -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.localdomain</value>
    <final>false</final>
</property>
<property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx1024m -XX:+UseConcMarkSweepGC -Dhttp.proxyHost=1.1.1.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=1.1.1.1 -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.localdomain</value>
<final>false</final>
</property>

但是,連接仍直接繞過Internet,僅繞過這些設置即可。 我還有另一項工作可以通過此代理成功調用外部API,所以我知道此設置有效,只是不知道為什么它不適用於AmazonS3Client

有沒有一種方法可以實現而無需更改代碼?

問題是該應用程序附帶的S3庫。 它根本不支持代理。 因此,在我的情況下,如果不更正代碼,就無法做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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