Spark角色介绍
-
-
它会运行客户端的main方法,构建了SparkContext对象,它是所有spark程序的入口
-
-
2、Application
-
它就是一个应用程序,包括了Driver端的代码和当前这个任务在运行的时候需要的资源信息
-
-
3、Master
-
它是整个spark集群的老大,负责资源的分配
-
-
4、ClusterManager
-
它是一个可以给任务提供资源的外部服务
-
standAlone
-
spark自带的集群模式,整个任务的资源分配由Master负责
-
-
yarn
-
spark可以把程序提交到yarn中去运行,整个任务的资源分配由ResourceManager负责
-
-
mesos
-
它是一个apache开源的类似于yarn的资源管理平台
-
-
-
-
5、Worker
-
它是整个spark集群的小弟,任务最后会运行在worker节点
-
-
6、Executor
-
它是一个进程,任务最后会运行在worker节点的executor进程中。
-
-
7、task
-
它是一个线程,spark的任务是以线程的方式运行在worker节点的executor进程中。
spark-shell的使用
1、通过spark-shell --master local[N] 读取本地数据文件实现单词统计
-
local表示本地运行,跟spark集群没有任何关系,方便于我们做测试
-
N表示一个正整数,在这里local[N] 就是表示本地采用N个线程去运行任务
-
它会产生一个SparkSubmit进程
spark-shell --master local[2]
sc.textFile("file:///root/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect
sc.textFile("file:///root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
2、通过spark-shell --master local[N] 读取HDFS上数据文件实现单词统计
#spark整合HDFS
vim spark-env.sh
#引入hadoop中配置文件路径
export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop
spark-shell --master local[2]
sc.textFile("hdfs://node1:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
3、通过spark-shell 指定master为整个spark集群中alive的master地址
spark-shell --master spark://node1:7077 --executor-memory 1g --total-executor-cores 2
sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
使用spark-submit提交jar包任务到集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node1:7077,node2:7077,node3:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
examples/jars/spark-examples_2.11-2.1.3.jar \
10