복붙노트

[HADOOP] Spark : 클러스터 UI를 확인하여 근로자가 등록되었는지 확인하십시오.

HADOOP

Spark : 클러스터 UI를 확인하여 근로자가 등록되었는지 확인하십시오.

나는 Spark에서 간단한 프로그램을 가지고있다.

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("spark://10.250.7.117:7077").setAppName("Simple Application").set("spark.cores.max","2")
    val sc = new SparkContext(conf)    
    val ratingsFile = sc.textFile("hdfs://hostname:8020/user/hdfs/mydata/movieLens/ds_small/ratings.csv")

    //first get the first 10 records 
    println("Getting the first 10 records: ")
    ratingsFile.take(10)    

    //get the number of records in the movie ratings file
    println("The number of records in the movie list are : ")
    ratingsFile.count() 
  }
}

스파크 쉘에서이 프로그램을 실행하려고하면 즉, 이름 노드 (Cloudera 설치)에 로그인하고 spark-shell에서 명령을 순차적으로 실행합니다.

val ratingsFile = sc.textFile("hdfs://hostname:8020/user/hdfs/mydata/movieLens/ds_small/ratings.csv")
println("Getting the first 10 records: ")
ratingsFile.take(10)    
println("The number of records in the movie list are : ")
ratingsFile.count() 

올바른 결과를 얻을 수 있지만 이클립스에서 프로그램을 실행하려고하면 리소스가 프로그램에 할당되지 않고 콘솔 로그에 모두 표시됩니다.

WARN TaskSchedulerImpl : 초기 작업이 모든 리소스를 수락하지 않았습니다. 작업자가 등록되어 충분한 자원을 보유하고 있는지 확인하려면 클러스터 UI를 확인하십시오

또한, 스파크 UI에서, 나는 이것을 본다 :

작업 계속 실행 - 스파크

또한이 버전의 스파크는 Cloudera와 함께 설치되었습니다 (따라서 작업자 노드가 표시되지 않음).

이 작업을하려면 어떻게해야합니까?

편집하다:

HistoryServer를 확인한 결과 이러한 작업이 표시되지 않습니다 (불완전한 응용 프로그램에서도)

해결법

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

    1.많은 스파크 클러스터에 대한 구성 및 성능 튜닝을 수행했으며 이는 작업 부하를 처리하기 위해 클러스터를 처음으로 준비 / 구성하는시기를 확인하는 매우 일반적인 / 일반적인 메시지입니다.

    많은 스파크 클러스터에 대한 구성 및 성능 튜닝을 수행했으며 이는 작업 부하를 처리하기 위해 클러스터를 처음으로 준비 / 구성하는시기를 확인하는 매우 일반적인 / 일반적인 메시지입니다.

    이것은 일을 시작하기에 불충분 한 자원으로 인한 것입니다. 작업에서 다음 중 하나를 요청하고 있습니다.

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

    2.마지막으로 대답이 무엇인지 알아 냈습니다.

    마지막으로 대답이 무엇인지 알아 냈습니다.

    YARN 클러스터에 스파크 프로그램을 배포 할 때 마스터 URL은 단지 원사입니다.

    따라서 프로그램에서 스파크 컨텍스트는 다음과 같아야합니다.

    val conf = new SparkConf().setAppName("SimpleApp")
    

    그런 다음이 이클립스 프로젝트는 Maven을 사용하여 빌드해야하며 생성 된 jar는 클러스터에 복사 한 후 다음 명령을 실행하여 클러스터에 전개해야한다.

    spark-submit --master yarn --class "SimpleApp" Recommender_2-0.0.1-SNAPSHOT.jar
    

    이것은 일식에서 직접 실행하는 것은 작동하지 않는다는 것을 의미합니다.

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

    3.클러스터의 작업 노드 코어를 확인할 수 있습니다. 응용 프로그램이이를 초과 할 수 없습니다. 예를 들어 두 개의 작업 노드가 있습니다. 그리고 작업 노드 당 4 개의 코어가 있습니다. 그런 다음 2 개의 응용 프로그램을 실행할 수 있습니다. 따라서 모든 응용 프로그램에 4 개의 코어를 할당하여 작업을 실행할 수 있습니다.

    클러스터의 작업 노드 코어를 확인할 수 있습니다. 응용 프로그램이이를 초과 할 수 없습니다. 예를 들어 두 개의 작업 노드가 있습니다. 그리고 작업 노드 당 4 개의 코어가 있습니다. 그런 다음 2 개의 응용 프로그램을 실행할 수 있습니다. 따라서 모든 응용 프로그램에 4 개의 코어를 할당하여 작업을 실행할 수 있습니다.

    코드에서 다음과 같이 설정할 수 있습니다.

    SparkConf sparkConf = new SparkConf().setAppName("JianSheJieDuan")
                              .set("spark.cores.max", "4");
    

    그것은 나를 위해 작동합니다.

  4. ==============================

    4.여기에 게시 된 것과 다른 오류 메시지의 원인도 있습니다.

    여기에 게시 된 것과 다른 오류 메시지의 원인도 있습니다.

    spark-on-mesos 클러스터의 경우, mesos 슬레이브에 java8 이상의 java 버전이 있는지 확인하십시오.

    독립 실행 형 스파크의 경우 작업자에게 java8 이상이 설치되어 있는지 확인하십시오.

  5. ==============================

    5.직업을 수행 할 노동자가 없습니다. 작업을 실행할 수있는 코어가 없기 때문에 작업 상태가 '대기 중'에 남아있는 이유입니다.

    직업을 수행 할 노동자가 없습니다. 작업을 실행할 수있는 코어가 없기 때문에 작업 상태가 '대기 중'에 남아있는 이유입니다.

    Cloudera에 등록 된 근로자가없는 경우 어떻게 일이 수행됩니까?

  6. from https://stackoverflow.com/questions/35662596/spark-check-your-cluster-ui-to-ensure-that-workers-are-registered by cc-by-sa and MIT license