我可以不吃啊 发表于 2024-9-9 17:57:41

spark-python

前言:本帖子是看了黑马教学视频结合spark八股,记录一下spark的知识.
一.spark介绍

1.1 spark的运行模式

https://i-blog.csdnimg.cn/direct/579d44d8902b4639b0531c8d0241bb24.png
1.2 spark的架构角色

在讨论spark的架构角色时,首先先回顾一下yarn的架构角色.
https://i-blog.csdnimg.cn/direct/fcef2a82ca80463487009790b64c7eef.png
spark架构角色:

https://i-blog.csdnimg.cn/direct/c1dc882b20034841bcef6626775b40f1.png
https://i-blog.csdnimg.cn/direct/7f75b396b2804100871afa638c0defbb.png
二.standalone 运行原理
2.1standalone架构
https://i-blog.csdnimg.cn/direct/4a48129a026d484683f3c0d370c11a4a.png
   https://i-blog.csdnimg.cn/direct/d4d629b72d9b4cd794b2b136253cf64a.png
standalone中有三类进程:


[*]master
[*]worker
[*]historyserver
    https://i-blog.csdnimg.cn/direct/1d930e99612f41409e6fcdee2459f3c8.png
在 standalone 模式下, master进程和 worker进程是固定的。
开启一个任务,就会在master进程中开启一个对应的 Driver线程,然后在worker进程中开启一个或者多个 Executor线程
开启两个任务,就会在master进程中开启两个对应的 Driver线程,对应的Executor各自汇报给对应的Driver,Executor数目根据你任务环境而定。
在该图中:


[*]dirver运行在master进程中,executor运行在worker进程中.
[*]master会管理worker的资源环境,worker会管理executor的任务运行环境.
[*]一个任务就有一个driver带有它工作的executor,两个任务有两个dirver带有它工作的executor.
[*]当任务完成之后,dirver就会消失(体如今任务的driver端口打不开),可以通过日记查察.
2.2  standalone的集群环境安装

2.2.1 集群规划

https://i-blog.csdnimg.cn/direct/0091f254fbf34a1fb2781a50cda47ffd.png
2.2.2 spark集群摆设



[*]首先安装anaconda,由于spark要在python环境下实行, 以是要在三台电脑上安装python环境,并且创建虚拟环境.
[*]设置环境变量
[*]其他安装步调
这里安装步调不做介绍了(由于纯看课,没有实操)

2.3 spark步伐运行层次架构

   https://i-blog.csdnimg.cn/direct/9a1b0b5c9a7d49f4b0e63d14d09b476f.png


[*]4040是一个步伐运行时间绑定的端口,dirver和spark的application是绑定的,一个步伐绑定一个,两个步伐绑定两个,在运行的时间申请的端口,步伐运行完,该端口注销,有几个application,就有几个端口.
[*]8080在步伐运行之后也不会停止.
[*]18080:是查察历史运行状态的端口.
    spark在应用步伐实行时,大概可以分为4个层级:
application-->job-->stage-->task
当我们在实行时,一个应用步伐(application)可能比较大,会分配出多个子任务(job),最少一个子任务,每个任务有差别的stage运行,先干什么,在干什么,那阶段又可以分成几个task.


[*]在之后rdd的时间,会再详细介绍这些.
总结:
https://i-blog.csdnimg.cn/direct/404ce451d5ac4cf6ae2b0d4845a9b703.png
 2.4 StandAlone HA

2.4.1 StandAlone HA 运行原理

StandAlone HA是由于StandAlone 工作架构是主从架构,master只有一个,会出现单点故障,如果主节点(master)宕机的话,那么整个集群就没有办法正常工作了,StandAlone HA就是为相识决这个问题而产生的.
   基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)--可以用于生产环境。     ZooKeeper提供了一个Leader Election机制,利用这个机制可以包管固然集群存在多个Master,但是只有一个是Active (活跃)的,其他的都是Standby(备份)。当Active的Master出现故障时,别的的一个Standby Master会被推举出来。

[*]spark集群启动的时间会启动多个master节点,master在设置了zookeeper HA模式之下,在启动的时间会去zookeeper注册一个临时节点,谁先启动,谁先注册成功,谁就是active的master,另一个作为standby进行监听.
[*]worker启动成功之后,会和zookeeper进行通讯,就会得知谁是活跃的master.
[*]然后worker和该master组件成一个可用的集群.
[*]如果活跃的master宕机了,那他的临时节点失效,然后standby的master就注册临时节点,变成了active的master.
[*]然后workers从zookeeper中得到活跃的master节点,进行正常工作.
2.4.2 基于zookeeper搭建spark的Standalone HA集群.

这里不做过多介绍,没有搭建.
2.4.3 总结

https://i-blog.csdnimg.cn/direct/9a81d8dbee714360be1ce3697b879fcc.png
三.spark on yarn的环境搭建(很重要实际生产中用)

这一节比较重要,但是这里仍然不搭建,条记会详细记录.
3.1 spark on yarn的本质

首先如果我们想要一个稳定生产的spark环境,那么最优的选择就是构建:StandAlone HA集群.
其次,一样平常企业资源比较紧缺,根本上都会有hadoop集群,yarn和spark standalone都是可以进行资源调理的,再搭建standalone就比较费资源,那就出现了spark on yarn.
   对于spark on yarn,无需摆设spark集群,只要找一台服务器,充当spark的客户端,即可提交任务到yarn集群中运行.(这里找一台服务器充当客户端,什么意思?standalone 模式下不是这样嘛?)
答:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: spark-python