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

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

  • PDF

VPC環境で利用できます。

ユーザーが任意の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で確認できます。
Ambari UIへのアクセスや使用に関する詳細は、Ambari UIをご参照ください。

hadoop-chadoop-use-ex2_0-1_ja

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、Python 3のインストール有無の確認<a name="JDKPython3설치여부확인>

JDKとPython 3をあらかじめインストールする必要があります。
以前のSparkバージョンはPython 2を使用できましたが、Spark 3.0.0からはPython 3のみ使用できます。

以下のコマンドを実行してPython 3をインストールしてください。

$ 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_ja

$ 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_ja

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シェルの実行

PySparkとSparkシェルを実行する方法は、以下のとおりです。

  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シェルも以下のコマンドで実行します。

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

この記事は役に立ちましたか?