보물창고/Big Data2014.07.23 21:00







CDH 5.1.0 Documentation

Running Spark Application을 발번역한 내요입니다


전체적인 흐름을 잡는데 이용해주세요


http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/cdh5ig_running_spark_apps.html










*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에서 컴파일한 어플리케이션은 이래의 모든보전에서 다 시컴파일 해야 합니다


신고





Posted by 파란물
보물창고/Programming2011.07.06 00:26








 jsp를 사용한 웹 프로그래밍에서 제리코파서를 사용하기위한 방법입니다


 
 이클립스에서 제리코 파서를 이용해서 일반 java프로그래밍을 할 땐 프로젝트->properties->Java Build Path에서 Libraries에 jericho-html-3.2.jar을 추가해 코딩을 하게 됩니다

그러나 jsp를 이용한 웹 프로그래밍을 할땐 위와 같은 방법으로 제리코파서를 사용할 수 없습니다

처음에는 빌드 패스에 추가된 jar파일을 찾지못하고 클래스가 없다는 오류만 내는지 이유를 알지못해 한참을 고생했습니다 아무리 검색해도 답이 안나오고 전체적인 구성을 제대로 알지못하고 막무가네로 코딩부터 하다보니 마땅히 해결책도 찾지 못하고 있다가 지인에게 물어보고 바로 해결 했습니다


 jsp실행시 제리코파서 클래스를 찾지 못한다는 이클립스오류
 

 java.lang.ClassNotFoundException: net.htmlparser.jericho.Source  
 






톰캣의 라이브러리에 jericho-html-3.2.jar 파일을 추가하면서 해결했습니다
 
 
apache-tomcat-6.0.32\lib
 

폴더 안에 "jericho-html-3.2.jar"  파일을 추가  

 

lib폴더에 jar파일을 추가하고 이클립스에서 톰캣을 다시 실행하면 제리코 파서를 사용할 수 있습니다

신고





Posted by 파란물

티스토리 툴바