Spark 3 버전 사용
    • PDF

    Spark 3 버전 사용

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    사용자가 임의의 Spark 실행 환경을 구성할 수 있습니다.

    이 가이드에서는 Cloud Hadoop에서 Spark 3 버전을 설치하여 Spark 실행 환경을 구성하는 방법을 소개합니다.

    사전 작업

    이 예제는 이미 클라이언트로 적용된 환경에서 실행한다고 가정하에 설명합니다.
    서버를 이용하여 클라이언트로 구성해야 하는 경우에만 아래 사전 작업 1~4번을 진행해 주십시오.

    1. 서버와 클러스터 간의 통신 확인

    서버와 클러스터 간의 통신이 가능한지 확인해 주십시오.
    서버가 Cloud Hadoop 클러스터가 구성되어 있는 ACG에 등록되어야 합니다.
    ACG에 대한 자세한 내용은 ACG 설정 가이드를 참조해 주십시오.

    2. Cloud Hadoop 클러스터 호스트명과 IP 정보 등록

    Cloud Hadoop 클러스터의 호스트명과 Private IP 정보를 /etc/hosts에 등록해 주십시오.
    해당 정보는 Ambari UI > Hosts에서 확인할 수 있습니다.

    • Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI 가이드를 참조해 주십시오.
      hadoop-chadoop-use-ex2_0-1_ko
    • /etc/hosts에 Cloud Hadoop 클러스터의 호스트명과 Private IP 정보를 등록하는 방법은 아래와 같습니다.
    # root 사용자
    # echo 'IP            호스트명'      >> /etc/hosts
    echo  '1**.**.*.*  e-001-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  m-001-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  m-002-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  d-001-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  d-002-*****-**'  >> /etc/hosts
    

    3. Hadoop 클라이언트 구성

    참고

    Hadoop 클라이언트 패키지는 이미 클러스터 내 모든 노드에 설치되어 있습니다.
    만약 설치되어 있지 않은 경우, 아래의 절차를 통해 설치해 주십시오.

    Spark에서는 Hadoop의 환경 변수를 사용하기 때문에 Hadoop 클라이언트 구성이 필요합니다.
    간단한 repo 설정과 yum 명령어로 hadoop-client 패키지를 설치할 수 있습니다.

    hadoop-client 패키지를 설치하는 방법은 다음과 같습니다.

    1. 다음 명령어를 사용하여 repo 파일이 아래와 같이 구성되어 있는지 확인해 주십시오.

      $ cat /etc/yum.repos.d/ambari-nch-1.repo # Cloud Hadoop 2.x
      
      [NCH-3.1-repo-1]
      name=NCH-3.1-repo-1
      baseurl=http://nch-repo.navercorp.com/yum/nch/centos7/NCH-3.1.1.3.1.2
      path=/
      enabled=1
      gpgcheck=0
      [NCH-3.1-GPL-repo-1]
      name=NCH-3.1-GPL-repo-1
      baseurl=http://nch-repo.navercorp.com/yum/nch/centos7/NCH-GPL-3.1.0.0
      path=/
      enabled=1
      gpgcheck=0
      [NCH-UTILS-1.1.0.22-repo-1]
      name=NCH-UTILS-1.1.0.22-repo-1
      baseurl=http://nch-repo.navercorp.com/yum/nch/centos7/NCH-UTILS-1.1.0.22
      path=/
      enabled=1
      
      $ cat /etc/yum.repos.d/ambari-hdp-1.repo # Cloud Hadoop 1.x
      
      [HDP-3.1-repo-1]
      name=HDP-3.1-repo-1
      baseurl=http://dist.kr.hadoop3.naverncp.com/HDP/centos7/3.x/updates/3.1.0.0
      path=/
      enabled=1
      gpgcheck=0
      [HDP-3.1-GPL-repo-1]
      name=HDP-3.1-GPL-repo-1
      baseurl=http://dist.kr.hadoop3.naverncp.com/HDP-GPL/centos7/3.x/updates/3.1.0.0
      path=/
      enabled=1
      gpgcheck=0
      [HDP-UTILS-1.1.0.22-repo-1]
      name=HDP-UTILS-1.1.0.22-repo-1
      baseurl=http://dist.kr.hadoop3.naverncp.com/HDP-UTILS-1.1.0.22/repos/centos7
      path=/
      enabled=1
      
    2. 다음 명령어를 사용하여 hadoop-client가 생성되었는지 확인해 주십시오.

      $ yum clean all 
      $ yum install hadoop-client
      $ curl -u $AMBARI_ID:$AMBARI_PASS -H "X-Requested-By: ambari" -X GET http://$AMBARI_URI:8080/api/v1/clusters/$CLUSTER_NAME/services/HDFS/components/HDFS_CLIENT?format=client_config_tar > hdfs_client_conf.tar.gz
      $ tar -xvf hdfs_client_conf.tar.gz
      $ sudo cp ~/* /usr/nch/current/hadoop-client/conf/ # Cloud Hadoop 2.x
      $ sudo cp ~/* /usr/hdp/current/hadoop-client/conf/ # Cloud Hadoop 1.x
      
      

    4. JDK, Python3 설치 여부 확인

    JDK와 Python3가 미리 설치되어 있어야 합니다.
    이전 Spark 버전은 Python2가 사용 가능했으나 Spark 3.0.0부터는 Python3만 사용할 수 있습니다.

    다음 명령어를 실행하여 Python3를 설치해 주십시오.

    $ yum install -y python3
    

    Spark 3.0.1 버전 적용

    1. Spark 패키지 다운로드

    다음 명령어를 사용하여 서버에서 사용하려는 Spark 패키지를 다운로드하고 압축을 해제해 주십시오.

    • Spark 3.0.1 다운로드 페이지: https://archive.apache.org/dist/spark/spark-3.0.1/
    • 이미 Hadoop 클라이언트가 구성된 환경에서 실행하므로 Pre-built with user-provided Apache Hadoop(spark-3.0.1-bin-without-hadoop.tgz)을 다운로드한 후 임의의 디렉터리에서 압축을 해제해 주십시오.
      hadoop-chadoop-use-ex2_1-1_ko
    $ wget https://archive.apache.org/dist/spark/spark-3.0.1/spark-3.0.1-bin-without-hadoop.tgz
    $ tar xvfz spark-3.0.1-bin-without-hadoop.tgz
    

    2. Spark 환경 변수 설정

    다음 명령어를 사용하여 Spark 환경 변수를 설정하고 압축 해제한 패키지에 Hadoop jar를 복사해 주십시오.

    # 압축 해제한 Spark 디렉터리를 명시해 주십시오.
    $ SPARK_HOME=/path/to/spark-3.0.1-bin-without-hadoop
    $ SPARK_CONF_DIR=/path/to/spark-3.0.1-bin-without-hadoop/conf
    
    
    # config 파일 복사
    $ cp /usr/hdp/current/spark2-client/conf/* $SPARK_CONF_DIR/
    
    
    # Hadoop 관련 jar를 Spark jars 디렉터리에 복사해 주십시오.
    $ cp -n /usr/hdp/current/spark2-client/jars/hadoop-*.jar $SPARK_HOME/jars
    

    spark-submit이 실행되는 위치에서 아래 환경 변수를 설정해 주십시오.

    $ export SPARK_HOME=/path/to/spark-3.0.1-bin-without-hadoop
    $ export SPARK_CONF_DIR=/path/to/spark-3.0.1-bin-without-hadoop/conf
    $ export SPARK_SUBMIT_OPTS="-Dhdp.version=3.1.0.0-78"
    $ export PATH=$SPARK_HOME/bin:$PATH
    $ export SPARK_DIST_CLASSPATH=`$HADOOP_COMMON_HOME/bin/hadoop classpath`
    

    3. 구동 확인

    다음 명령어를 사용하여 설치 버전 정보로 구동이 되는지 확인해 주십시오.
    아래 화면과 같이 표시되면 Spark 3.0.1을 사용할 수 있는 상태입니다.

    $ pyspark --version
    

    hadoop-chadoop-use-ex2_1-2_ko

    4. Owner 권한 부여

    다음 명령어를 사용하여 /user 아래에 사용자 전용 폴더를 생성한 후 Owner 권한을 부여해 주십시오.
    Spark job은 사용자 계정 {USER}의 폴더가 HDFS의 /user 아래에 있어야 정상적으로 동작합니다.

    다음 예시는 USER가 sshuser인 경우입니다.

    $ sudo -u hdfs hadoop fs -mkdir /user/sshuser
    $ sudo -u hdfs hadoop fs -chown -R sshuser:hdfs /user/sshuser/
    

    5. PySpark, spark-shell 실행

    PySpark와 spark-shell을 실행하는 방법은 다음과 같습니다.

    1. PySpark 실행 시 아래 옵션을 추가하여 실행해 주십시오.

      $ pyspark --conf spark.driver.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
      --conf spark.yarn.am.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
      --conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro \
      --conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro
      
    2. spark-shell도 아래 명령어로 실행해 주십시오.

      spark-shell --conf spark.driver.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
      --conf spark.yarn.am.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
      --conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro \
      --conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro
      --conf spark.kerberos.access.hadoopFileSystems=hdfs://<사용하려는 네임노드 명시>
      

    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.