1.本地模式(local)
不指定master,或者–master local
local:只是用一个cores local[N]:使用N个cores local[*]:使用所有的cores
2.standalone 集群模式 spark框架自带的模式
–master standalone的master地址
eg: –master spark://linux01:7077
3.yarn集群模式
把spark任务运行在yarn平台
–master yarn
4.mesos集群模式
把spark任务运行在mesos平台
–master mesos
以standalone集群模式为主
前提:在linux虚拟机上安装部署好spark集群,设置好环境变量
1.单独启动(停止)master或worker
start-master.sh stop-master.sh
start-slaves.sh stop-slaves.sh
2.一键启动(停止)spark集群
start-all.sh
stop-all.sh
1.两种方式:
在客户端提交任务,客户端可以在任意地方,只要他连接了spark集群
1)spark-shell (其实它也调用了spark-submit)
spark的交互式命令行,多用于本地测试程序
默认是local模式,在本地使用多线程来模拟分布式程序。
eg: spark-shell –master spark://linux01:7077
2)spark-submit
用于提交spark程序到spark集群中运行。根据jar包提交任务,是工作中的首选。
格式:
spark-submit –master 任务提交的模式 –class 程序的main方法所在的类 jar包 main方法的参数列表
1.读取本地文件
如果运行的模式是集群模式,那么不能读取客户端的本地文件,因为最终任务是运行在spark集群中的,spark的各个节点上不一定有客户端的本地文件。
如果以local模式运行,可以读取客户端本地文件。
2.读取hdfs上的文件
将结果保存到hdfs上:
通过浏览器查看结果:
注:spark 中的算子,是lazy执行的。
spark中的算子是lazy执行的,然后当遇到action类的算子的时候,才会开始执行。
reduceByKey 是一个shuffle类的算子.
textFile flatMap map reduceByKey 转换类的算子 transformation
action类的算子: collect,触发任务的执行 saveAsTextFile
rdd上的算子分为两类,
转换:transformation 每次会生成一个新的RDD
行动: action 不会生成rdd,得到相关的结果数据,存储数据。
1.创建maven工程 且导入了Scala,Java,Spark,Hadoop等依赖包
2.写程序
3.打jar包
结果
4.上传jar包到Linux上
执行:
5.查看结果:
必须要有的两个参数:
.setMaster(“local”)
.setAppName(类名.getClass.getSimpleName)
**附:
7077的端口是Master 和worker之间的通信端口
8080 是Master的web访问端口 默认的**