Sparkの「Hadoopなし」ビルドの使用

SparkはHDFSとYARNに対してHadoopクライアント ライブラリを使用します。Sparkバージョン1.4以降、このプロジェクトでは、「Hadoopなし」のビルドがパッケージ化されており、単一のSparkバイナリをより簡単に任意のHadoopバージョンに接続できます。これらのビルドを使用するには、Hadoopのパッケージjarを含めるようにSPARK_DIST_CLASSPATHを変更する必要があります。これを実行する最も簡単な方法は、conf/spark-env.shにエントリを追加することです。

このページでは、異なる種類のディストリビューションに対してSparkをHadoopに接続する方法を説明します。

Apache Hadoop

Apacheディストリビューションでは、Hadoopの「クラスパス」コマンドを使用できます。たとえば

### 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)

Kubernetes上のSparkのHadoop Free Build Setup

Kubernetes上でSparkのHadoop Freeビルドを実行するには、エグゼキュータイメージに適切なバージョンのHadoopバイナリと正しいSPARK_DIST_CLASSPATH値が設定されている必要があります。エグゼキュータ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" ]
...