Sparkの「Hadoop Free」ビルドの使用
Sparkは、HDFSおよびYARNのためにHadoopクライアントライブラリを使用します。Spark 1.4以降、プロジェクトは「Hadoop Free」ビルドをパッケージ化しており、これにより単一のSparkバイナリを任意のHadoopバージョンに簡単に接続できます。これらのビルドを使用するには、HadoopのパッケージJARを含めるようにSPARK_DIST_CLASSPATHを修正する必要があります。これを最も便利に行う方法は、conf/spark-env.shにエントリを追加することです。
このページでは、さまざまな種類のディストリビューションに対してSparkをHadoopに接続する方法を説明します。
Apache Hadoop
Apacheディストリビューションの場合、Hadoopの「classpath」コマンドを使用できます。たとえば、
### in conf/spark-env.sh ###
# If 'hadoop' binary is on your PATH
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
# With explicit path to 'hadoop' binary
export SPARK_DIST_CLASSPATH=$(/path/to/hadoop/bin/hadoop classpath)
# Passing a Hadoop configuration directory
export SPARK_DIST_CLASSPATH=$(hadoop --config /path/to/configs classpath)Spark on KubernetesのためのHadoop Freeビルドセットアップ
Kubernetes上でSparkのHadoop Freeビルドを実行するには、executorイメージに適切なバージョンのHadoopバイナリと正しいSPARK_DIST_CLASSPATH値が設定されている必要があります。executor Dockerfileで必要な変更については、以下の例を参照してください。
### Set environment variables in the executor dockerfile ###
ENV SPARK_HOME="/opt/spark"
ENV HADOOP_HOME="/opt/hadoop"
ENV PATH="$SPARK_HOME/bin:$HADOOP_HOME/bin:$PATH"
...
#Copy your target hadoop binaries to the executor hadoop home
COPY /opt/hadoop3 $HADOOP_HOME
...
#Copy and use the Spark provided entrypoint.sh. It sets your SPARK_DIST_CLASSPATH using the hadoop binary in $HADOOP_HOME and starts the executor. If you choose to customize the value of SPARK_DIST_CLASSPATH here, the value will be retained in entrypoint.sh
ENTRYPOINT [ "/opt/entrypoint.sh" ]
...