目录
Spark概述
Spark是一个分布式计算框架,它可以处理海量数据。即可处理离线数据、也可以处理实时数据。Spark框架高度依赖于内存,也支持将结果持久化到磁盘。Spark可以看作Scala的壳子,通过Spark可以使用Scala语言的语法和函数
-
与其它计算框架的比较
MapReduce:运用于离线批处理,高度依赖于磁盘IO
Stom:用于实时计算
Spark:应用于离线批处理 和 实时计算,高度依赖于内存
Flink:应用于实时计算
-
生态架构
Spark运行模式
-
Spark-Local模式
https://mirror.bit.edu.cn/apache/spark/spark-3.0.0-preview2/spark-3.0.0-preview2-bin-hadoop2.7.tgz
基于Hadoop版本下载对应Spark
1. Spark的目录结构
2. 修改配置文件spark-env.sh
3. 启动
[root@yangjjhost bin]# sh spark-shell
不携带参数,默认启动命令:spark-shell --master local[*] ,表示使用当前机器所有可用的资源,即当前机器所有可用线程。local[N] 表示在本地模拟N个线程来运行当前任务
local模式启动,默认在本机启动一个SparkSubmit进程
参数说明:
sc:SparkContext实例对象:
spark:SparkSession实例对象
4040:Web监控页面端口号
可视化管理台地址 http://yangjjhost:4040
-
Spark集群模式
在yangjjhost、yangjjhost02、yangjjhost03三台机器上搭建Spark集群。
先配置yangjjhost这台机器,其它两台机器同yangjjhost配置,只是SPARK_LOCAL_IP需要修改。
1. 修改Spark-Config配置
Vim spark-env.sh,修改下面3个地方
2. cp slaves.template slaves
Vim slaves 指定spark工作的3台机器
3. 启动
sbin目录下,执行指令:start-all.sh
通过jps指令,查看到Spark集群已经启动。在哪台机器执行的启动指令,那台机器便为Master结点,其它结点为Worker。因为yangjjhost机器也配置在了slave文件中,所以我们在yangjjhost机器执行了start-all.sh后会看到Master和Worker两个服务
4. 启动后,可以看到可视化控制台
http://yangjjhost:8080,给出了连接Master结点的地址
5. 任意一台机器都可以连接到Master结点,通过在bin目录下,执行Shell指令
Sh spark-shell.sh --master spark://yangjjhost:7077
若从分布式系统hadoop读取数据,需要start-dfs.sh启动HDFS。若从磁盘读取文件,每台机器都要存在一份同样的文件