Spark集群的部署及运行


1.Spark运行模式

Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。

1.local(本地模式)常用于本地开发测试,本地分为local单线程和local-cluster多线程;

2.standalone(集群模式)典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA

3.on yarn(集群模式) 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算

4.on mesos(集群模式) 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算

5.on cloud(集群模式)比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3

2.Spark on yarn安装部署

1.安装 Scala

(1)版本信息:

hadoop-2.7.3.tar.gz

scala-2.11.8.tgz Spark官方要求 Scala 版本为 2.10.x,注意不要下错版本,我这里下了2.11.8

spark-2.0.2-bin-hadoop2.7.tgz

jdk1.7

(2)修改/etc/hosts文件,无密连接

(3)   解压缩(hadoop用户):

tar -zxvf scala-2.11.8.tgz

(4)修改环境变量sudo vi /etc/profile,添加:

#scala

export SCALA_HOME=/data/scala-2.11.8

export PATH=$PATH:$SCALA_HOME/bin

(5) 使环境变量生效,并验证 scala 是否安装成功

$ source /etc/profile    #生效环境变量

$ scala -version        #如果打印出如下版本信息,则说明安装成功

Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL

2.安装yarn

已安装

3.安装spark

(1)解压:

tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz

(2)配置 Spark:

cd ~/spark/conf    #进入spark配置目录

cp spark-env.sh.template spark-env.sh   #从配置模板复制

vi spark-env.sh     #添加配置内容

在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):

export SCALA_HOME=/home/spark/workspace/scala-2.10.4

export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75

export HADOOP_HOME=/home/spark/workspace/hadoop-2.6.0

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

SPARK_MASTER_IP=master

SPARK_LOCAL_DIRS=/home/spark/workspace/spark-1.3.0

SPARK_DRIVER_MEMORY=1G

注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。

 

(3)vi slaves在slaves文件下填上slave主机名:

192.168.111.16

192.168.111.17

192.168.111.18

将配置好的spark-1.3.0文件夹分发给所有slaves

scp -r ~/workspace/spark-1.3.0 spark@slave1:~/workspace/

(4)启动Spark:

sbin/start-all.sh

(5) 验证 Spark 是否安装成功:

用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

 

3.运行示例

#本地模式两线程运行

./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的输出。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM