🌊
WSL2+Apache BigtopでSpark
の続き。
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アクセス
で設定した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