第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Apache Flink 源碼解析(一)入口,bash腳本

標(biāo)簽:
Flink

概述

因为自己在阅读源码的过程中曾经遇到过很多问题,现在稍微有一点点的经验希望分享给很多从零开始的人。Apache的项目代码量很大,很难做到彻底通读,我也是一步一步的先从整体的架构来分析。阅读源码的好处有很多,在此就不一一赘述。

介绍

首先介绍以下flink,它是一个分布式,高容错,能保证每条消息只被处理一次的流处理引擎,也是对Google Dataflow模型的一个较好的开源实现,虽然还是有一些不足之处。虽然在runtime中用的是同一个引擎,但是却提供了针对stream和batch的两套api,不过在后续的更新中应该更好地加入了对sql的支持来完成统一。

本次解析参考的代码是flink1.2版本。

另外Flink是使用Scala和Java混编,关于Scala和分布式工具包Akka的学习资料后续我会补充。

入口

首先是找到入口。因为一个项目中可能有几个主函数,而且大数据相关的项目还会兼容Yarn和Mesos,入口的话就更多了。在这里我会用Local模式和Standalone Cluster模式来讲解,一方面对Yarn和Mesos相关的背景就不需要怎么介绍(事实是我还没学 : ( ...),另一方面入门门槛也稍低一些,还省略了很多代码可以以后再分析。

要找入口,那就要去找启动脚本,建议大家可以稍微学一下bash, 不说能写的多好,最起码能看懂启动脚本就行。

Flink的启动脚本源码在flink-dist/src/main/flink-bin/bin文件夹下,其中有start-cluster和start-local。其中start-local的代码很简单


webp

start-local.sh代码片段

就是调用同文件夹下的jobmanager.sh脚本,因为是本地模式,所以输入参数是local。其中taskmanager的启动时嵌入在同一个jvm中,后面会做解析。

而start-cluster集群模式下的运行就较为复杂


webp

start-cluster.sh代码片段

在这里不会对Zookeeper下的高可用模式进行介绍,只介绍普通集群模式,所以直接参考else后面的语句,同样是运行jobmanager脚本,只是第二个命令行参数变成了cluster。所以接下来去看jobmanager.sh。jobmanager.sh在对入参进行了一系列判断之后,会到以下代码块。


webp

jobmanager.sh代码片段


不管是前台运行还是后台运行,都会调用flink-daemon.sh脚本,下面就是启动脚本的核心。


webp

flink-daemon.sh代码片段判断部分

在flink中,他会根据先前运行的脚本调用daemon脚本,所以需要运行的可能不只是jobmanager,在这儿因为我们是从jobmanager.sh中进入daemon,所以需要运行的class是org.apache.flink.runtime.jobmanaer.JobManager,所以我们看源码的入口也就在这个类。

以下是启动jvm将该类作为主程序的运行,其中很多事jvm的启动参数,不做细讲。


webp

flink-daemon.sh代码片段运行部分

总结

至此,flink的local与cluster启动脚本应该已经比较清晰,如果想开始阅读源码的话就从org.apache.flink.runtime.jobmanaer.JobManager这个类开始看起。因为flink中基于akka的部分大部分是使用scala实现,所以建议可以先去看scala文档,或者runoob.com的scala入门教程,后续还可以研读Scala In Depth这本书。



作者:铛铛铛clark
链接:https://www.jianshu.com/p/5903f6c8667c


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消