기존 spark stand alone 클러스터 세팅에서 아래 정도만 신경 쓰면 설치가 완료 된다.
- 환경변수 세팅
- 기존 Hadoop 환경변수는 세팅되어 있다고 가정
- HADOOP_CONF_DIR 라인을 Copy 하여 YARN_CONF_DIR추가(모든 Node 에서)
- Spark.local.dir 관련 폴더 생성
- 모든 노드에 Disk 파티션이 큰 영역에 별도의 spark local dir 폴더 생성.
- 이것을 정의 하지 않으면, /tmp 가 차올라서 disk full 이 되기 십상이다.
- mkdir /data02/spark_tmp/
- spark.local.dir 관련 set 은 SparkConf().setAppName("AppName").set("","") 메소드를 이용.(프로그램 내부에서 정의 함. 물론 실행 시점이나, 글로벌 conf 파일에서 정의 할수도 있긴 하지만...)
- Mode 선정
- spark + yarn 모드는 두가지 모드가 있으며 아래와 같은 특징이 있다.
- yarn cluster mode
- job이 중앙에서 구동되는 방식이다. 좀더 Yarn 의 리소스에 의존하여 구동되는 느낌이다.
- scala 소스 내에 println 을 넣으면, spark-submit 을 한 콘솔에 출력되지 않고, hadoop의 yarn Job 관리 UI 에서 stdout Log 를 통해 확인할 수 있다.
- 위 그림은 println 한 결과 출력 창이다. (MapReduce UI)
- yarn client mode
- 특정 client 에서 spark-submit 을 날리면, 해당 머신에서 main 클래스가 구동되는 듯 하다. 물론 실제 잘게 쪼개진 sub task 들은 yarn 위에서 구동된다.
- 때문에, yarn cluster mode 와 달리, println 을 하면, 수행시킨 Console 에서 결과가 stdout 으로 바로 보여진다.
- 잘게 쪼깨진 sub task 만 yarn 에의해 관리되는것 같다.
- 동작방식이 mesos cluster 위에서 spark job 을 구동했을때와 매우 흡사해 보인다.
- 위 그림은 println 한 결과 출력 창이다. (수행 Console )
구동을 하면 아래처럼 Yarn 의 Job 관리 UI 에서 수행 상태를 확인 할 수 있다. 이러한 Job UI 자체는 Mesos나 Spark Stand Alone Cluster 의 그것에 비하여 좀 기능이 떨어진다. Application Type 이 MapReduce 인 경우 MAPREDUCE 라고 보이는 반면 Spark Job 은 SPARK 라고 보여 진다.
댓글 없음:
댓글 쓰기