Spark代码开发
步骤
#1.构建Spark环境
#2.数据输入(告诉Spark读取哪里的数据)
#3.数据处理(对读取的数据做处理)
#4.数据输出(对计算后的结果数据做保存,一般是外部存储介质)
#5.停止Spark任务
wordcount入门案例
#源数据
hadoop spark hive
hive hadoop spark spark
hadoop spark flink
hive hadoop spark spark
flink hbase hello
spark zookeeper flink
使用pyspark实现wordcount词频统计
PyCharm代码实现
import re
from pyspark import SparkConf, SparkContext
#1.构建环境
conf = SparkConf().setAppName("REWordCount").setMaster("local[1]")
sc = SparkContext(conf=conf)
#2.读取数据
#file://文件系统的协议
#hdfs协议:hdfs://node1:8020
#input_rdd = sc.textFile("file:///root/project/pyspark_base40/day02/data/word_re.txt")
input_rdd = sc.textFile("hdfs://node1:8020/spark/wordcount/input/word_re.txt")
#3.数据处理
# \s+正则处理多余空格
result_rdd = input_rdd.flatMap(lambda line:re.split("\\s+",line))\
.map(lambda word:(word,1))\
.reduceByKey(lambda x,y: x + y)
#4.数据输出
#4.1 打印输出
result_rdd.foreach(lambda x:print(x))
#4.2 保存结果到HDFS
result_rdd.saveAsTextFile("hdfs://node1:8020/spark/wordcount/output")
#5.停止环境
sc.stop()
结果:
('hadoop',4)
('spark',7)
('',3)
('hive',3)
('flink',3)
('hbase',1)
('hello',1)
('zookeeper',1)
Standalone独立模式
Standalone模式,就是Spark实现了一套自己的分布式资源管理和任务调度。
Master主节点:管理节点
1) 接受客户端请求
2) 管理从节点
3) 资源管理和任务调度
Worker从节点:计算节点
a.运行计算进程Executor给每个计算进程分配一定的资源
b.Task线程计算任务就运行在Executor中
计算进程:Executor
为任务的计算提供资源
调度进程:Driver
对任务进行解析、调度、监控
端口
模式
client模式
Driver在客户端机器上启动
cluster模式
Driver在集群内的某一个节点启动
spark-submit脚本参数
master参数
--master:用于指定程序的运行的模式(Local、Standalone、YARN、Mesos、K8s)
--deploy-mode:决定了Driver进程运行的位置(两种模式:client【默认】、cluster)
Driver参数
driver-memory参数
--driver-memory:指定Driver内存大小,默认1g
--driver-cores:指定Driver CPU的核数,默认1核
--supervise:保证Driver进程安全,故障以后会自动重启,只能用于Standalone模式的cluster模式
Yarn模式
把Spark程序提交到Yarn上来运行,使用Yarn的分布式资源管理给Spark程序分配资源
Yarn执行流程
1)客户端申请提交运行MR程序
2)ResourceManager验证是否合法,如果合法,随机选择一台NodeManager启动AppMaster
3)AppMaster根据任务分配向ResourceManager申请Task运行的Container资源
4)ResourceManager根据资源情况分配对应的Container信息返回给AppMaster
5)AppMaster根据ResourceManager分配的Container信息,
将Container信息分发给对应的NodeManager
6)NodeManager收到Container信息,启动MapTask和ReduceTask运行
7)每个Task将自己运行的信息汇报给AppMaster,
AppMaster监控每个Task的状态,直到Task结束
8)AppMaster等到所有Task结束返回运行结果
模式
client模式
Driver在客户端机器上启动
cluster模式
AppMaster和Driver合二为一,行在集群内部的某个节点上