大数据相关架构总结

spark 提交
通过spark提交到集群上时,Driver会再我们初始化sparkcontext时创建DAG Scheduler,和Task Scheduler

DAG会进行stage划分,然后通过创建TaskSet将Task提交到Task Scheduler上

当创建对象完成后,Driver会向集群的Master阶段发送Application任务

Master接受到任务的时候,会进行相关任务调度,找到对应的Worker,当workder接收到任务时,会创建对应的executor,

当executor成功的时候会反向注册到Driver

当第一个action算子触发的时候,开始提交任务

当task secheduler进行任务体提交的时候会进行对用的task分配

task任务进入会从线程池中获取到对应的线程,开始质心任务

从hdfs上读取数据
spark宽窄依赖
宽
	同一个分区会分配到不同下游分区中去,存在shuffle
窄依赖
	同一个分区只会分配到一个下游分区中,会存在多个上游分区分配到同一个下游分区中国,不存在shuffle。
hbase架构
存在client Hmaster-》负责组要HregionServer分配hregion

HRegionServer 负责维护HRegion,处理对应的io请求,负责切分Hregion

HRegionServer内部维护了HRegion,HLog->负责恢复数据,Hregion时hbase中表的一部分

HRegion中会维护store对象,store是表中的列簇,store内部有memoryStore,当向列簇中写数据时会协议到momorystore中,当写满的时候会
刷写成为StoreFile,而storeFile是底层存储到hdfs中的数据结构是Hfile。

kafka架构
	kafka存在生产者和消费者,生产者会将数据写入到kafka的topic中,而topic内部会进行分区,内部也会存在备份
	数据会被推送到消费中,消费者消费的数对应的offset再0.9前会被保存到zk中,但是如读取数据会大量读取zk,会造成zk压力过大
	再0.9以后会将对应信息保存到kafka集群中取。
kafka工作流程
kafka中的消息是以topic进行分类的,生产者生产消息,消费者都是面对topic的,
kafka中的topic中会对应多个partition,每一个分中都对应一个log文件,log文件总存储的是具体的数据,producer数据会不断追加到log文件的末尾,
并且每一条数据存在一个offset,每当消费者消费数据都会记录这个offset,防止出错。
kafkaack
ack参数配置--acks
	0:生产者producer不等待broker的ack,提供了最低演出,broker一接收到还没有写入磁盘就会返回,当broker故障就可能丢失数据 
不管是否写完,直接发送消息。
	1:producer等待broker的ack,partition中的leader落盘成功后返回ack,如果在follower同步成功自启leader故障那么就会丢失数据。
只等待leader写完就行。不管follower是否写完
	
	-1:producer等待broker的ask,partition的leader和isr中的follower全部落盘成功后才返回ack,如果leader在follower同步完成后
但是ask还未发送时,leader发生故障,那么就会数据重复。
kafka两阶段提交
数据进入后,开启一个kafka事务,正常写入到kafka标记为未提交,这是预提交
jobmanager触发checkpoint操作,barrier从source开始向下游传递,遇到barrier的算子将状态保存到状态后端,并通知jobmanager。
sink接收到barrier,保存当前状态,保存到checkpoint,通知jobmanager,开启下一段事务,用户提交下一个检查点的数据
jobmanager接收到所有任务的通知,发出确认消息,表示checkpoint完成
sink收到该消息正式提交该数据。
外部kafka关闭该事务,就可以消费数据了。
flink架构
	jobManager ->控制程序的主进程,会接收到应用程序,然后向resourcemanager请求程序必要的资源,TaskManager上的slot。
当获取到足够的资源,就会将执行图分发到运行他们的taskmanager上,执行过程中会负责所有需要中央协调操作,
检查点操作

	TaskManager->每一个taskManager中包含者slots,他限制了TaskManager执行任务的数量,启动后会向resourcemanager的插槽数目;
收到resourcemanager的指令后,会将插槽提供给jobmanager调。

	resourcemanager ->负责管理TaskManager的slot。jobmanager申请插槽的时候resourcemanager会将空闲的插槽的TaskManager分配给
jobmanager,如果没有空闲的插槽,他还会向资源提供平台发起会话,以提供七档taskManager进程的容器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘来是酋长啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值