ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spark Cluster 구축 (Standalone Mode)
    Open Source/Spark 2021. 9. 14. 22:54
    반응형

    spark 을 사용하다가 클러스터를 구축 할 때 반복작업들이 존재하기 때문에 해당 내용을 기록합니다.

    아래 설치 명령어는 centos7 서버 기준(root 계정 사용)이기 때문에, ubuntu, macOS, windows 에서는 다를 수 있습니다.

    1. 모든 노드 공통

    • 먼저 OS 에 디펜던시를 설치한다.
      • python3
      • java
    • 각 버전은 사용자 환경에 맞게 설치한다.
    • 여기에서는 python 3.6, java 1.8, spark 2.4.4 를 설치한다.

    1.1. hostname 설정

    echo "x.x.x.1    spark-master" >> /etc/hosts
    echo "x.x.x.2    spark-slave01" >> /etc/hosts
    echo "x.x.x.3    spark-slave02" >> /etc/hosts

    1.2. python 설치

    yum install -y gcc openssl-devel bzip2-devel libffi-devel
    curl -O https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
    tar -xzf Python-3.6.8.tgz
    cd Python-3.6.8/
    ./configure --enable-optimizations
    make altinstall
    which python3.6
    rm /usr/bin/python
    ln -s /usr/local/bin/python3.6 /usr/bin/python

    1.3. java 설치

    yum update -y
    yum install -y java-1.8.0-openjdk-devel
    
    echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64" >> /root/.bash_profile
    echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /root/.bash_profile
    
    # 환경변수 세팅 실행
    source /root/.bash_profile

    1.4. spark 설치

    curl -O https://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz
    tar zxvf spark-2.4.4-bin-hadoop2.7.tgz
    ln -s spark-2.4.4-bin-hadoop2.7 spark
    echo "export SPARK_HOME=/root/spark" >> /root/.bash_profile
    echo "export PATH=\$PATH:\$SPARK_HOME/bin" >> /root/.bash_profile
    
    # 환경변수 세팅 실행
    source /root/.bash_profile

    1.4.1. spark slave 설정

    cp $SPARK_HOME/conf/slaves.template $SPARK_HOME/conf/slaves
    echo "spark-slave01" >> $SPARK_HOME/conf/slaves
    echo "spark-slave02" >> $SPARK_HOME/conf/slaves

    1.4.2. spark defaults / env 설정 (optional)

    # spark defaults 설정
    cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.master                     spark://spark-master:7077" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.eventLog.enabled           true" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.eventLog.dir               file:///tmp/spark/event-log" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.serializer                 org.apache.spark.serializer.KryoSerializer" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.executor.logs.rolling.maxRetainedFiles    10" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.executor.logs.rolling.strategy            time" >> $SPARK_HOME/conf/spark-defaults.conf
    echo "spark.executor.logs.rolling.time.interval       daily" >> $SPARK_HOME/conf/spark-defaults.conf
    
    # spark env 설정
    cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
    echo "export SPARK_LOG_DIR=/tmp/logs" >> $SPARK_HOME/conf/spark-env.sh

    2. master 노드 설정

    ssh-keygen -t rsa
    
    ~/.ssh/id_rsa.pub spark-slave01:/root/.ssh/
    ~/.ssh/id_rsa.pub spark-slave02:/root/.ssh/

    3. slave 노드 설정

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    4. spark cluster 실행

    • 마스터노드에서 실행
    $SPARK_HOME/sbin/start-all.sh

    5. 만약 slave 노드를 하나 더 추가한다면?

    • 모든 노드 공통의 설치 작업을 진행한다.
    • slave 노드의 설정을 진행한다.
    • 추가한 slave 노드에서 아래 와 같이 실행한다. 
    $SPARK_HOME/sbin/start-slave.sh spark-master

    반응형

    댓글

Designed by Tistory.