日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践

發(fā)布時間:2024/9/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

△Meetup 現(xiàn)場視頻

Kylin 平臺化實踐

首先,介紹下我們?yōu)槭裁催M行平臺化改造?

我們部門為公司內(nèi)其他業(yè)務(wù)線提供了各種大數(shù)據(jù)平臺,如 Kylin、HBase、Spark、Flink 等等,提供公共統(tǒng)一的平臺系統(tǒng)勢必會牽扯到用戶管理、資源隔離、部門內(nèi)各個平臺的融合等問題,而 Kylin 現(xiàn)有的用戶管理、資源隔離機制并不能滿足我們需求,基于此,我們對 Kylin 進行了平臺化改造。平臺化改造完成后,我希望在以下幾個方面,能夠有一些改進:

用戶管理

資源隔離

易用性提升

方便運維

1.?? 用戶管理

為了便于系統(tǒng)的管理及安全,公司內(nèi)部有一套自己的認證系統(tǒng),而且需要用個人賬號去驗證,所以 Kylin 作為一個平臺對外提供服務(wù)的話,也需要接入到該系統(tǒng)。所以,我們新增了一個用戶管理界面,該界面展示了 Kylin 平臺內(nèi)的所有用戶。管理員可以新增任一用戶到 Kylin 平臺,新增用戶時會填寫企業(yè)微信名、用戶角色以及是否激活用戶。當用戶登錄系統(tǒng)時,會自動檢測用戶賬號以及該賬號是否在平臺內(nèi)注冊,如果沒有注冊則無權(quán)限,反之自動登錄系統(tǒng)。

2. 內(nèi)部 Hive 兼容

由于歷史原因,我們部門內(nèi)的 Hive 版本(THive)與 Kylin 不兼容,這就導(dǎo)致 Kylin 無法正常訪問 Kylin 集群,所以我們采用了上圖所示的兼容方案。首先,我們使用社區(qū) Hive 版本搭建一個全新的 Hive,并作為 Kylin 的默認 Hive;其次,當 kylin 加載源表時,我們是通過內(nèi)部的 UPS 系統(tǒng)讀取 THive 的元數(shù)據(jù)信息;最后,在 Load 源表到 Kylin 時,我們根據(jù)表的元數(shù)據(jù)信息在 Kylin 的 Hive 上創(chuàng)建一張相同的表,但該表的存儲路徑依舊指向 THive 的路徑,而用戶在構(gòu)建 cube 時,則訪問新創(chuàng)建的表,至此就解決了 Kylin 訪問 THive 的問題。

3. 計算資源可配置化

目前,Kylin 配置計算資源信息有兩種方式:一是在 Kylin 配置文件中配置一個全局的計算集群及隊列;二是在創(chuàng)建工程或者 Cube 時,在擴展參數(shù)中指定集群配置。這兩種配置方式在靈活性及便捷性方面都比較差,而在我們內(nèi)部是有接口可以獲取到某一個用戶有計算資源的計算集群及計算隊列的,所以,在創(chuàng)建工程或者 Cube 時,我們使用了下拉框選擇式的方式,讓用戶選擇提交任務(wù)的計算資源及隊列,從而大大簡化了用戶的使用流程。

4. 通知機制

Kylin 只提供了發(fā)郵件通知的功能,而作為目前使用最廣泛的工具,微信、企業(yè)微信在實時性及便捷性方面都遠遠勝于郵件,所以,我們提供了郵件、微信、企業(yè)微信三種方式,供用戶選擇。

5. 定時調(diào)度

Kylin 系統(tǒng)自身并沒有提供定時調(diào)度功能,但基本上每家公司都有自己的統(tǒng)一調(diào)度平臺,我們也不例外。我們通過 Kylin 提供的API接口,將 Cube 定時構(gòu)建的功能作為一個插件集成到了公司內(nèi)部的統(tǒng)一調(diào)度平臺上。

6. 業(yè)務(wù)接入

做完以上平臺化改造后,Kylin 平臺基本具備了接入不同類型業(yè)務(wù)的能力,用戶申請接入流程如上圖所示。

業(yè)務(wù)使用情況:

我們團隊是在今年初才開始引入 Kylin,目前已經(jīng)在使用的業(yè)務(wù)主要有 QQ 音樂、騰訊視頻、廣點通、財付通等,Cube 的數(shù)量有 10 個,單份數(shù)據(jù)存儲總量是 5 T,數(shù)據(jù)規(guī)模在 30 億條左右。

Flink Cube Engine 原理及實踐

目前,Kylin 已經(jīng)支持使用 MapReduce 和 Spark 作為構(gòu)建引擎,而作為目前比較火的流批一體的大數(shù)據(jù)計算引擎怎能缺席?所以我使用 Flink 開發(fā)了一個高性能的構(gòu)建引擎:Flink Cube Engine。

