Ubuntu 20.04にApache Sparkをインストールする方法

Ubuntu/Debian

Apache Sparkは、オープンソースのフレームワークであり、汎用のクラスターコンピューティングシステムです。 Sparkは、一般的な実行グラフをサポートするJava、Scala、Python、Rの高レベルAPIを提供します。ストリーミング、SQL、機械学習、グラフ処理に使用される組み込みモジュールが付属しています。大量のデータを分析してクラスター全体に分散し、データを並列処理することができます。

このチュートリアルでは、Ubuntu 20.04にApache Sparkクラスターコンピューティングスタックをインストールする方法を説明します。

前提条件

  • Ubuntu 20.04サーバーを実行しているサーバー。
  • rootパスワードがサーバーに構成されます。

入門

まず、システムパッケージを最新バージョンに更新する必要があります。次のコマンドでそれらすべてを更新できます。

apt-get update -y

すべてのパッケージが更新されたら、次のステップに進むことができます。

Javaをインストールする

Apache SparkはJavaベースのアプリケーションです。したがって、Javaがシステムにインストールされている必要があります。次のコマンドでインストールできます。

apt-get install default-jdk -y

Javaがインストールされたら、次のコマンドを使用して、インストールされているJavaのバージョンを確認します。

java --version

次の出力が表示されます。

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Scalaをインストールする

Apache SparkはScalaを使用して開発されています。したがって、システムにScalaをインストールする必要があります。次のコマンドでインストールできます。

apt-get install scala -y

Scalaをインストールした後。次のコマンドを使用して、Scalaのバージョンを確認できます。

scala -version

次の出力が表示されます。

Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

次のコマンドでScalaインターフェースに接続します。

scala

次の出力が表示されます。

Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8).
Type in expressions for evaluation. Or try :help.

次のコマンドでScalaをテストします。

scala> println("Hitesh Jethva")

次の出力が表示されます。

Hitesh Jethva

Apache Sparkをインストールする

まず、公式ウェブサイトから最新バージョンのApache Sparkをダウンロードする必要があります。このチュートリアルを書いている時点では、Apache Sparkの最新バージョンは2.4.6です。次のコマンドで/ optディレクトリにダウンロードできます。

cd /opt
wget https://archive.apache.org/dist/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz

ダウンロードしたら、次のコマンドでダウンロードしたファイルを抽出します。

tar -xvzf spark-2.4.6-bin-hadoop2.7.tgz

次に、以下に示すように、抽出したディレクトリの名前をsparkに変更します。

mv spark-2.4.6-bin-hadoop2.7 spark

次に、Sparkコマンドを簡単に実行できるように、Spark環境を構成する必要があります。 .bashrcファイルを編集して設定できます。

nano ~/.bashrc

ファイルの最後に次の行を追加します。

export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

ファイルを保存して閉じ、次のコマンドで環境をアクティブにします。

source ~/.bashrc

Spark Master Serverを起動します

この時点で、Apache Sparkがインストールされ、構成されます。ここで、次のコマンドを使用してSparkマスターサーバーを起動します。

start-master.sh

次の出力が表示されます。

starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-ubuntu2004.out

デフォルトでは、Sparkはポート8080でリッスンしています。次のコマンドを使用して確認できます。

ss -tpln | grep 8080

次の出力が表示されます。

LISTEN   0        1                               *:8080                *:*      users:(("java",pid=4930,fd=249))

次に、Webブラウザーを開き、URL http:// your-server-ip:8080を使用してSpark Webインターフェイスにアクセスします 。次の画面が表示されます。 広告

Sparkワーカープロセスの開始

ご覧のように、Sparkマスターサービスはspark:// your-server-ip:7077で実行されています。したがって、このアドレスを使用して、次のコマンドでSparkワーカープロセスを開始できます。

start-slave.sh spark://your-server-ip:7077

次の出力が表示されます。

starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-ubuntu2004.out

次に、Sparkダッシュボードに移動して画面を更新します。次の画面にSparkワーカープロセスが表示されます。

Spark Shellの操作

コマンドラインを使用してSparkサーバーに接続することもできます。以下に示すように、spark-shellコマンドを使用して接続できます。

spark-shell

接続すると、次の出力が表示されます。

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:35:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
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://ubuntu2004:4040
Spark context available as 'sc' (master = local[*], app id = local-1598711719335).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.6
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

SparkでPythonを使用する場合。 pysparkコマンドラインユーティリティを使用できます。

まず、次のコマンドでPythonバージョン2をインストールします。

apt-get install python -y

インストールしたら、次のコマンドでSparkを接続できます。 広告

pyspark

接続すると、次の出力が表示されます。

Python 2.7.18rc1 (default, Apr  7 2020, 12:05:55) 
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:36:40 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.6
      /_/

Using Python version 2.7.18rc1 (default, Apr  7 2020 12:05:55)
SparkSession available as 'spark'.
>>>

マスターサーバーとスレーブサーバーを停止する場合。次のコマンドで実行できます。

stop-slave.sh
stop-master.sh

結論

おめでとう! Ubuntu 20.04サーバーにApache Sparkが正常にインストールされました。これで、Sparkクラスターの構成を開始する前に、基本的なテストを実行できるはずです。ご不明な点がございましたら、お気軽にお問い合わせください。

Source

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です