- 印刷する
- 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をご参照ください。
/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 Clientの構成
SparkではHadoopの環境変数を使用するため、Hadoop Client構成が必要です。
簡単なrepo設定とyumコマンドでhadoop-clientパッケージをインストールできます。
hadoop-clientパッケージをインストールする方法は、以下のとおりです。
以下のコマンドを使用して
/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
以下のコマンドを使用して
/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のインストール有無の確認
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
)をダウンロードした後、任意のディレクトリで圧縮を展開してください。
$ 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
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を実行する方法は、以下のとおりです。
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
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://<使用するネームノードを明示>