本文介绍如何编译 spark 的源码,并且用 standalone 的方式在单机上部署 spark。

步骤如下:

1. 下载 spark 并且解压

本文选择 spark 的最新版本 2.2.0 (2017/07/01 发布)
下载源码和解压的命令如下:

SPARK_VERSION=2.2.
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.-cdh5.7.0/

SPARK_WORKER_CORES=
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 在有些机器要配置好。

spark 源码编译 standalone 模式部署的更多相关文章

  1. Spark源码分析:多种部署方式之间的区别与联系(转)

    原文链接:Spark源码分析:多种部署方式之间的区别与联系(1) 从官方的文档我们可以知道,Spark的部署方式有很多种:local.Standalone.Mesos.YARN.....不同部署方式的 ...

  2. Spark源码编译

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3822995.html spark源码编译步骤如下: cd /home/hdpusr/workspace ...

  3. Spark源码在Eclipse中部署/编译/运行

    (1)下载Spark源码 到官方网站下载:Openfire.Spark.Smack,其中Spark只能使用SVN下载,源码的文件夹分别对应Openfire.Spark和Smack. 直接下载Openf ...

  4. Spark源码编译并在YARN上运行WordCount实例

    在学习一门新语言时,想必我们都是"Hello World"程序开始,类似地,分布式计算框架的一个典型实例就是WordCount程序,接触过Hadoop的人肯定都知道用MapRedu ...

  5. spark源码编译记录

    spark在项目中已经用了一段时间了,趁现在空闲,下个源码编译在IDEA里面阅读下,特此记录过程. 前提已经安装maven和git 1.上官网下载源码的包: 2.然后解压到一个文件夹 3.编译,编译的 ...

  6. Apache Spark源码走读之9 -- Spark源码编译

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了.但到了Spark上面,事情似乎不这么简单 ...

  7. Spark源码编译(未完待续)

    在这里我们不需要搭建独立的Spark集群,利用Yarn Client调用Hadoop集群的计算资源. Spark源码编译生成配置包: 解压源码,在根去根目录下执行以下命令(sbt编译我没尝试) ./m ...

  8. 源码编译配置lnmp部署zabbix

    环境说明: [root@wcy ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@wcy ~]# uname -a Linux ...

  9. Spark源码编译,官网学习

    这里以spark-1.6.0版本为例 官网网址   http://spark.apache.org/docs/1.6.0/building-spark.html#building-with-build ...

随机推荐

  1. javaScript基本使用api

    基本方法 isArray() 判断数组 isArray() 方法用于判断是否是数组(有兼容性) 语法:Array.isArray(arr) 返回值:是数组,返回true.不是数组,返回false. i ...

  2. ab测试工具的使用

    下载地址:http://httpd.apache.org/download.cgi#apache24 编译安装后在安装目录bin下可以找到ab执行程序 基本用法: ab -n 5000 -c 1000 ...

  3. Jenkins+GitHub 项目环境搭建和发布脚本(二)

    Jenkins+gitHub项目搭建配置 项目发布脚本 profilesScript.sh (支持不同环境配置文件) #!/bin/bash ACTIVE=$ JENKINS_PATH=/var/li ...

  4. Arch Linux 安装rust

    Arch Linux 安装rust 0. 参考 Rust Toolchain 反向代理使用帮助 1. 安装 安装rustup和toolchain yaourt -S rustup rustup ins ...

  5. Python基础:元组

    元组(tuple)特点: 1.元组是以圆括号“()”包围的数据集合,不同成员以“,”分隔.通过下标进行访问 2.不可变序列,可以看做不可变的列表,与列表不同:元组中数据一旦确立就不能改变(所以没有类似 ...

  6. ffmpeg函数05__vcodec_decode_video2()

    vcodec_decode_video2()的作用是解码一帧视频数据

  7. Spring NamespaceHandlerResolver xml的标签加载的扩展 和 ApplicationContext

    NamespaceHandlerResolver public NamespaceHandler resolver(String namespaceUri); DefaultNamespaceHand ...

  8. 多线程-生产者消费者(BlockingQueue实现)

    三.采用BlockingQueue实现 BlockingQueue也是java.util.concurrent下的主要用来控制线程同步的工具. BlockingQueue有四个具体的实现类,根据不同需 ...

  9. hdu4352 XHXJ's LIS[数位DP套状压DP+LIS$O(nlogn)$]

    统计$[L,R]$内LIS长度为$k$的数的个数,$Q \le 10000,L,R < 2^{63}-1,k \le 10$. 首先肯定是数位DP.然后考虑怎么做这个dp.如果把$k$记录到状态 ...

  10. CH5104 I-country[线性DP+分类讨论]

    http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%B ...