반응형
CDH 5.1.0 Documentation
Running Spark Application을 발번역한 내요입니다
전체적인 흐름을 잡는데 이용해주세요
- spark 클러스터 매니저 타입 3가지 정리
http://paranwater.tistory.com/414
*Spark 응용프로그램 실행 (Running Spark Applications)
Spark 어플리케이션은 맵리듀스와 job과 유사합니다
각 어플리케이션은 사용자가 제공한 코드를 실행해 결과를 연산하는 self-contained(독립형) computation입니다
맵리듀스 작업과 마찬가지로 Spark 어플리케이션은 여러 노드의 자원을 사용할 수 있습니다
각 어플리케이션은 실행을 조정하는 드라이 버프로세스를 가지고 있습니다
이 프로세스는 foreground(client mode) or background(cluster mode)에서 실행할 수 있습니다.
Client모드는 좀 더 간단하지만 Cluster모드를 사용하면 어플리케이션을 쉽게 종료하지 못합니다
Spark 어플리케이션을 실행한 후 로그아웃 할 수 있습니다
Spark는 계산을 실행하는 executors를 실행합니다
많은 executors는 작업 크기에 따라 클러스터에 분산됩니다
Spark는 두가지 모드에서 실행할 수 있습니다
Standalone mode :
독림보드에서 , Spark는 worker의 노력을 조정하는 master데몬을 사용하여 executors프로그램을 실행합니다
독립모드는 기본으로 secure clusters모드를 사용할 수 없습니다
YARN mode:
YARN모드에서, YARN은 ResourceManager는 Spark master기능을 수행합니다 worker의 기능은 YARN NodeManager의 데본에 의해 executors를 실행합니다
YANR모드는 조금더 복잡한 설정을 하지만 보안을 지원하고 YARN의 cluster-wide(전체 클러스터) 더 나은 통합 지원관리 정책을 제공합니다
여러 Spark어플리케이션은 한번에 실행할 수 있습니다
Spark on YARN에서 실행하는 경우 YARN client mode나 cluster mode를 선택하는 기준은 application-by-application에 기초하여 결정할 수 있습니
다
Client mode에서 Spark를 실행하면 드라이버 프로세스는 로컬에서 실행됩니다
cluster mode에서 실행하면 ApplicationMaster에서 원격으로 실행 됩니다
다음절에서는 샘플 응용프로그램을 사용하여 SparkPi, Spark와 함께 PI패키지로 값을 계산하는 세가지 모드를 설명합니다
* 설정 (Configuration)
Spark를 구성하는 가장 쉬운 방법은 $SPARK_HOME/conf/spark-defaults.conf를 설정하는 것입니다
이 파일은 "key value"형태로 라인에 포함되어 있습니다
line시작 부분에 해시기호 (#)을 넣어 주석을 작상 할수 있습니다
참고 : 끝이나 줄의 중간에 주석을 추가 할 수 없습니다.
다음은 Spark의 defaults.conf 파일의 예입니다
spark.master spark://mysparkmaster.cloudera.com:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs:///user/spark/eventlog # Set spark executor memory spark.executor.memory 2g spark.logConf true
Spark의 default.conf에 보든 응용프로그램에서 사용할 설정 키(값)를 넣는 것이 좋습니다
설정키에 대한 자세한 내용은 스크립트를 참조사세요
스크립트 (Spark configuration) : http://spark.apache.org/docs/1.0.0/configuration.html
* Spark-Submit 스크립트 (The Spark-Submit Script)
Spark-submit을 이용하여 Spark 어플리케이션을 시작할 수 있습니다
spark-core 패키지를 설치한 경로에 있습니다
참고 : Spark는 --key=value;이런 옵션을 처리할 수 없습니다 --key value이렇게 사용하세요 (즉 기호대신 공백을 사용합니다)
spark-submit을 실행하려면 컴파일된 Spark JAR 어플리케이션이 필요합니다
다음 섹션에서 Spark와 함께 제공되는 샘플 JAR, SparkPi를 이용합니다
이것은 Pi의 근사치를 계산합니다
* 독립모드에서 SparkPi를 실행 (Running SparkPi in Standalone Mode)
제공된 --master과 --deploy-mode의 클라이언트 arguments는 독립모드로 SparkPi를 실행합니다
spark-submit \ --class org.apache.spark.examples.SparkPi \ --deploy-mode client \ --master spark//$SPARK_MASTER_IP:$SPARK_MASTER_PORT \ $SPARK_HOME/examples/*/scala-*/spark-examples-*.jar 10
JAR이름의 다음에 오는 arguments가 어플리케이션에 공급됩니다
이 경우 argument는 Pi에대한 근사치가 되도록 잘 제어합니다
* YARN client mode에서 SparkPi를 실행 (Running SparkPi in YARN Client Mode)
다음과 같이 SparkPi를 실행하는 명령은 다음과 같습니다
spark-submit \ --class org.apache.spark.examples.SparkPi \ --deploy-mode client \ --master yarn \ $SPARK_HOME/examples/*/scala-*/spark-examples-*.jar 10
* YARN cluster mode에서 SparkPi 실행 (Running SparkPi in YARN Cluster Mode)
다음과 같이 SparkPi를 실행하는 명령은 다음과 같습니다
spark-submit \ --class org.apache.spark.examples.SparkPi \ --deploy-mode cluster \ --master yarn \ $SPARK_HOME/examples/*/scala-*/spark-examples-*.jar 10
이 명령은 job이 완료될때까지 상태를 표시합니다 표시를 중지하려면 control-C를 누릅니다
client모드에서와 같이 cluster모드도 spark-submit 프로세스를 종료해도 어플리케이션은 종료되지 않습니다
실행중인 어플리케이션의 상태를 모니터링 하기 위해
"yarn application -list" 를 실행합니다
* YARN 최적화 모드 (Optimizing YARN Mode)
일반적으로 다음 로그처럼 spark-submit할때마다 Spark assembly JAR 파일을 HDFS에 복사합니다
14/06/11 14:21:49 INFO yarn.Client: Uploading file:/home/cmccabe/spark/b2.4/examples/target/scala-2.10/spark-examples-1.0.0-SNAPSHOT-hadoop2.4.0.jar to hdfs://a2402.halxg.cloudera.com:6000/user/cmccabe/.sparkStaging/application_1402278226964_0012/spark-examples-1.0.0-SNAPSHOT-hadoop2.4.0.jar 14/06/11 14:21:50 INFO yarn.Client: Uploading file:/home/cmccabe/spark/b2.4/assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop2.4.0.jar to hdfs://a2402.halxg.cloudera.com:6000/user/cmccabe/.sparkStaging/application_1402278226964_0012/spark-assembly-1.0.0-SNAPSHOT-hadoop2.4.0.jar
수동으로 HDFS에 Spark assembly JAR파일을 업로드하여 매번 복사되는 일을 방지할 수 있습니다
그런다음 HDFS경로에 SPARK_JAR환경 변수를 설정합니다
hdfs dfs -mkdir -p /user/spark/share/lib hdfs dfs -put $SPARK_HOME/assembly/lib/spark-assembly_*.jar \ /user/spark/share/lib/spark-assembly.jar SPARK_JAR=hdfs://<nn>:<port>/user/spark/share/lib/spark-assembly.jar
참고 : 클라우데라 매니저를 사용하는 경우 Spark assembly jar파일은 자동적으로 HDFS에 업로드 됩니다 (/user/spark/share/lib/spark-assembly.jar)
* Building Spark Applications (Building Spark Applications)
가 장좋은 방법은 Spark 어플리케이션을 컴파일에 포함합는 것입니
다
Spark와 Hadoop을 위한 경우를 제외하 고모든 dependencies를 포함하는 단일 assembly JAR을 Building합니다
aeembly JAR할때 Spark와 Hadoop은 제외한다 이미 cluster 및 런타임 class path에 있기 때문이다
메이븐에서는 명시된 Spark와 Hadoop의 종속을 표시할 수 있습니다
항상 호환성 문제를 방지하기 위해 실행하는 Spark버전과 같은 버전으로 building합니다
예를 들어 Spark 0.9에서 컴파일된 어플리케이션은 1.0에서 실행 안될 수 있습니다
Spark 0.9또는 그 이전에 컴파일된 일부 어플리케이션은 Spark 1.0에서 소스코드를 변경해야 합니다 Spark 1.0에서 컴파일한 어플리케이션은 이래의 모든보전에서 다 시컴파일 해야 합니다
반응형
'보물창고 > Big Data' 카테고리의 다른 글
윈도우 하둡 종류 정리 [window hadoop] (0) | 2014.10.23 |
---|---|
윈도우 하둡 window hadoop HDInsight Azure 압축 호환에 관련된 글 (Gzip, Bzip2, LZO, LZ4, snappy) (0) | 2014.10.21 |
[발번역] Apache Spark 리소스 매니지먼트와 YARN App 모델 (Apache Spark Resource Management and YARN App Models) (0) | 2014.07.25 |
Spark WordCount 데이터 마다 주석(파악 중) (0) | 2014.07.24 |
Spark Cluster Manager Types (스파크 클러스터 매니저 타입 3종류 번역) (0) | 2014.07.22 |
Spark 스터디 하둡에코 (hadoop) (0) | 2014.07.10 |
Hortonworks 샌드박스에 있는 Ambari 관련 내용 번역 입니다 (sandbox) (0) | 2013.05.06 |
hiveserver2 client 내용 정리 beeline (0) | 2013.05.06 |