本文介绍如何编译 spark 的源码,并且用 standalone 的方式在单机上部署 spark。
步骤如下:
1. 下载 spark 并且解压
本文选择 spark 的最新版本 2.2.0 (2017/07/01 发布)
下载源码和解压的命令如下:
SPARK_VERSION=2.2.0
wget https://github.com/apache/spark/archive/v${SPARK_VERSION}.tar.gz -O spark-${SPARK_VERSION}.tar.gz
tar -zvxf spark-${SPARK_VERSION}.tar.gz
2. 编译
编译大概需要半个小时左右时间,不同的机器可能用的时间不同。
执行以下命令编译
cd spark-${SPARK_VERSION}
build/mvn -DskipTests clean package
可参考 http://spark.apache.org/docs/latest/building-spark.html
3. 配置
如果都使用默认,可以略过这一步。如果要改配置,按照下面步骤。
首先用下面的命令创建配置文件:
cp conf/spark-defaults.conf.template conf/spark-defaults.conf
cp conf/spark-env.sh.template conf/spark-env.sh
cp conf/slaves.template conf/slaves
然后,修改 conf/spark-defaults.conf,主要有以下配置
spark.master spark://master:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://namenode:8021/directory spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 5g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
然后,修改 conf/spark-env.sh,主要修改的有以下配置
HADOOP_CONF_DIR=/home/work/hadoop-2.6.0-cdh5.7.0/ SPARK_WORKER_CORES=10 SPARK_WORKER_MEMORY=40g SPARK_MASTER_HOST=192.168.1.112 SPARK_LOCAL_IP=192.168.1.112
然后,修改 conf/slaves, 添加 slave 的 hostname 或者 IP,如果只有一个 slave,conf/slaves 内容如下:
192.168.1.112
如果有多个 slave,每个 slave 占一行,如下:
192.168.1.112 192.168.1.113
3. standalone 模式部署
使用下面的命令部署 spark:
./sbin/start-all.sh
或者用下面的命令分步骤执行,效果是一样的:
./sbin/start-master.sh
./sbin/start-slave.sh spark://localhost:7077
执行上面的命令之后,spark 服务就在单机上起来了。可以用命令 ps aux | grep spark 查看,会有两个 spark 的进程。
4. 测试
用下面的命令可以提交一个任务给 spark 执行,测试部署是否成功。
./bin/spark-submit
--master spark://localhost:7077
examples/src/main/python/pi.py
如果没有出现错误信息,表示部署和执行任务成功。这个例子是让 spark 计算圆周率,结果是打印出来。
5. 查看监控和统计信息
http://<hostname>:8080/
6. 关闭服务
下面的命令可以关闭 spark 服务
./sbin/stop-all.sh
7. 查看log
logs 在目录 ./logs/ 下
8. 注意事项
1. 如果机器有多个网口绑定多个 IP,配置文件的 IP 和 启动 spark 服务 IP,以及 spark-submit 中的 IP 必须保持一致。localhost 在有些机器要配置好。