【コピペOK】Apache Sparkをインストールする手順【4手順】

★悩み★
・Apache Sparkをインストールする手順を知りたい。
・インストールしたApache Sparkの使い方を知りたい。
・インストールしたSparkをPython経由で使用する手順を知りたい。


こういった「悩み」に答えます。

★本記事の内容★
① Apache Sparkをインストールする手順をご紹介
② インストールしたApache Sparkの運用手順をご紹介
③ インストールしたApache SparkをPython経由で使用する手順をご紹介


これからご紹介する「Apache Sparkをインストールする手順」を実践したことで、筆者は1時間で、Apache Sparkのインストールができました。

記事の前半では「Apache Sparkをインストールする手順」をコピペ可能な手順で紹介します。
記事の後半では「Apache Sparkの運用手順と使用手順」を具体的に紹介します。

この記事を読み終えることで、「Apache Sparkのインストール完了」だけではなく、「PythonでApache Sparkを使う方法」も理解した状態になります。

ちなみに、Java言語経由でApache Sparkを使用する手順を知りたい方は、以下の記事をご覧ください。

Apache Sparkをインストールする手順

「Apache Sparkをインストールする手順」をご紹介します。

★Apache Sparkをインストールする流れ★
手順1:Apache Hadoopのインストールとセットアップ
手順2:Apache Sparkのインストール
手順3:インストールしたApache Sparkのセットアップ
手順4:インストールしたApache Sparkの動作確認


上記の流れで、Apache Sparkのインストールができます。

上記の各手順は、以下の環境で動作確認済みです。
動作確認済み環境:CentOS Linux release 7.8.2003 (Core)


以降で、「Apache Sparkをインストールする流れ」の各手順に関してご紹介します。

また、マシン構成は以下を前提とします。

★マシン構成★
・マスタサーバ
 →OS:CentOS7
 →台数:1
 →1コア
 →4GBのメモリ
 →ホスト名:master1
 →IPアドレス:192.168.10.150
・スレーブサーバ
 →OS:CentOS7
 →台数:2
 →1コア
 →4GBのメモリ
 →ホスト名:slave1、slave2
 →IPアドレス:192.168.10.151と192.168.10.152

手順1:Apache Hadoopのインストールとセットアップ

「手順1:Apache Hadoopのインストールとセットアップ」に関してご紹介します。

まずは、Apache Hadoopを使える状態にしましょう。

Apache Hadoopは、Apache Sparkで利用するリソース管理を担います。


「Apache Hadoopのインストールとセットアップの手順」は、以下の記事をご覧ください。

既にApache Hadoopをインストールされている方は、本手順を省略してください。


以上で、「手順1:Apache Hadoopのインストールとセットアップ」は完了です。

手順2:Apache Sparkのインストール

「手順2:Apache Sparkのインストール」に関してご紹介します。

Apache Sparkの資材をダウンロードし展開します。


マスタサーバで以下のコマンドを順番に実行します。

$ su - hadoop ★spark実行ユーザです★
$ wget https://ftp.jaist.ac.jp/pub/apache/spark/spark-3.0.1/spark-3.0.1-bin-without-hadoop.tgz
$ tar -zxvf spark-3.0.1-bin-without-hadoop.tgz
$ mv spark-3.0.1-bin-without-hadoop /opt/oss/


以上で、「手順2:Apache Sparkのインストール」は完了です。

手順3:インストールしたApache Sparkのセットアップ

「手順3:インストールしたApache Sparkのセットアップ」に関してご紹介します。

Apache Sparkをセットアップするために、マスタサーバで以下のコマンドを順番に実行します。

# su - hadoop
$ echo "export SPARK_HOME=/opt/oss/spark-3.0.1-bin-without-hadoop/" >> ~/.bash_profile
$ echo "export SPARK_DIST_CLASSPATH=$(/opt/oss/hadoop-3.2.1/bin/hadoop classpath)" >> ~/.bash_profile
$ cd /opt/oss/spark-3.0.1-bin-without-hadoop/conf
$ cp spark-env.sh.template spark-env.sh
$ export PYSPARK_PYTHON=~/.pyenv/shims/python ★pythonのPATHを指定します★
$ export PYSPARK_DRIVER_PYTHON=~/.pyenv/shims/python ★pythonのPATHを指定します★
$ source ~/.bash_profile


以上で、「手順3:インストールしたApache Sparkのセットアップ」は完了です。

手順4:インストールしたApache Sparkの動作確認

「手順4:インストールしたApache Sparkの動作確認」に関してご紹介します。

Apache Sparkの動作確認するために、マスタサーバで以下のコマンドを実行します。

# su - hadoop
$ cd /opt/oss/spark-3.0.1-bin-without-hadoop
$ bin/spark-shell 
2020-10-11 09:39:33,611 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://master1:4040
Spark context available as 'sc' (master = local[*], app id = local-1602376778801).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.0.1
      /_/
         
Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_222-ea)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

scala> ★Control + cで終了できます★
$ 

上記のような画面が表示されれば、Apache Sparkのインストールは無事に終了です。


以上で、「手順4:インストールしたApache Sparkの動作確認」は完了です。

上記の4手順で、Apache Sparkをインストールできました。

インストールしたApache Sparkの運用手順

「インストールしたApache Sparkの運用手順」に関してご紹介します。

★インストールしたApache Sparkの運用の流れ★
手順1:Sparkのリソースを管理するHadoopを起動
手順2:Sparkでアプリケーションを実行


