目录Spark Standalone -- 独立集群模式Standalone 架构图Standalone 的搭建1、上传、解压、重命名2、配置环境变量3、修改配置文件 conf4、同步到其他节点5、启动、关闭访问 spark web 界面Spark 提交任务的两种模式standalone client模式 日志在本地输出,一般用于上线前测试(bin/下执行)standalone cluster模式 上线使用,不会在本地打印日志自己写的代码如何提交到 Spark 并运行?YARN -- 在yarn上运行整合yarn(spark在yarn上运行的环境搭建)1、停止上面搭建的Spark独立集群2、spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的spark 文件3、修改配置文件4、yarn-site.xml 同步到其他节点,重启yarn在 yarn 上运行 org.apache.spark.examples.SparkPispark on yarn client模式 日志在本地输出,一般用于上线前测试spark on yarn cluster模式 上线使用,不会在本地打印详细日志 减少io查看运行日志自己写的spark代码如何提交到yarn上并运行?
Spark Standalone -- 独立集群模式
这里仅仅只是记录一下 Spark Standalone -- 独立集群模式 如何搭建
在公司一般不适用standalone模式,因为公司一般已经有yarn 不需要搞两个资源管理框架
所以不需要搭建
Standalone 架构图
Standalone 的搭建
1、上传、解压、重命名
cd /usr/local/moduletar -zxvf /usr/local/module/spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/soft/mv spark-2.4.5-bin-hadoop2.7 spark-2.4.5
2、配置环境变量
vim /etc/profileexport SPARK_HOME=/usr/local/soft/spark-2.4.5export PATH=$PATH:$SPARK_HOME/binsource /etc/profile
3、修改配置文件 conf
cd /usr/local/soft/spark-2.4.5/confcp spark-env.sh.template spark-env.sh#增加配置 -- spark-env.sh文件export SPARK_MASTER_IP=masterexport SPARK_MASTER_PORT=7077export SPARK_WORKER_CORES=2export SPARK_WORKER_INSTANCES=1export SPARK_WORKER_MEMORY=2gexport JAVA_HOME=/usr/local/soft/jdk1.8.0_171-------------------------------------------------cp slaves.template slaves#添加 -- slaves文件node1node2
4、同步到其他节点
scp -r spark-2.4.5 node1:`pwd`scp -r spark-2.4.5 node2:`pwd`
5、启动、关闭
启动、停止 集群,在master中执行cd /usr/local/soft/spark-2.4.5/sbin# 启动./start-all.sh# 关闭./stop-all.sh
访问 spark web 界面
http://master:8080/
Spark 提交任务的两种模式
需要进入到spark-examples_2.11-2.4.5.jar 包所在的目录下执行
spark-examples_2.11-2.4.5.jar -- 是 Spark 官方提供的,用于测试 Spark 是否搭建成功的一个例子
standalone client模式 日志在本地输出,一般用于上线前测试(bin/下执行)
spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512m --total-executor-cores 1 spark-examples_2.11-2.4.5.jar 100spark-submit -- 提交命令以这个开头--class -- 指定类名org.apache.spark.examples.SparkPi -- 类名--master -- 指定运行模式spark://master:7077 -- 指定Spark提交任务的端口--executor-memory -- 指定任务运行资源--total-executor-cores -- 指定任务运行资源spark-examples_2.11-2.4.5.jar -- 指定jar包100 -- 传入main()的参数,这里的main()是前面指定的类里面的
standalone cluster模式 上线使用,不会在本地打印日志
spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512M --total-executor-cores 1 --deploy-mode cluster spark-examples_2.11-2.4.5.jar 100--deploy-mode -- 指定部署模式cluster -- 集群模式可以通过 web 界面查看运行结果
自己写的代码如何提交到 Spark 并运行?
package com.shujia.sparkimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object Demo20Submit {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf()/*** 将代码提交到集群运行,不需要指定master(运行模式)* 在spark的提交命令指定*///conf.setMaster("local")conf.setAppName("Demo20Submit")val sc = new SparkContext(conf)val listRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8, 9))val sum: Double = listRDD.sum()println(s"sum is:$sum")/*** 将代码提交到集群运行* 1、将项目打包上传到集群* 2、spark-submit --class com.shujia.spark.Demo20Submit --master spark://master:7077 spark-1.0.jar* 需要在jar所在的位置提交任务* 注意:运行的时候如果报错说spark-1.0.jar在worker中找不到,则需要将spark-1.0.jar分发到node1、node2* scp spark-1.0.jar node1:`pwd`* scp spark-1.0.jar node2:`pwd`*/}}
YARN -- 在yarn上运行
在公司一般不适用standalone模式,因为公司一般已经有yarn 不需要搞两个资源管理框架
整合yarn(spark在yarn上运行的环境搭建)
1、停止上面搭建的Spark独立集群
停止集群,在master中执行cd /usr/local/soft/spark-2.4.5/sbin# 关闭./stop-all.sh
2、spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的spark 文件
3、修改配置文件
注:若上面的 Spark Standalone -- 独立集群模式 并没有搭建,则还需要做
上传解压、配置环境变量
上面搭建的独立集群时对配置文件做的修改可以删掉,也可以不用管他
cd /usr/local/soft/spark-2.4.5/confcp spark-env.sh.template spark-env.shvim spark-env.sh#增加配置 -- spark-env.sh文件export HADOOP_CONF_DIR=/usr/local/soft/hadoop-2.7.6/etc/hadoop#因为Spark需要获取hadoop的配置信息-------------------------------------------------------------------------往yarn提交任务需要增加两个配置 yarn-site.xml (/usr/local/soft/hadoop-2.7.6/etc/hadoop/yarn-site.xml)先关闭yarnstop-yarn.sh# 添加 -- yarn-site.xml文件<property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
4、yarn-site.xml 同步到其他节点,重启yarn
scp -r yarn-site.xml node1:`pwd`scp -r yarn-site.xml node2:`pwd`启动yarnstart-yarn.sh
之后就可以通过yarn来运行spark任务了
在 yarn 上运行 org.apache.spark.examples.SparkPi
在 master 上提交
先切到
cd /usr/local/soft/spark-2.4.5/examples/jars
目录下本地 -- 任务在哪提交,哪里就是本地
spark on yarn client模式 日志在本地输出,一般用于上线前测试
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 512M --num-executors 2 spark-examples_2.11-2.4.5.jar 100
spark on yarn cluster模式 上线使用,不会在本地打印详细日志 减少io
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 512m --num-executors 2 --executor-cores 1 spark-examples_2.11-2.4.5.jar 100
查看运行日志
获取yarn程序执行日志 执行成功之后才能获取到yarn logs -applicationId application_1560967444524_0003application_1560967444524_0003 -- 程序运行id
自己写的spark代码如何提交到yarn上并运行?
package com.shujia.sparkimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object Demo21ClazzNum {def main(args: Array[String]): Unit = {val conf = new SparkConf()/*** 将代码提交到集群运行,不需要指定master(运行模式)* 在spark的提交命令指定*///conf.setMaster("local")conf.setAppName("Demo21ClazzNum")val sc = new SparkContext(conf)/*** 读取hdfs中的文件**/val studentsRDD: RDD[String] = sc.textFile("/data/students.txt")val kvRDD: RDD[(String, Int)] = studentsRDD.map(stu => {val clazz: String = stu.split(",")(4)(clazz, 1)})//统计班级的人数val clazzNumRDD: RDD[(String, Int)] = kvRDD.reduceByKey((x, y) => x + y)//整理数据val resultRDD: RDD[String] = clazzNumRDD.map {case (clazz: String, num: Int) =>s"$clazz\t$num"}//保存数据, 保存到hdfsresultRDD.saveAsTextFile("/data/clazz_num")/*** 将代码提交到yarn上运行* 1、将需要处理的文件上传到hdfs* 2、将项目打包上传到集群* 3、提交任务* spark-submit --class com.shujia.spark.Demo21ClazzNum --master yarn-client spark-1.0.jar* 4、查看结果* hadoop dfs -ls /data*/}}
Spark Standalone -- 独立集群模式 Spark 提交任务的两种模式 spark在yarn上运行的环境搭建 自己写的spark代码如何提交到yarn上并运行...
如果觉得《Spark Standalone -- 独立集群模式 Spark 提交任务的两种模式 spark在yarn上运》对你有帮助,请点赞、收藏,并留下你的观点哦!