Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
1. 다운로드/설치/설정
2. zookeeper를 이용한 HA로 실행(방법1, 별도의 파일에 HA정보를 설정하는 방법)
가. ./conf/ha.conf파일을 생성하고 다음의 내용을 추가한다.(master로 사용되는 서버에 모두 있어야함)
spark.deploy.recoveryMode=ZOOKEEPER
spark.deploy.zookeeper.url=gsda1:2181,gsda2:2181,gsda3:2181
spark.deploy.zookeeper.dir=/spark
나. master실행(master로 사용되는 각 서버에서 실행, 2개서버) :
./sbin/start-master.sh -h gsda1 -p 7077 --webui-port 8123 --properties-file ./conf/ha.conf
./sbin/start-master.sh -h gsda2 -p 7077 --webui-port 8123 --properties-file ./conf/ha.conf
다. slave실행(slave로 사용되는 각 서버에서 실행)
./sbin/start-slave.sh spark://gsda1:7077,gsda2:7077
라. spark-shell실행
./bin/spark-shell --master spark://gsda1:7077,gsda2:7077
* zookeeper의 zlCli.sh를 실행해서 "ls /"을 명령을 주면 znode중에 "spark"를 확인할 수 있다.
3. zookeeper를 이용한 HA로 실행(방법2, spark-env.sh에 HA정보를 설정하는 방법)
가. ./conf/spark-env.sh에 다음의 내용을 추가함
export SPARK_MASTER_WEBUI_PORT=8123
export SPARK_LOG_DIR=/logs/spark
export SPARK_SSH_OPTS=" -p 22 "
export STANDALONE_SPARK_MASTER_HOST=gsda1,gsda2
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=gsda1:2181,gsda2:2181,gsda3:2181"
나. ./sbin/start-all.sh을 실행한다.(master와 slave들이 실행된다)
다. 2번째 master서버에서 다음을 실행한다.(standby모드로 기동함)
./sbin/start-master.sh을 실행하면 conf정보를 참조하여 기동한다.
* 확인방법 : http://gsda1:8123/ 하면 status가 alive, http://gsda2:8123/ 하면 status가 standby로 표시된다.
4. HA 작동여부 확인방법
가. master2서버에서 http://gsda2:8123로 status가 standby상태인지 확인한다
나. master1서버에서 ./sbin/stop-master.sh로 master를 중지한다.
다. master2서버에서 http://gsda2:8123를 실행하여 Workers목록이 모두 표시되고 status가 standby->Alive로 변경되는지 확인한다.
5. spark master가 다운되었을때 다시 기동하도록 하는 방법
- spark-env.sh에 다음과 같은 라인을 추가한다.
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/spark/recovery"
* recoveryMode를 FILESYSTEM으로 하면 recoveryDirectory에 recovery정보를 저장하고 있다가 master가 다운되면 master만 다시 기동해주는 형태로 복구를 수행한다.