2つの異なる地域にある2つのインスタンス間にSparkクラスタを作成しようとしています。同じVPC /セキュリティグループに所属していないので、ある地域から別の地域のスレーブにMasterを接続するのは問題です(その逆もあります)。これまでのところ私は、次のように行われている:両方のマスターとスレーブのパブリックIPを追加するAmazon EC2のパブリックIPをスパークノードにバインドする方法は?
編集/ etc/hostsファイルを
54.208.204.190 master 13.113.105.113 slave01
- $ SPARK_HOME/confに/スレーブファイルへ
を追加しましたslave01 $ SPARK_HOME/confに/ spark-env.shで
は、次のように追加しました:
export JAVA_HOME=/home/ubuntu/jdk1.8.0_151 export SPARK_WORKER_CORES=8 export SPARK_MASTER_HOST=ec2-54-208-204-190.compute-1.amazonaws.com
マスターのパブリックIPの割り当てが機能していないため、私はSPARK_MASTER_HOSTでマスターのパブリックDNSを割り当てました。だから、
MasterUI' could not bind on port 8080.
、上記の構成は、私のために働いたと私は成功し、マスターに登録slave01を見ることができる、とスパークWebUIの中で1つのワーカーが意図したように見せていた:それは私に次のエラーを示しました。しかし、私がSparkPiの例を実行しようとすると、エグゼキュータを追加できませんでした。 slave01からのログで、私は以下を見つけました:
`Caused by: java.io.IOException: Failed to connect to /172-31-23-69:48441`
172-31-23-69は、マスターのプライベートIPです。私の理解では、slave01はmasterのこのプライベートIPによってmasterに接続することを望んでいましたが、同じvpc slave01にないのでmasterに接続できませんでした。私はspark-env.shとhostsファイルにマスターのパブリックDNSとIPの両方を指定しているので、なぜslave01がマスターのプライベートIPを使いたいのか分かりません。また、slave01がmasterのプライベートIPを知っていたことはもう一つ興味深い質問です。
私は両方のインスタンスでそれぞれSPARK_LOCAL_IP変数をパブリックIPに設定しようとしましたが、どちらも機能しません。だから誰でも私にここで方向性を示すことができれば、とても感謝しています。前もって感謝します。
パブリックIPは、インターネットゲートウェイによりプライベートIPに静的NAT-EDであるため、あなたはEC2インスタンスのパブリックIPへのソケットをバインドすることはできません。 ( 'ifconfig'の出力を参照してください - 公開IPは存在せず、そこに存在するはずです)。マシンにプライベート接続を提供するために2つのVPCをピアシングできますか? [VPCは現在クロスリージョンのピアリングをサポートしています](https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/) –
あなたの提案はうまくいった。利用可能な領域は4つしかありませんが、まだ開始です。あなたの親切な助けをありがとう。私はそれを確認できるように答えとしてあなたのコメントを置くことができます。再度、感謝します。 – user3086871