🌊

WSL2+Apache BigtopでSpark

2022/08/07に公開

https://zenn.dev/notrogue/articles/bdaff0ed216bb7
https://zenn.dev/notrogue/articles/fd2286d0abd93c
https://zenn.dev/notrogue/articles/2c2c4f094ce401

の続き。

WSL2と書きましたがWSL2というよりLinuxの話かもしれません…

最初の一歩

sudo apt install spark-core

なんかspark系のコマンドが入ったぽいです。

# 補完みるとspark始まりのコマンドがいくつか追加されています
$ spark-
spark-class    spark-example  spark-shell    spark-sql      spark-submit

設定ファイルはusr/lib/spark/にありそうです。

$ ls  /usr/lib/spark/
LICENSE  NOTICE  README.md  RELEASE  bin  conf  data  examples  jars  licenses  sbin  work

exampleで円周率の計算をすることができます

$ spark-submit --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
(途中省略)
2022-08-07 07:49:39,030 INFO scheduler.TaskSchedulerImpl: Killing all running tasks in stage 0: Stage finished
2022-08-07 07:49:39,032 INFO scheduler.DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 0.755851 s
Pi is roughly 3.1412831412831412
2022-08-07 07:49:39,039 INFO server.AbstractConnector: Stopped Spark@6e3364ae{HTTP/1.1, (http/1.1)}{0.0.0.0:4040}
2022-08-07 07:49:39,040 INFO ui.SparkUI: Stopped Spark web UI at http://172.26.2.225:4040
2022-08-07 07:49:39,048 INFO spark.MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
2022-08-07 07:49:39,055 INFO memory.MemoryStore: MemoryStore cleared
2022-08-07 07:49:39,055 INFO storage.BlockManager: BlockManager stopped
2022-08-07 07:49:39,059 INFO storage.BlockManagerMaster: BlockManagerMaster stopped
2022-08-07 07:49:39,061 INFO scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
2022-08-07 07:49:39,066 INFO spark.SparkContext: Successfully stopped SparkContext
2022-08-07 07:49:39,068 INFO util.ShutdownHookManager: Shutdown hook called

PySpark、Master、Workerの起動

PySparkをインストールします。

sudo apt install spark-python
# デフォルトのPythonが2系になっている場合は3系に変更
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

Master・Workerもインストールして起動します。

sudo apt install spark-master spark-history-server spark-worker
sudo /usr/lib/spark/sbin/start-master.sh  -h localhost -p 7077
sudo /usr/lib/spark/sbin/start-worker.sh  spark://localhost:7077

PySparkを起動して、ローカルにある適当なファイルの単語数を数えてみます。

pyspark --master spark://localhost:7077
>>> textFile = spark.read.text("file:///usr/lib/spark/README.md")
>>> textFile.count()
108

HDFSアクセス

https://zenn.dev/notrogue/articles/2c2c4f094ce401
で設定したHDFSが使えるか試してみます

# 本当はhdfsではない適当なユーザ作るべき?
$ HADOOP_USER_NAME=hdfs hadoop fs -put /usr/lib/spark/LICENSE  /tmp
$ HADOOP_USER_NAME=hdfs hadoop fs -ls /tmp
Found 2 items
-rw-r--r--   3 hdfs supergroup      23312 2022-08-07 08:29 /tmp/LICENSE
drwx-wx-wx   - hdfs supergroup          0 2022-07-31 11:38 /tmp/hive

pysparkに戻って、HDFSのファイルにアクセスしてみます。

>>> hdfs_textFile = spark.read.text("/tmp/LICENSE")
>>> hdfs_textFile.count()
582

よさそうです。

Discussion