Amazon EC2 で 5 つのノードを含む Hadoop クラスターをセットアップしました。ここで、マスター ノードにログインして次のコマンドを送信すると、
bin/hadoop jar <program>.jar <arg1> <arg2> <path/to/input/file/on/S3>
次のエラーがスローされます (同時にではありません)。最初のエラーはスラッシュを '%2F' に置き換えないとスローされ、2 番目のエラーはスラッシュを '%2F' に置き換えたときにスローされます。
1) Java.lang.IllegalArgumentException: Invalid hostname in URI S3://<ID>:<SECRETKEY>@<BUCKET>/<path-to-inputfile>
2) org.apache.hadoop.fs.S3.S3Exception: org.jets3t.service.S3ServiceException: S3 PUT failed for '/' XML Error Message: The request signature we calculated does not match the signature you provided. check your key and signing method.
ノート:
1)マスターで実行されているタスクを確認するために jps を送信したところ、表示されました
1116 NameNode
1699 Jps
1180 JobTracker
DataNode と TaskTracker を残します。
2) 私の秘密鍵には 2 つの「/」(スラッシュ) が含まれています。そして、S3 URI でそれらを「%2F」に置き換えます。
PS: 単一ノードで実行すると、プログラムは EC2 で正常に実行されます。クラスターを起動したときにのみ、HDFS との間で S3 との間でデータをコピーすることに関連する問題が発生します。そして、distcp は何をしますか? S3 から HDFS にデータをコピーした後でも、データを配布する必要がありますか? (HDFS が内部で処理すると思っていました)
Amazon EC2/S3 を使用して Hadoop クラスターで Map/reduce プログラムを実行する方法を説明するリンクに誘導していただければ幸いです。それは素晴らしいことです。
よろしく、
ディーパック。