Spark部署与程序运行示例

Spark部署

1.       Local模式部署

1)    安装java,配置环境变量

2)    主节点配置

cd $SPARK_HOME/conf

cp spark-env.template spark-env.sh

vim spark-env.sh

 

export SPARK_MASTER_IP=your_master_ip;

export JAVA_HOME=$Your_Java_home;

3) 版本验证:bin/spark-shell

 

2.       standalone模式部署:

1)  修改spark-env.sh

export SPARK_MASTER_IP=$Your_Master_Ip;

export JAVA_HOME=$Your_java_home;

2)  conf目录下创建一个slaves文件,

写入 workers的节点hostname,每行一个

3)  将配置文件spark-env.shslaves发送到所有worker节点

scp conf/spark-env.sh /software/spark/conf/

scp conf/slaves /software/spark/conf/

4)  配置masterslaves之间免密码登录

。。。略

 

5)  启动集群:

手动:

master节点:Sbin/start-master.sh

worker节点:./bin/spark-class org.apache.spark.deploy.worker.Worker spark://IP:Port

 

脚本:

sbin/start-master.sh

sbin/start-slaves.sh

sbin/start-all.sh

sbin/stop-master.sh

sbin/stop-slaves.sh

sbin/stop-all.sh

3.       YARN模式部署

1)       配置spark环境变量:

vim /etc/profile

export SPARK_HOME=/home/Hadoop/spark-1.5.0

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/Hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/Hadoop

 

:wq

source /etc/profile

2)       Spark本身的配置

vim spark-env.sh

export JAVA_HOME=$Your_java_home;

export SPARK_MASTER_IP=$Your_Master_Ip;

 

vim slaves

slave01

slave02

slave03

 

先启动hadoop后启动spark

Spark程序运行:(localstandaloneYARNMesos

1.       Local模式下运行:(以计算圆周率程序为例)

./bin/spark-submit \

#主程序设置本地,local[*]*为线程数

--master local[10] \

#选择主类名称

--class org.apache.spark.examples.SparkPi \

#examples jar

/home/hadoop/spark-1.5.0/lib/spark-examples-1.5.0-hadoop2.3.0.jar

        

2.       Standalone模式下运行:

1)  spark-shell运行

./bin/spark-shell –master spark://IP:PORT –cores 4

4spark-shell在集群中使用的核数

2)  spark-submit运行应用程序

Spark-Pi为例

./bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://$MASTER_IP:Port

--executor-memory 2G \

--total-executor-cores 2 \

/home/Hadoop/spark-1.5.0/lib/spark-examples-1.5.0-hadoop2.3.0.jar

 

 

可以通过sparkconf中设置spark.cores.max配置获得最多内核的数量

eg:

    val conf = new SparkConf()

                                .setMaster()

                                .setAppName()

                                .set(“Spark.cores.max”,”10”)

val sc = new SparkContext(conf)

还可以设置spark.deploy.defaultCores来改变默认值而不必设置spark.cores.max

export SPARK_MASTER_OPTS=”-Dspark.deploy.defaultCores=<value>”

 

3.       YARN模式下运行程序:(yarn-cluster,yarn-client

1)       yarn-cluster(框架会在集群中启动Driver)

./bin/spark-submit \

--class path.to.your.class

--master yarn-cluster [options] <app jar> [app opotions]

 

eg:

./bin/spark-submit –class org.apache.spark.examples.SparkPi \

--master yarn-cluster \

--num-executors 3 \

--driver-memory 4g \

--executor-memory 2g \

--executor-cores 2 \

/home/Hadoop/spark-1.5.0/lib/spark-examples-1.5.0-hadoop2.3.0.jar \

10

 

首先启动一个AMapplication master)进程,将SparkPi作为AM的子进程

Client周期性检查AM以获取状态更新,程序运行结束后,client会立即退出。

2)       yarn-client(框架在client上启动Driver

yarn-cluster换成yarn-client即可

 

eg:

./bin/spark-submit –class org.apache.spark.examples.SparkPi \

--master yarn-client \

--num-executors 3 \

--driver-memory 4g \

--executor-memory 2g \

--executor-cores 2 \

/home/Hadoop/spark-1.5.0/lib/spark-examples-1.5.0-hadoop2.3.0.jar

 

Yarn-clientyarn-cluster区别

Spark executor作为一个yarnContainerspark可以使多个Tasks在同一容器中运行。

 

Yarn-cluster模式会将driver运行在AM中,当任务提交后,client就会关闭,用于生产环境(driver挂掉后会自动重新启动)

Yarn-client模式中,AM仅向yarn请求executorclient会和executor通信来调度它们的工作,client不会离开,用于交互和调试.(不可靠,一旦client挂掉,driver也会挂掉)

 

添加其他jar包:

./bin/spark-submit \

--class my.main.class \

--master yarn-cluster \

--executor-memory 2G \

--num-executors 3 \

--jars my-other-jar.jar,my-other-other-jar.jar

My-main-jar.jar app_arg1 app_arg2

 

应用程序提交过程:

 

1.Spark在集群上以独立进程集合方式运行

接受用户Driver程序中main函数的SparkContext对象的协调

2.SparkContext会与多种资源管理器连接(StandaloneMesosYarn

3.连接后,Spark可以在集群上的节点获取Executor,负责计算和存储

4.spark会将代码(jar)发送给executor

5.最后SparkContext会将任务发送至Executor执行

Spark部署与程序运行示例 - Binder - Binder

配置文件参数:

SparkConf中的配置优先级高于 spark-submit中的标志位高于配置文件中的值

 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值