Flink Cube Engine 是騰訊基于 Kylin 插件化的 Cube Engine 架構(gòu)開發(fā)的一個高性能構(gòu)建引擎,目前已具備了上線使用的能力,感興趣的同學可以體驗一下,目前該引擎已經(jīng)在騰訊生產(chǎn)環(huán)境上線 1 個月+,非常穩(wěn)定而且效果不錯。

Umbrella issue:

https://issues.apache.org/jira/browse/KYLIN-3758

分支:

https://github.com/apache/kylin/tree/engine-flink

1. 支持 Flink Engine 的子任務(wù)

Kylin 的一次 Cube 構(gòu)建任務(wù),包含了很多個子任務(wù),而最重要的莫過于 Cube 構(gòu)建這一步驟,所以,我們在 build 和 merge Cube 這兩種任務(wù)中,優(yōu)先實現(xiàn)了Cube 構(gòu)建這一步驟,其他計算步驟依舊通過使用 MapReduce 來實現(xiàn)。

2. 如何使用 Flink Cube Engine

選擇使用 Flink Cube Engine 的方式也和選擇 Map Reduce 和 Spark 任務(wù)類似,我們提供了前臺可視化的界面,供用戶選擇。

3. Flink Cube Engine 與 Spark ?(線上業(yè)務(wù))

上圖是我們內(nèi)部業(yè)務(wù)上線 Flink Cube Engine 之后的性能對比,從圖中可見,該步驟的構(gòu)建耗時從 49 分鐘降到了 13 分鐘,優(yōu)化效果比較明顯。兩種情況的資源配置如下:

Flink 配置為:

-ytm 4G -yjm 2G -ys 1 -p 100 -yn 100

Spark 采用的動態(tài)分配資源如下:

kylin.engine.spark-conf.spark.dynamicAllocation.enabled=true

kylin.engine.spark-conf.spark.dynamicAllocation.minExecutors=2

kylin.engine.spark-conf.spark.dynamicAllocation.maxExecutors=1000

kylin.engine.spark-conf.spark.dynamicAllocation.executorIdleTimeout=300

kylin.engine.spark-conf.spark.shuffle.service.enabled=true

kylin.engine.spark-conf.spark.shuffle.service.port=7337

雖然,Spark 采用的是動態(tài)分配資源,但在任務(wù)執(zhí)行過程中,我們觀察到 Spark實際分配的資源遠比 Flink 要多的多。

那為什么性能提升會那么明顯呢?

4. Flink Cube Engine 的優(yōu)化

性能的提升,無非有兩方面的原因,一是參數(shù)的優(yōu)化,二是代碼的優(yōu)化。

1)?? 調(diào)參

影響 Flink 任務(wù)性能主要有幾個核心參數(shù):并行度、單個 TM slot 數(shù)目、TM container 數(shù)目,其中單個 TM container 數(shù)目=并行度/單個 TM slot 數(shù)目。

我們調(diào)優(yōu)的過程采用了控制變量法,即:固定并行度不變、固定 Job 總內(nèi)存數(shù)不變。通過不斷的調(diào)整單個 TM 的 slot 數(shù)目,我們發(fā)現(xiàn)如果單個 TM 的 slot 數(shù)目減少,拉起更多的 TM container 性能會更好。

此外,我們還使用了對象復(fù)用、內(nèi)存預(yù)分配等方法,發(fā)現(xiàn)沒有對性能提升起到太大的效果。

2)?? 代碼優(yōu)化(合并計算)

在實現(xiàn) Flink Cube Engine 的時候,一開始我們使用了 Map/Reduce 兩個算子,發(fā)現(xiàn)性能很差,比 Spark 的性能還要差很多,后來我們通過調(diào)整使用了 Flink 的 mapPartition/reduceGroup 兩個算子,性能就有了明顯的提升。

Flink Cube Engine 下一步的計劃:

1. 全鏈路 Flink

如上所述,目前 Cube 構(gòu)建過程中,只有最關(guān)鍵的 cube 構(gòu)建這一子任務(wù)使用了 Flink,而其他子任務(wù)仍然使用的是 MapReduce,我們下一步會繼續(xù)完善 Flink Cube Engine,將所有的子任務(wù)都使用 Flink 來構(gòu)建。

2. Flink 升級到 1.9

Flink 最近發(fā)布了 1.9.0,該版本包含了很多重要特性且性能也有了一定提升,所以,我們會把 Flink Cube Engine 使用的 Flink 版本升級到1.9.0。

打一個自己的小廣告,大叔本人最近在做一個一對一在線定制學習的課程,

有興趣的小伙伴可以后臺回復(fù)【定制】了解一下,或者加我微信聊聊

覺得有價值請關(guān)注▼

總結(jié)

以上是生活随笔為你收集整理的kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。