Я пытаюсь загрузить файл на S3 с помощью hadoop:
hadoop fs -Dfs.s3a.connection.ssl.enabled=false -Dfs.s3a.proxy.host=127.0.0.1 -Dfs.s3a.proxy.port=8123 -put pig_1421167148680.log s3a://access:secret@bucket/temp/trash
Но я не могу заставить hadoop использовать прокси.
16/01/08 11:57:27 INFO http.AmazonHttpClient: Unable to execute HTTP
request: Connect to bucket.s3.amazonaws.com:80 timed out
com.cloudera.org.apache.http.conn.ConnectTimeoutException: Connect to
Прокси работает отлично. Я могу получить доступ к корзине S3 с помощью AWS CLI.
Для этого вам нужно использовать команду distcp not hadoop fs, поскольку hadoop fs работает на вашем локальном кластере HDFS, а distcp - это способ копирования между кластерами (а S3 si рассматривается как кластер).
Чтобы это сработало, я помещаю все свойства в hdfs-site.xml на каждом узле (поскольку distcp распределяется на все узлы), а не в командной строке.
Итак, добавьте в файлы hdfs-site.xml на каждом узле следующие свойства:
<property>
<name>fs.s3a.access.key</name>
<value>your_access_key</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>your_secret_key</value>
</property>
<property>
<name>fs.s3a.proxy.host</name>
<value>your_proxy_host</value>
</property>
<property>
<name>fs.s3a.proxy.port</name>
<value>your_proxy_port</value>
</property>