Spark 3バージョンを使用する

Prev Next

最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

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://<使用するネームノードを指定>