Spark를 설치하고 Mesos 클러스터와 소통을 확인하기 전의 단계

개요



Spark를 설치하여 Mesos 클러스터와의 통신을 확인합니다.
상당히 마치므로 메모로 남겨 둡니다.

Mesos 클러스터는 이전에 작성한 다음 기사의 것을 사용하므로 참고하십시오.

[Mesos를 쉽게 설치]
htps : // 이 m/48 땜 ds/이고 ms/5d17372b81b1923b16 아7
  • Mesos 1.5.0 클러스터
  • node1: Mesos 마스터
  • node2, node3, node4 : Meos 슬레이브

  • Spark 2.3.0
  • node1~node4의 Mesos 클러스터를 구성하는 모든 시스템에 설치합니다.


  • ※각 머신의 OS는 CentOS7입니다. 또한 각 기계의 메모리는 2GB 이상을 원합니다. 메모리가 적으면 Spark를 실행할 수 없습니다.

    사전 준비



    Java 설치



    Spark는 JVM에서 실행되므로 Java를 Mesos 클러스터를 구성하는 모든 시스템 ( node1 , node2 , node3 , node4 )에 Java를 설치하십시오.
    sudo yum install -y java-1.8.0-openjdk
    

    Spark 설치



    Spark2.3.0 다운로드



    Spark 설치도 Mesos 클러스터를 구축하는 모든 시스템에서 수행해야 합니다.
    cd ~
    curl -O http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz
    sudo tar xvfz spark-2.3.0-bin-hadoop2.7.tgz -C /opt/
    

    spark-env.sh 설정



    이 설정은 Mesos 클러스터를 구축하는 모든 시스템에서도 수행해야 합니다.
    /opt/spark-2.3.0-bin-hadoop2.7/conf/spark-env.sh 를 각 기계에서 다음과 같이 설정하십시오.

    /opt/spark-2.3.0-bin-hadoop2.7/conf/spark-env.sh
    MESOS_NATIVE_JAVA_LIBRARY=/usr/lib/libmesos.so
    SPARK_LOCAL_IP=各自のIPアドレス
    LIBPROCESS_IP=各自のIPアドレス
    
    # 以下の2行は十分なメモリリソースがあれば不要
    # 今回はメモリリソースが2GBぐらいしかないので仕方なく設定しています。
    SPARK_DRIVER_MEMORY=512M
    SPARK_DAEMON_MEMORY=256M
    

    SPARK_HOME 설정



    이 설정은 Mesos 마스터 (필자의 환경이라면 node1)만으로 괜찮습니다.
    Spark를 실행하는 사용자의 환경 변수로 설정합니다.
    echo 'export SPARK_HOME=/opt/spark-2.3.0-bin-hadoop2.7' >> ~/.bash_profile
    source ~/.bash_profile
    

    이 설정에 의해, Spark의 분산 실행처(Mesos 슬레이브측)에서 SPARK_HOME 가 환경 변수로서 설정되어 있지 않아도, /opt/spark-2.3.0-bin-hadoop2.7 를 디폴트로 참조해 주는 것 같습니다.

    spark-shell에서 Mesos에서 분산 처리할 수 있는지 확인


    spark-shell 를 Mesos 상에서 움직여 확인한다.

    매개변수이지만, 자세하게 설명하면,
    executor-memory 는 Mesos Slave 측에서 Spark의 분산 처리 실행을 위해 할당하는 메모리 (당연히 Mesos 자원을 초과하는 것은 NG).total-executor-cores는 Spark 작업을 처리하는 데 필요한 전체 클러스터의 코어 수를 나타냅니다.
    $SPARK_HOME/bin/spark-shell \ 
    --master mesos://MesosマスタのIP:5050 \ 
    --executor-memory 512M \ 
    --total-executor-cores 3
    
    ...
    spark context Web UI available at http://192.168.33.41:4040
    Spark context available as 'sc' (master = mesos://192.168.33.41:5050, app id = 54c5ee8e-cd99-408a-b815-2c62c9f3fbb0-0011).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.3.0
          /_/
    
    Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_171)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> sc.parallelize(1 to 10000,30).sum
    res1: Double = 5.0005E7
    

    계산할 수 있으면 OK!sc.parallelize(1 to 10000,30).sum 의 부분은 1에서 10000까지의 자연수의 합계를 계산하는 처리를 30분할로 분산 실행한다고 하는 의미가 됩니다.

    UI도 다음과 같이 되어 있으면 OK!

    [Mesos UI]
    http://Mesos 마스터의 IP:5050



    [Spark WebUI]
    http://Mesos 마스터의 IP:4040



    샘플 JAR 앱 실행



    부속의 JAR 샘플 앱으로 원주율 계산을 실행할 수 있을지도 염려 때문에 확인해 둡니다. 로그가 어떻게 출력되지만, 도중에 그와 같은 값을 확인할 수 있어야합니다.
    $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master mesos://MesosマスタのIP:5050 \
    --executor-memory 512M
    --deploy-mode client \
    $SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar \
    1000
    
    
    ...
    
    Pi is roughly 3.1417888714178885
    ...
    

    이상, Spark를 인스톨하고 Mesos 클러스터에서 간단하게 동작시켜 확인하기까지의 순서였습니다.

    좋은 웹페이지 즐겨찾기