自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (7)
  • 收藏
  • 关注

原创 Spark SQL扩展外部数据源内部机制分析

Spark作为一个分布式计算引擎,其核心模块SQL支持外部数据源扩展,极其提高了其应用场景的广度和深度。自定义外部数据源,网上存在大量的学习资料,但Spark内部如何实现这些扩展机制的资料,去少之又少。我阅读并调试了大量的代码,最终理清了其脉络,由于涉及篇幅较多,我只写了核心过程,掌握这些过程,对理解sql扩展数据源机制会有极大帮助。由于内容比较枯燥,建议读者结合Spark代码去分析下面的内容关键抽象逻辑:Sessionstate抽象类BaseSessionStateBuilder,被每一个

2021-09-14 18:01:06 305

原创 流数据如何在Flink新线程模型上流动

Flink的新线程模型从1.9开始,到1.10才改造完成,但笔者接触FLink都已经1.10了,在研究Flink线程模型时才得以了解这些信息,所以对之前版本的线程模型并不熟知。为了简化研究的复杂度,本文试图调试Flink的local模式看看新线程模型下如何传递数据。下文分别从两个角度分析:1、各个相关线程的启动。2、数据如何流动。花了3天时间终于理清楚了。经过研究它们的交互图如下:该图流程相对清晰,读者可根据流程图理解交互过程,下文会通过调试代码完成解读。一、各个相关线程的启动打开

2021-08-24 17:45:47 310

原创 SQL物理计划是起什么作用

随着海量数据的涌现,业务上对海量数据分析速度的要求越来越严格,这很大程度上取决于分布式SQL的执行速度。很多人在了解分布式SQL的架构逻辑中,都会遇到分布式SQL物理计划这个概念 ,相信对于很多想了解分布式SQL内部逻辑的朋友来说应该是抽象的、很难理解的。笔者也是通过了大量的资料查阅 ,最终才理解了它到底是干什么用的。Spark/Flink是最锋利的两把分析利剑,本文会借助Spark/Flink的物理计划实现过程,尽量以最通俗的方式说明白物理计划是个什么角色。1.1 、Spark 上物理计划的简化图。.

2021-08-24 17:38:52 222

原创 Spark Shuffle架构(1) : 手撕combineByKeyWithClassTag源码祭旗

#大数据常用技术#大数据#spark分布式计算领域,所有的操作几乎都围绕shuffle进行,掌握shuffle的架构设计,有助于分析计算的性能,把握算子执行的脉络。本文主要是分析Spark的Shuffle架构设计过程。Spark 以shuffle为分界线划分stage,然后逐步提交stage。其中代表的有reduceByKey和groupByKey算子。两者的最大区别就是前者具备局部聚合功能,后者不具备局部聚合功能,容易导致Execute上OOM的发生。Spark在对两者的实现上进行了接口抽象,

2021-08-24 17:36:32 211

原创 Flink流数据如何在不同的TaskManager之间流动?

原创马申跃架构与英文3天前收录于话题#Flink6#大数据26#大数据常用技术20流数据如何在Flink 不同的TaskManager之间流动?这是任何一位想深入研究Flink内核的伙伴都绕不过去的逻辑,之前写过一篇文章《流数据如何在Flink新线程模型上流动》,主要通过Demo调式研究了Flink在local模式下的数据流动过程,其完全是在同一个TaskManager内,Inputchannel使用的都是LocalInputchannel,这次好奇下RemoteInputChan...

2021-08-24 17:33:22 452

原创 并发编程基础—BIO NIO AIO

原创马申跃架构与英文2020-04-07收录于话题#大数据17#大数据常用技术15设计一个系统,我们通常从线程通信协议、线程通信方式、线程模型等几个角度考虑。线程通信协议即设计一个消息协议,可以让通信双方理解。线程通信方式即线程发出消息后,其是处于同步还是异步状态,其决定了系统运行的效率。线程模型对应的是线程调度方式,线程模型的好坏直接决定了系统的运行效率和稳定性。本文我们主要聊聊线程通信方式,常见的有BIO(阻塞IO)、NIO(非阻塞IO)和AIO(异步IO)。Linux系统运行...

2021-06-18 16:53:39 63

原创 HDFS、YARN核心框架RPC基础模型

原创马申跃架构与英文收录于话题#大数据常用技术15#大数据17最近处理YARN线上问题时,顺便梳理了下其RPC流程,发现其和HDFS使用的是同一套RPC模型,其逻辑较容易理解。如下图: HDFS RPC通信模型1个Listener:负责客户端请求,通过select注册监听accept事件,通过hash选择后端的Reader,并将接受的Request放到Reader的BlockingQu...

2021-06-18 16:51:37 82

原创 Spark异步事件总线机制源码分析

原创马申跃架构与英文收录于话题#大数据常用技术15#大数据17#spark2Spark 事件总线贯彻整个应用,TaskScheduler 、Executor、JobScheduler、SQLExecution等关键交互逻辑离不开event的传递,为了更好的发挥Spark性能,以及扩展Spark功能,掌握event传递机制显得尤其重要。总的来看,其流程相对清晰。基础过程如下图:在LiveListenerBus定义一个queue成员变量队列,该队列只会保存4个子队列,分别...

2021-06-18 16:49:54 197

原创 Spark读取外部数据的原理解读

原创马申跃架构与英文收录于话题#spark2#大数据17#大数据常用技术15为了简化理解,该文尝试使用SparkContext.textFile()为入口进行分析。但是把这个接口读透了,并不一定了解了原理,因为必须熟悉Spark的任务提交机制才能真正了解。1、Spark任务提交机制简要分析:Spark算子分为Transformation和Action。Action会触发任务执行。Count属于action算子,我们翻到RDD.count()函数源码/**...

2021-06-18 16:48:06 291

原创 HiveServer如何支持高并发架构浅析

原创马申跃架构与英文收录于话题#大数据常用技术15#大数据17Hive是大数据生态必不可少的数据仓库服务,我们能使用很简单的sql命令执行分布式查询任务,后端可以对接MR、TEZ、SPARK分布式查询引擎。高性能是衡量分布式的指标,为了对hive能更高效的使用,我们有必要研究其线程模型是如何支持高并发的。我们以Beeline和HiveServer为入口分析下客户端和服务端执行流程。一、HiveServer执行解析。首先看下service接口及其继承类其中Hive Ser...

2021-06-18 16:46:22 649

原创 FlinkOnYarn源码分析

原创马申跃架构与英文收录于话题#大数据17#Flink2Flink可以对接第三方资源进行弹性伸缩,常见的有Yarn、K8S。Flink对接Yarn有两种模式,分别是session模式和per-job模式。由于生产环境多用per-job模式,因此本文主要分析对接Yarn时per-Job模式的提交过程。Flink提交application语句:./flink run -m yarn-cluster ./flinkApp.jar客户端提交命令过程分析该语句最终有入口类org.ap...

2021-06-18 16:44:19 355

原创 Flink之Metric监控架构剖析

这几天开始接触linux IP 协议栈,并试着去让理论和源码结合起来去读,渐渐发现网络理论与网络编程 不是一个数量级上的,。结合代码和理论一起学,才能对网络有更深层次的理解。

2021-06-18 16:39:54 552

原创 Hadoop,spark,storm

Today ,i have read three computing model from books,they are map/reduce ,trident, spark.i can't feel their difference when writing program.because when computing, they are all transparent. .maybe i

2016-01-04 14:47:21 380

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除