2015년 1월 29일 목요일

Spark Upgrade 및 성능 비교 - Spark 1.1.0 vs Spark 1.2.0 ( on Apache Mesos )

Spark 1.1.0 이 작년 9월 경 버전업 된 이후로 1.1.1 업그레이드가 한번 더 있었고, 1.2.0 업그레이드도 최근에 있었다. Apache Mesos 와의 연동 작업도 세팅할 겸. Production 의 Spark 버전을 업그레이드 해 주었으며, 업그레이드 전 후 성능 비교도 해 보았다.
  1. Spark Download
    1. wget http://mirror.apache-kr.org/spark/spark-1.2.0/spark-1.2.0-bin-hadoop1.tgz
    2. tar xvzf spark-1.2.0-bin-hadoop1.tgz
  2. Library Upload
    1. hadoop dfs -mkdir /user/spark
    2. hadoop dfs -put ./spark-1.2.0-bin-hadoop1 /user/spark/
  3. Apache Mesos 설치
    1. Apache Mesos 설치는 [Apache Mesos 설치기] 요기에서....
  4. Config Setting on Master
    1. mv spark-env.sh.template spark-env.sh
    2. vi spark-env.sh

      MESOS_NATIVE_LIBRARY=/data01/mesos/mesos-0.18.1/build/src/.libs/libmesos.so

      SPARK_EXECUTOR_URI=hdfs://master001.prod.moneymall.ssgbi.com:9000/user/spark/spark-1.2.0-bin-hadoop1.tgz
    3. vi spark-defaults.conf
      spark.executor.uri              hdfs://master001.prod.moneymall.ssgbi.com:9000/user/spark/spark-1.2.0-bin-hadoop1.tgz
  5. Spark Shell 실행
    1. 먼저 shell 모드 실행
    2. 위 처럼 1.2.0 버전으로 잘 떳음...
  6. Spark Program 구동
    1. 이어서 기존에 1.1.0 에서 돌던 Scala Batch 프로그램을 1.2.0 에서 수행하기 위해 위 처럼 인자를 바꾸고 수행.
    2. executor memory 와 driver memory 값을 적절하게 주어야 Heavy 한 Batch Job 이 원할하게 수행 됨. 속도도 더 빨라 짐.
  7. Spark 1.1.0 수행 속도 : 61초 
  8. Spark 1.2.0 ( on Apache Mesos ) 수행 속도 : 35초
  9. Spark 1.2.0 on Apache Mesos 업그레이드 고찰
    (1)   기존 JVM Spark 엔진은 설정 공유 메모리 만큼 JVM 데몬이 메모리를 점유 하고 있어서, Hadoop Job Memory 경합이 있을 수 있음. 경합을 피하기 위해 OS Full Memory 를 쓰지 못하고, 보수적으로 Fix 점유 해놓은 메모리 만큼 만 공유하는 구조였음.
    Ø  바뀐 Mesos C++ 엔진인지라, 별도로 Memory 할당이 필요 없고, OS 가 가지고 있는 물리 Memory Full 로 쓸 수 있음.
    Ø  공유 메모리 Pool 56G 에서 약 280G 정도로 5배 가까이 커짐.
    (2)   속도 향상.
    Ø  Memory 공유 방식 뿐만 아니라 CPU 공유 메커니즘도 포함 되면서, 위 결과 처럼 약 1.8배의 속도 향상이 있었음.

댓글 없음:

댓글 쓰기