Java hadoop(oozie)中基于代理的AmazonS3Client

Java hadoop(oozie)中基于代理的AmazonS3Client,java,hadoop,amazon-s3,proxy,oozie,Java,Hadoop,Amazon S3,Proxy,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 现在这是预期的行为,

我正试图通过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
现在这是预期的行为,因为我需要通过代理传递该行为,但是问题是我没有看到与hit proxy的连接。所有这些都试图直接连接到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>

mapreduce.reduce.java.opts
-Xmx1024m-Dhttp.proxyHost=1.1.1-Dhttp.proxyPort=8080-Dhttps.proxyHost=1.1.1-Dhttps.proxyPort=8080-Dhttp.NoproxyHosts=localhost | 127.0.0.1 |*.localdomain
假的
mapreduce.map.java.opts
-Xmx1024m-Dhttp.proxyHost=1.1.1-Dhttp.proxyPort=8080-Dhttps.proxyHost=1.1.1-Dhttps.proxyPort=8080-Dhttp.NoproxyHosts=localhost | 127.0.0.1 |*.localdomain
假的
mapred.child.java.opts
-Xmx1024m-XX:+UseConMarkSweepGC-Dhttp.proxyHost=1.1.1-Dhttp.proxyPort=8080-Dhttps.proxyHost=1.1.1-Dhttps.proxyPort=8080-Dhttp.NoproxyHosts=localhost | 127.0.1 |*.localdomain
假的
然而,连接仍然直接通过互联网,只是绕过这些设置。我有另一个工作,通过这个代理成功调用外部API,所以我知道这个设置可以工作,只是不知道为什么它不能与AmazonS3Client一起工作


有没有一种方法可以在不更改代码的情况下实现这一点?

问题在于应用程序附带的S3库。它根本不支持代理。因此,在我的例子中,如果不更正代码,就没有办法做到这一点