두 개의 다른 지역에있는 두 인스턴스 사이에 Spark 클러스터를 만들려고합니다. 동일한 VPC/보안 그룹에 속하지 않으므로 한 영역에서 다른 영역의 종속 장치로 마스터를 연결하는 데 문제가 있습니다 (반대의 경우도 마찬가지 임). 지금까지 나는 다음과 같은 짓을 : 마스터 및 슬레이브의 공용 IP를 추가 할 수Amazon EC2에서 공용 IP를 스파크 노드에 바인딩하는 방법은 무엇입니까?
편집/etc/hosts 파일을
54.208.204.190 master 13.113.105.113 slave01
- $ SPARK_HOME/conf의/슬레이브 파일에
추가 된 slave01
01,237,286,723,826,863,211,492,512,321 : $ SPARK_HOME에서
- 는/conf의는/spark-env.sh는 다음과 같은 추가 0
master의 공용 IP 할당이 작동하지 않아 SPARK_MASTER_HOST에서 master의 Public DNS를 할당했습니다.
MasterUI' could not bind on port 8080.
`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에 연결하지 못했습니다. 나는 왜 slave01이 spark-env.sh와 hosts 파일에서 마스터의 Public DNS와 IP를 모두 주었기 때문에 master의 사설 IP를 사용하려고하는지 잘 모르겠습니다. 또한, slave01이 마스터의 개인 IP를 알게 된 또 다른 흥미로운 질문입니다.
두 인스턴스에서 각각 SPARK_LOCAL_IP 변수를 공용 IP로 설정하려고 시도했지만 작동하지 않습니다. 누군가가 저에게 어떤 종류의 방향을 보여줄 수 있다면 저는 매우 감사 할 것입니다. 미리 감사드립니다.
공용 IP 정적으로 인터넷 게이트웨이에 의해 사설 IP에 NAT-ED 때문에 당신은 EC2 인스턴스의 공용 IP로 소켓을 바인딩 할 수 없습니다. ('ifconfig'의 출력을 보라 - 공용 IP는 존재하지 않으며 거기에 있지 않아야한다.) 두 개의 VPC를 피어싱하여 컴퓨터에 개인 연결을 제공 할 수 있습니까? [VPC는 이제 교차 지역 피어링을 지원합니다.] (https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/) –
당신의 제안이 효과가있었습니다. 사용할 수있는 영역은 4 개 뿐이지 만 시작일뿐입니다. 친절한 도움을 주셔서 감사합니다. 당신은 내가 그것을 확인할 수 있도록 대답으로 당신의 의견을 넣을 수 있습니다. 다시 한번 감사드립니다. – user3086871