0

Cloudera クイックスタート VM を使用しています。昨日、Googleクラウドプラットフォームをいじり始めました。cloudera hdfs のデータを 1. google クラウド ストレージ (gs://bucket_name/) 2. google クラウド hdfs クラスター (hdfs://google_cluster_namenode:8020/ を使用) にコピーしようとしています。

  1. サービス アカウント認証を設定し、この投稿の指示に従って cloudera core-site.xml を構成しました

    hadoop fs -cp hdfs://quickstart.cloudera:8020/path_to_copy/ gs://bucket_name/
    

正常に動作します。ただし、distcp を使用して Google クラウド ストレージにコピーすることはできません。次のエラーが表示されます。URI の問題ではないことはわかっています。私が見逃しているものは他にありますか?

Error: java.io.IOException: File copy failed: hdfs://quickstart.cloudera:8020/path_to_copy/file --> gs://bucket_name/file
at org.apache.hadoop.tools.mapred.CopyMapper.copyFileWithRetry(CopyMapper.java:284)
at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:252)
at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:50)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 
Caused by: java.io.IOException: Couldn't run retriable-command: Copying hdfs://quickstart.cloudera:8020/path_to_copy/file to gs://bucket_name/file
at org.apache.hadoop.tools.util.RetriableCommand.execute(RetriableCommand.java:101)
at org.apache.hadoop.tools.mapred.CopyMapper.copyFileWithRetry(CopyMapper.java:280)
... 10 more 
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: gs://bucket_name.distcp.tmp.attempt_1461777569169_0002_m_000001_2
at org.apache.hadoop.fs.Path.initialize(Path.java:206)
at org.apache.hadoop.fs.Path.<init>(Path.java:116)
at org.apache.hadoop.fs.Path.<init>(Path.java:94)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.getTmpFile(RetriableFileCopyCommand.java:233)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.doCopy(RetriableFileCopyCommand.java:107)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.doExecute(RetriableFileCopyCommand.java:100)
at org.apache.hadoop.tools.util.RetriableCommand.execute(RetriableCommand.java:87)
... 11 more
  1. distcp で Google クラウド hdfs namenode に接続できません。「サーバーへの接続を再試行しています」というメッセージが表示されます。cloudera hdfs クラスターと google cloud hdfs クラスター間の接続を構成するためのドキュメントが見つかりませんでした。私は、サービス アカウントの認証が Google hdfs でも機能するはずであると想定していました。クラスター間のコピーをセットアップするために使用できるリファレンス ドキュメントはありますか? 不足している他の認証設定はありますか?
4

1 に答える 1

0

distcp を実行していた IP からの tcp/http を許可するように、ファイアウォール ルールを変更する必要があったことがわかりました。GCP コンピューティング インスタンスのネットワーク ファイアウォールを確認します。

于 2016-05-03T14:25:50.127 に答える