0x01 软件环境
Spark 官方提供了三种集群部署方案: Standalone
, Mesos
, YARN
。其中 Standalone 最为方便,本文主要讲述结合 YARN
的部署方案。
软件环境:
CentOS_6.5_x64
hadoop-2.6.5
jdk-1.8.111
scala-2.11.11
spark-1.6.3
0x02 安装scala
2.1 下载
Spark官方要求 Scala 版本为 2.11.x,注意不要下错版本,我这里下了 2.11.11,官方下载地址http://www.scala-lang.org/download/
2.2 解压安装
$ tar -zxvf scala-2.11.11.tgz
$ mv scala-2.11.11 ~/cloud/
//建立软链
$ ln -s /home/hadoop/cloud/scala-2.11.11 /home/hadoop/cloud/scala
2.3 配置环境变量
# vim /etc/profile
//追加
export SCALA_HOME=$WORK_SPACE/scala
export PATH=$PATH:$SCALA_HOME/bin
//使环境变量生效
# source /etc/profile
$ source /etc/profile
2.4 验证
$ scala -version #如果打印出如下版本信息,则说明安装成功
Scala code runner version 2.11.11 -- Copyright 2002-2017, LAMP/EPFL
0x03 安装spark
3.1 下载
进入官方下载地址http://spark.apache.org/downl... 下载最新版 Spark。我下载的是 spark-1.6.3-bin-hadoop2.6.tgz。
3.2 解压安装
$ tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz
$ mv spark-1.6.3-bin-hadoop2.6 ~/cloud/
$ ln -s /home/hadoop/cloud/spark-1.6.3-bin-hadoop2.6 /home/hadoop/spark
3.3 配置spark
$ cd ~/cloud/spark/conf #进入spark配置目录
$ cp spark-env.sh.template spark-env.sh #从配置模板复制
$ vim spark-env.sh #添加配置内容
在spark-env.sh
末尾添加以下内容(这是我的配置,你可以自行修改):
export SCALA_HOME=/home/spark/cloud/scala
export JAVA_HOME=/home/spark/cloud/java
export HADOOP_HOME=/home/spark/cloud/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/spark/cloud/spark
SPARK_DRIVER_MEMORY=512M
注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。
在slaves
文件下填上slave主机名:
slave1
slave2
将配置好的spark-1.6.3-bin-hadoop2.6文件夹分发给所有slaves
scp -r ~/workspace/spark-1.6.3-bin-hadoop2.6 hadoop@slave1:~/cloud/
scp -r ~/workspace/spark-1.6.3-bin-hadoop2.6 hadoop@slave2:~/cloud/
注意:在slave节点要注意建立软链和配置环境变量。
3.4 启动Spark
$ sbin/start-all.sh
注意:这里的启动命令和hadoop的情动命令是一样的,由于都配置了环境变量,所以可能出现错误,所以可以将spark的启动命令进行重命名。所有节点均瑶进行此操作,除非在复制文件夹之前进行重命名。
$ cd ~/cliud/saprk/sbin
$ mv start-all.sh start-spark.sh
$ mv stop-all.sh stop-spark.sh
3.5 验证
用jps
检查,在 master
上应该有以下几个进程:
$ jps
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
在 slave
上应该有以下几个进程:
$jps
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
进入Spark的Web
管理页面: http://master:8080
0x04 运行示例
#本地模式两线程运行
./bin/run-example SparkPi 10 --master local[2]
#Spark Standalone 集群模式运行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
lib/spark-examples-1.3.0-hadoop2.4.0.jar \
100
#Spark on YARN 集群上 yarn-cluster 模式运行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \ # can also be `yarn-client`
lib/spark-examples*.jar \
10
注意 Spark on YARN 支持两种运行模式,分别为yarn-cluster和yarn-client,具体的区别可以看这篇博文,从广义上讲,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出
0x04参考文献
http://wuchong.me/blog/2015/0...
2017-05-04 15:24:17 星期四
update: 2017-10-18 15:30:28 星期三
修改部分错误,更新排版格式。