上記の流れで、Apache Sparkを運用できます。

以降で、「インストールしたApache Sparkの運用の流れ」の各手順に関してご紹介します。

手順1:Sparkのリソースを管理するHadoopを起動

「手順1:Sparkのリソースを管理するHadoopを起動」に関してご紹介します。

Apache Sparkが利用するリソース(CPUやメモリなど)をHadoopで管理します。

そのため、Hadoopを起動する必要があります。

Hadoopの起動手順に関しては、以下の記事をご覧ください。


以上で、「手順1:Sparkのリソースを管理するHadoopを起動」は完了です。

手順2:Sparkでアプリケーションを実行

「手順2:Sparkでアプリケーションを実行」に関してご紹介します。

インストールしたApache Sparkでアプリケーションを実行する方法を説明します。


Sparkでアプリケーションを実行するには、「spark-submit」コマンドを利用します。

次章でPythonのアプリケーションをSparkで実行する方法をご紹介いたします。

以上で、「手順2:Sparkでアプリケーションを実行」は完了です。

上記の2手順で、インストールしたSparkを運用できます。

インストールしたApache SparkをPython経由で使用する手順

「インストールしたApache SparkをPython経由で使用する手順」に関してご紹介します。

今回は、「Python」を使った「テキスト内の単語を集計する」アプリケーションをSparkで実行する手順をご紹介します。

Pythonをインストールされていない方は、以下の記事をご覧ください。


以下の3手順でPython経由でApache Sparkを使用できます。

★PythonでインストールしたApache Sparkを使用する方法★
手順1:集計対象となるテキストを作成
手順2:PythonでSpark用のプログラムを作成
手順3:SparkでPythonのプログラムを実行


以降で、「PythonでインストールしたApache Sparkを使用する方法」の各手順に関して簡単に説明します。

手順1:集計対象となるテキストを作成

「手順1:集計対象となるテキストを作成」に関してご紹介します。

集計対象となるテキストを作成し、HDFSに格納します。


マスタサーバで以下のコマンドを順番に実行します。

# su - hadoop
$ echo "a b c a" > sample.txt
$ hadoop fs -mkdir blog
$ hadoop fs -put sample.txt blog


以上で、「手順1:集計対象となるテキストを作成」は完了です。

手順2:PythonでSpark用のプログラムを作成

「手順2:PythonでSpark用のプログラムを作成」に関してご紹介します。

Pythonで「テキスト内の単語を集計する」プログラムを作成します。


以下のwordcount.pyを作成しましょう。

from datetime import datetime
from pyspark.sql import DataFrameReader
from pyspark.sql import SparkSession

## 1. sparkの設定を作成
spark = SparkSession \
    .builder \
    .appName("wordcount application") \
    .getOrCreate()
spark_context = spark.sparkContext

## 2. テキストファイルの読み込み
text_data = spark_context.textFile("blog/sample.txt")

## 3. 集計処理
def create_keyvalue(line):
  rdd_list = []
  word_list = line.split(" ")
  for word in word_list:
    rdd_list.append( (word, 1)  ) 
  return rdd_list 

aggregated_data = text_data \
  .flatMap(lambda x: create_keyvalue(x)) \
  .reduceByKey(lambda x, y: x + y)

## 4. 集計結果をファイルへ保存
aggregated_data.saveAsTextFile("blog_output")


以上で、「手順2:PythonでSpark用のプログラムを作成」は完了です。

手順3:SparkでPythonのプログラムを実行

「手順3:SparkでPythonのプログラムを実行」に関してご紹介します。

先ほど作成したPythonのプログラム(wordcount.py)をSparkで実行します。


マスタサーバで以下のコマンドを順番に実行します。

# su - hadoop
$ ls
do.sh  sample.txt  wordcount.py
$ SPARK_CMD="/opt/oss/spark-2.4.5-bin-without-hadoop/bin/spark-submit"
$ ${SPARK_CMD} --master yarn --conf "spark.executor.memoryOverhead=600" \
             --num-executors 2 \
             wordcount.py


上記のコマンドを実行することでSpark上でPythonのプログラムが実行されます。

単語の集計結果は、マスタサーバで以下のコマンドを実行することで確認できます。

$ hadoop fs -ls blog_output
Found 3 items
-rw-r--r--   1 hadoop supergroup          0 2020-10-11 10:32 blog_output/_SUCCESS
-rw-r--r--   1 hadoop supergroup         18 2020-10-11 10:32 blog_output/part-00000
-rw-r--r--   1 hadoop supergroup          9 2020-10-11 10:32 blog_output/part-00001
$ hadoop fs -cat blog_output/part-00000
('b', 1)
('c', 1)
$ hadoop fs -cat blog_output/part-00001
('a', 2)
$ 


無事に単語が集計できていることが確認できました。

以上で、「手順3:SparkでPythonのプログラムを実行」は完了です。

上記の3手順で、Python経由でインストールしたApache Sparkを使用できました。

【まとめ】Apache Sparkをインストールする手順【4手順】

今回の記事を通して、「Apache Sparkをインストールする手順」をご紹介することで、以下の悩みを解消しました。

★悩み★
・Apache Sparkをインストールする手順を知りたい。
・インストールしたApache Sparkの使い方を知りたい。
・インストールしたSparkをPython経由で使用する手順を知りたい。


「Apache Sparkをインストールする手順は?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

タイトルとURLをコピーしました