복붙노트

[HADOOP] 아파치 스파크 오류 : akka.tcp에 연결할 수 없습니다 : // sparkMaster @

HADOOP

아파치 스파크 오류 : akka.tcp에 연결할 수 없습니다 : // sparkMaster @

이것은 apache spark 및 hadoop과 같은 큰 데이터를 사용하는 첫 번째 단계입니다.

우리는 Cloudera CDH 5.3을 설치했습니다. cloudera 관리자로부터 우리는 spark를 설치하도록 선택합니다. Spark은 클러스터의 노드 중 하나에서 실행되고 있습니다.

내 컴퓨터에서 hadoop HDFS에 저장된 텍스트 파일을 읽도록 연결하는 작은 응용 프로그램을 만들었습니다.

이클립스에서 응용 프로그램을 실행하려고하는데 이러한 메시지가 표시된다.

15/02/11 14:44:01 정보 client.AppClient $ ClientActor : 마스터 스파크에 연결 중 : //10.62.82.21 : 7077 ... 15/02/11 14:44:02 WARN client.AppClient $ ClientActor : akka.tcp에 연결할 수 없습니다 : //sparkMaster@10.62.82.21 : 7077 : akka.remote.InvalidAssociation : 잘못된 주소 : akka.tcp : // sparkMaster@10.62.82.21 : 7077 15/02/11 14:44:02 WAR 원격 : 연결할 수없는 원격 주소 [akka.tcp : //sparkMaster@10.62.82.21 : 7077]와 연결을 시도했습니다. 이제 주소가 5000ms 동안 게이트로 지정되면이 주소로 보내는 모든 메시지가 불필요한 문자로 전달됩니다. 이유 : 연결이 거부되었습니다. 추가 정보 없음 : /10.62.82.21:7077

응용 프로그램에는 다음 행을 사용하여 컨텍스트를 만드는 하나의 클래스가 있습니다.

JavaSparkContext sc = 새 JavaSparkContext (새 SparkConf (). setAppName ( "스파크 카운트") .setMaster ( "spark : //10.62.82.21 : 7077"));

여기서이 IP는 작동중인 기계 스파크의 IP입니다.

그런 다음 다음 줄을 사용하여 HDFS에서 파일을 읽으려고합니다.

sc.textFile ( "hdfs : //10.62.82.21/tmp/words.txt")

응용 프로그램을 실행할 때

해결법

  1. ==============================

    1.Spark 마스터 로그를 확인하면 다음과 같이 표시됩니다.

    Spark 마스터 로그를 확인하면 다음과 같이 표시됩니다.

    15/02/11 13:37:14 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkMaster@mymaster:7077]
    15/02/11 13:37:14 INFO Remoting: Remoting now listens on addresses: [akka.tcp://sparkMaster@mymaster:7077]
    15/02/11 13:37:14 INFO Master: Starting Spark master at spark://mymaster:7077
    

    그런 다음 마스터에 연결할 때 IP 주소를 사용하지 말고 위의 로그에있는 것과 정확히 동일한 호스트 이름을 사용해야합니다.

    .setMaster("spark://mymaster:7077"));
    

    독립 실행 형 스파크는이 호스트 이름 / IP 항목에 약간 까다 롭습니다.

  2. ==============================

    2.쉘 명령 "sbin / start-master.sh"를 사용하여 Spark 마스터를 생성 할 때. http : // localhost : 8080 주소로 이동하여 "URL"행을 확인하십시오.

    쉘 명령 "sbin / start-master.sh"를 사용하여 Spark 마스터를 생성 할 때. http : // localhost : 8080 주소로 이동하여 "URL"행을 확인하십시오.

  3. ==============================

    3.나는 받아 들여지지 않은 대답을 알아 차렸다. 정보를 위해서 나는 두 가지를 언급 ​​할 것이라고 생각했다.

    나는 받아 들여지지 않은 대답을 알아 차렸다. 정보를 위해서 나는 두 가지를 언급 ​​할 것이라고 생각했다.

    먼저 conf 디렉토리의 spark-env.sh 파일에서 SPARK_MASTER_IP 및 SPARK_LOCAL_IP 설정을 호스트 이름으로 지정할 수 있습니다. 당신은 그 (것)들이되고 싶지 않다, 그러나 일 수있다.

    다른 답변에서 언급했듯이, 해결 된 버그 / 기능으로 인해 Spark는 호스트 이름과 IP 주소에 대해 약간 까다 롭습니다. 여기 버그를 참조하십시오. 문제는 "해결"되었는지 여부가 단순히 호스트 이름 대신 IP를 사용한다는 것입니다.

    지금 당장이 똑같은 문제가 생기고, 가장 먼저해야 할 일은 기본 사항을 확인하는 것입니다.

    Spark master가 실행중인 상자에 ping을 수행 할 수 있습니까? 당신은 주인에게서 노동자를 ping 할 수 있습니까? 더 중요한 것은 마스터 박스에서 작업자에게 암호가없는 ssh를 사용할 수 있습니까? 1.5.2 문서 당 개인 키를 사용하여 작업자가 conf / slaves 파일에 입력 할 수 있어야합니다. 나는 관련 단락을 끝에 복사했습니다.

    작업자가 마스터에게 연락 할 수 있지만 마스터는 다시 연결할 수 없으므로 아무런 연결이없는 것처럼 보일 수 있습니다. 양방향을 확인하십시오.

    마지막으로 제한된 실험에서 모든 설정 조합을 마침내 발견했습니다. 마스터에서는 spark-env.sh에서 SPARK_MASTER_IP를 호스트 이름이 아닌 IP 주소로 설정합니다. 그런 다음 작업자의 연결을 spark : //192.168.0.10 : 7077로 연결하고 연결합니다! 다른 config 매개 변수는 여기에 필요하지 않은 것 같습니다.

    다음은 conf의 ssh 및 slaves 파일에 관한 문서의 단락입니다.

    일단 IP 주소를 사용하면 코드에서 작동합니다. 저희에게 알려주십시오! 이것은 성가신 문제 일 수 있으며 대부분의 구성 매개 변수가 중요하지 않다는 것을 배우는 것이 좋습니다.

  4. from https://stackoverflow.com/questions/28453835/apache-spark-error-could-not-connect-to-akka-tcp-sparkmaster by cc-by-sa and MIT license