2017-04-10 7 views
2

AWS EC2にhadoopとsparkをインストールした後、this tutorialに続いてエラーが発生しました。 AWSのsparkからHDFSにアクセスできます。私はローカルマシンからAWSのHDFSファイルにアクセスしようとするとエラーが発生する

val lines = sc.textFile("hdfs://namenode_public_DNS:9000/datasets/wikipedia/wikipedia.dat") 
lines.first() 

を通じて私のローカルマシンからHDFSファイルにアクセスしようとすると

はしかし、私はどのように私はこの問題を解決することができ

17/04/10 16:35:41 WARN BlockReaderFactory: I/O error constructing remote block reader. 
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/datanode_ip:50010] 

を取得しますか?

ありがとうございます。


  1. すべてのAWSインスタンスはすべてのトラフィックを許可するように設定されています。
  2. 私は1名前ノードとデータノード1
+0

Namenodeによってクライアントに返されるdatanodeのIPは、ローカルマシンからアクセスできないプライベートIPです。 – franklinsijo

答えて

0

あなたは、HDFSのために使用しているポートだけを持って、外部からアクセス可能でなければなりません。 ローカルマシンでこのコマンドを実行してください。

$telnet namenode_public_DNS 9000 

天気をチェックすると、hdfsポートにアクセスできます。

+0

出力は 'namenode_public_DNS'に接続されています、'エスケープ文字は '^]'です。でも、まだデータセットには接続できません。 – fois

+0

は、すべてのデータノードで50010ポートのファイアウォールも有効にします。 – Kaushal

0

EC2インスタンス用にSecurity Groupsが正しく設定されていることを確認してください。既定では、EC2インスタンスのセキュリティグループの構成では、受信トラフィックは許可されません。セキュリティグループに新しいルールを追加するには、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-ruleに記載されている手順を適用し、ポート9000のインバウンドトラフィックを追加します(セキュリティグループはステートフルなので、アウトバウンドのために何もする必要はありません)。

+0

すべてのインスタンスがすべてのトラフィックを許可するように設定されていることを確認しました。 – fois

+0

テスト目的のために、 'hadoop fs -ls hdfs:// namenode_public_DNS:9000/datasets/wikipedia/wikipedia.dat'を試すことができるように、Hadoopをローカルにインストールできますか?ファイルを少なくともリストすることが可能かどうかを確認するには? –

関連する問題