Spark 3 버전 사용
  • PDF

Spark 3 버전 사용

  • PDF

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

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

사전 작업

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

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

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

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

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

  • Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI를 참고해 주십시오.
    hadoop-chadoop-use-ex2_0-1_ko

3. Hadoop Client 구성

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

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

  1. 다음 명령어를 사용하여 /etc/yum.repos.d/ambari-hdp-1.repo 파일을 구성해 주십시오.

    $ cat /etc/yum.repos.d/ambari-hdp-1.repo
    [HDP-3.1-repo-1]
    name=HDP-3.1-repo-1
    baseurl=http://public-repo-1.hortonworks.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://public-repo-1.hortonworks.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://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
    path=/
    enabled=1
    
  2. 다음 명령어를 사용하여 /usr/hdp/current/ 아래에 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
    $ cp ~hdfs_client_conf/conf/* /usr/hdp/current/hadoop-client/conf/
    

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 client 구성된 환경에서 실행하므로 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