Apache Spark
Apache Spark とは、大規模なデータ処理のための高速な汎用エンジンです。Hadoopでは、リアルタイム処理ができませんが、Sparkでは、ウィンドウ集計(Time-Window Operation)によりリアルタイム集計が可能です。
読み方
- Apache Spark
- あぱっち すぱーく
目次
概要
Apache Spark は、インメモリの Hadoop MapReduce よりも 100倍高速で、ディスクでは10倍高速です。 Java, Scala, Python から簡単に利用できます。Pythonから利用する場合には、py27-spark が使用できます。 Spark SQL, 機械学習のためのMLlib, GraphX, Spark Streaming などのハイレベルなツールが利用できます。 Spark は、スタンドアローン、もしくは、クラウドの Hadoop, Mesos で実行できます。HDFS, Cassandra, HBase, S3 など様々なデータソースにアクセスできます。
ウィンドウ集計とは?
ウィンドウ集計は、「直近の一定時間の集計」を実現します。
インストール
pkgコマンドでインストールする場合
sudo pkg install apache-spark
apache-sparkの依存関係は、以下の通りです。
- hadoop2
- ssid
- snappy
設定
sudo sysrc spark_master_enable=YES sudo sysrc spark_worker_enable=YES
spark_masterのコントロール
サービスの起動
serviceコマンドの詳細は、serviceをご参照ください。 サービスを起動します。
sudo service start spark_master
サービスの停止
サービスを停止します。
sudo service stop spark_master
spark_workerのコントロール
サービスの起動
serviceコマンドの詳細は、serviceをご参照ください。 サービスを起動します。
sudo service start spark_worker
サービスの停止
サービスを停止します。
sudo service stop spark_worker
使い方
Web UI
spark_master を起動すると Web UI に http://localhost:8080/ でアクセスできます。
spark-shell を起動する
$ sudo service spark_master onestart $ spark-shell
以下は、実行例です。
$ /usr/local/share/spark/bin/spark-shell Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 15/03/19 21:41:22 INFO SecurityManager: Changing view acls to: kaworu 15/03/19 21:41:22 INFO SecurityManager: Changing modify acls to: kaworu 15/03/19 21:41:22 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(kaworu); users with modify permissions: Set(kaworu) 15/03/19 21:41:22 INFO HttpServer: Starting HTTP Server 15/03/19 21:41:23 INFO Utils: Successfully started service 'HTTP class server' on port 22683. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 1.2.1 /_/ Using Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.8.0_31) Type in expressions to have them evaluated. Type :help for more information. 15/03/19 21:41:30 INFO SecurityManager: Changing view acls to: kaworu 15/03/19 21:41:30 INFO SecurityManager: Changing modify acls to: kaworu 15/03/19 21:41:30 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(kaworu); users with modify permissions: Set(kaworu) 15/03/19 21:41:33 INFO Slf4jLogger: Slf4jLogger started 15/03/19 21:41:33 INFO Remoting: Starting remoting 15/03/19 21:41:34 INFO Utils: Successfully started service 'sparkDriver' on port 45925. 15/03/19 21:41:34 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@a1.local:45925] 15/03/19 21:41:34 INFO SparkEnv: Registering MapOutputTracker 15/03/19 21:41:34 INFO SparkEnv: Registering BlockManagerMaster 15/03/19 21:41:34 INFO DiskBlockManager: Created local directory at /tmp/spark-xxxx 15/03/19 21:41:34 INFO MemoryStore: MemoryStore started with capacity 265.1 MB 15/03/19 21:41:35 INFO HttpFileServer: HTTP File server directory is /tmp/spark-xxxx 15/03/19 21:41:35 INFO HttpServer: Starting HTTP Server 15/03/19 21:41:35 INFO Utils: Successfully started service 'HTTP file server' on port 56023. 15/03/19 21:41:35 INFO Utils: Successfully started service 'SparkUI' on port 4040. 15/03/19 21:41:35 INFO SparkUI: Started SparkUI at http://a1.local:4040 15/03/19 21:41:35 INFO Executor: Starting executor ID <driver> on host localhost 15/03/19 21:41:35 INFO Executor: Using REPL class URI: http://192.168.60.137:22683 15/03/19 21:41:35 INFO AkkaUtils: Connecting to HeartbeatReceiver: akka.tcp://sparkDriver@a1.local:45925/user/HeartbeatReceiver 15/03/19 21:41:36 INFO NettyBlockTransferService: Server created on 65501 15/03/19 21:41:36 INFO BlockManagerMaster: Trying to register BlockManager 15/03/19 21:41:36 INFO BlockManagerMasterActor: Registering block manager localhost:65501 with 265.1 MB RAM, BlockManagerId(<driver>, localhost, 65501) 15/03/19 21:41:36 INFO BlockManagerMaster: Registered BlockManager 15/03/19 21:41:36 INFO SparkILoop: Created spark context.. Spark context available as sc. scala>
Pythonからの利用
py27-spark
pkgコマンドでインストールする場合
sudo pkg install py27-spark
エラー
snappyとsnappyjava が入っていてもエラーになってしまいます。
org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=FreeBSD and os.arch=x86_64
関連項目
ツイート