掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
對外提供的核心能力包括一站式數(shù)據(jù)開發(fā)交互平臺,支持?jǐn)?shù)據(jù)從進來(數(shù)據(jù)集成),到處理(數(shù)據(jù)探查、作業(yè)調(diào)度),到出去(數(shù)據(jù)服務(wù),BI 報表),到運維(任務(wù)運維、數(shù)據(jù)質(zhì)量)等全鏈路的可視化操作。

成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序開發(fā),十年建站對加固等多個方面,擁有豐富的網(wǎng)站設(shè)計經(jīng)驗。
下圖展示了 IDS 在我們大數(shù)據(jù)平臺中的定位,其上層銜接用戶或各種應(yīng)用系統(tǒng),底層聯(lián)通各種各樣的計算或存儲引擎。
IDS的定位
在未引入 Linkis 和 DSS 之前,公司內(nèi)部缺少一個統(tǒng)一的開發(fā)入口,數(shù)據(jù)平臺中的用戶在進行數(shù)據(jù)探查、業(yè)務(wù)上線的過程中要分別登入到不同的組件中進行操作,比如:對庫表元數(shù)據(jù)的訪問需求,需要使用自研的指標(biāo)系統(tǒng)或數(shù)據(jù)地圖;做數(shù)據(jù)分析時,又要借助于 zeppelin 或 ipython 等工具進行交互式數(shù)據(jù)查詢;作業(yè)流調(diào)度發(fā)布時,又重度依賴于平臺組同事來編寫Airflow底層復(fù)雜的任務(wù)依賴描述代碼。
在數(shù)據(jù)開發(fā)的整條鏈路中,涉及到的系統(tǒng)之間無法做到有效聯(lián)通,應(yīng)用孤島問題日漸嚴(yán)重,用戶也疲于在各種組件之間反復(fù)切換,這種現(xiàn)狀一直影響著大數(shù)據(jù)平臺用戶的開發(fā)效率和使用體驗。同時,多個開發(fā)入口的存在,也增加了我們大數(shù)據(jù)平臺的運維成本,其潛在的數(shù)據(jù)流出風(fēng)險也被疊加放大。
在此背景之下,我們需要一個統(tǒng)一的一站式數(shù)據(jù)開發(fā)、分析和可視化的平臺。為此,我們先后調(diào)研或試用了商業(yè)化的大數(shù)據(jù)中臺產(chǎn)品,如網(wǎng)易的數(shù)帆和阿里的dataworks等。一線大廠開發(fā)出來的產(chǎn)品,確實有著一套業(yè)界非常領(lǐng)先的標(biāo)準(zhǔn)和規(guī)范,以及擁有著非常強大而全面的數(shù)據(jù)治理能力,但綜合考量我們現(xiàn)有的需求場景和成本投入等多方面因素,我們最終沒有接受商業(yè)化的數(shù)據(jù)中臺解決方案。
不得已,我們又把目光投向了開源界的產(chǎn)品,WDS 順理成章地闖入了我們的視野,雖記不清與 WDS 相識的具體日子,但 WDS 社區(qū)及其生態(tài)組件所展現(xiàn)出來的能力,著實讓我們怦然心動。
WDS 是一站式、金融級、全連通、開源開放的大數(shù)據(jù)平臺套件。目前支持的開源組件包括,DataSphere Studio 、Linkis,Qualitis 等。WDS 社區(qū)運營給力,成員活躍,自 19 年以來發(fā)布的 9 個開源組件,填補了業(yè)界“開源體系大數(shù)據(jù)平臺套件”的空白,受到了各行業(yè)的廣泛好評和采用。基于包裝好的輪子,讓眾多中小企業(yè)依托開源社區(qū)的力量來搭建內(nèi)部一站式大數(shù)據(jù)平臺的夢想變得不再遙不可及。
IDS(合數(shù)據(jù)工坊)是我們對 Linkis 和 DSS 的統(tǒng)稱,Linkis 作為計算中間件,底層對接各種計算或存儲引擎,上層銜接各種服務(wù)或應(yīng)用,DSS 則提供一站式數(shù)據(jù)開發(fā)管理門戶的基層組件。在現(xiàn)階段,我們使用的 DataSphere Studio 和 Linkis 組件的版本分別是:1.0.1 和 1.0.3。
在這其中,最重要的工作是完成對 Linkis 的適配和應(yīng)用,我司目前的大數(shù)據(jù)平臺基于 cdh5.13.1,為此我們修改了 Linkis 中依賴的大數(shù)據(jù)組件的版本以適配我們的版本,在這個過程中基本沒遇到什么太大的坑,因為自 Linkis1.x 版本以來,針對 CDH5、6 以及其他社區(qū)組件版本的兼容性都很好,基本不會出現(xiàn)太大的依賴沖突等問題,即使出現(xiàn)問題,依靠強大且活躍的 Linkis 社區(qū),我們也能得到及時而有效的反饋。
除了與內(nèi)部 hadoop 等組件做適配兼容之外,針對 Linkis1.1.x 版本中的一些大的特性修復(fù),我們也以 patch 的形式打到了內(nèi)部 1.0.3 版本里,如:
https://github.com/apache/incubator-linkis/issues/1765
https://github.com/apache/incubator-linkis/pull/1780
現(xiàn)階段是我們 IDS 的建設(shè)初期,內(nèi)部針對 DSS&Linkis 的應(yīng)用方式或一些小的改造點,我將在下文中從如下幾個方面來敘述:
IDS 集成了公司內(nèi)部的 SSO 登錄方式,用戶掃碼登錄系統(tǒng)之后,不可創(chuàng)建新的工作空間,只能使用統(tǒng)一的公共工作空間,在此工作空間下,不同角色身份的用戶,對 IDS 中集成的組件入口,擁有不同的訪問權(quán)限。
IDS
同時,基于 DSS 獨有的 AppConn 設(shè)計理念,DSS 可以簡單快速地集成各種上層 Web 系統(tǒng)。目前,在 IDS 中已集成的組件列表包括:數(shù)據(jù)傳輸,數(shù)據(jù)探查,數(shù)據(jù)地圖,運維平臺,數(shù)據(jù)質(zhì)量,SLA 治理,數(shù)據(jù)服務(wù)等。
組件列表
DSS AppConn 的相關(guān)文檔可參考:https://github.com/WeBankFinTech/DataSphereStudio/blob/master/README-ZH.md
各個系統(tǒng)組件的入口訪問基于 IDS 中的角色及權(quán)限管控,組件之間 SSO 互通,共享同一個登錄認(rèn)證體系。同時,為了更加方便地初始化用戶相關(guān)數(shù)據(jù),我們增加了用戶數(shù)據(jù)初始化服務(wù),負(fù)責(zé)在每個 Linkis 的安裝節(jié)點上初始化用戶的數(shù)據(jù),如:創(chuàng)建 Linux 用戶和用戶組,創(chuàng)建用戶的 workspace 目錄,為用戶分配統(tǒng)一的工作空間,在 Windows AD 域中創(chuàng)建用戶,SSSD 同步用戶信息到所有集群節(jié)點,為用戶導(dǎo)出 keytab 等。
不僅用戶對 IDS 組件入口的訪問受到權(quán)限控制,在進入到組件內(nèi)部之后,具體組件中受保護的資源同樣需要在權(quán)限系統(tǒng)上審批。
組件訪問權(quán)限
下圖展示組件系統(tǒng)中對應(yīng)功能模塊的訪問申請與負(fù)責(zé)人審批。
組件權(quán)限申請
基于 Linkis 官方提供的 JDBC 引擎,我們內(nèi)部額外增加了 Presto 、 Clickhouse 、 Kyuubi 等引擎,并在 Scripts 中支持了對應(yīng)引擎類型腳本的提交,以滿足用戶對不同計算引擎的需要,同時滿足用戶對不同類型腳本的區(qū)分。
引擎類型擴展
多引擎支持:
多引擎支持
Presto SQL 在我們內(nèi)部所占比重最大,針對 Presto 引擎,我們?yōu)橛脩籼峁┝诉M度提示和慢查詢列表等功能。
Presto慢查詢列表
當(dāng)前階段,Presto 慢查詢列表的主要功能是為了能直觀體現(xiàn)出來每個用戶提交 SQL 的執(zhí)行情況,我們的 Presto 集群在未上 k8s 之前,用戶隔離機制還不夠完善,有些用戶提交的 SQL 會占用較大的資源,耗時較長,對其他用戶的 SQL 任務(wù)也會產(chǎn)生一定的影響,在舊的平臺模式下,這部分指標(biāo)數(shù)據(jù)對開發(fā)用戶是不可見的,需要集群維護人員到 Presto UI 上去排查慢查詢的 SQL 任務(wù),無法做到及時有效地響應(yīng),這嚴(yán)重影響著用戶使用 Presto 查詢數(shù)據(jù)的體驗。
在這之后,我們在 K8s 環(huán)境中部署了 Presto 集群,在 Presto 集群擴縮容,及資源管理方面進行了較大的優(yōu)化,后續(xù),如有必要,針對 Presto Query 時輸出的指標(biāo),我們會繼續(xù)從多個維度來分析,并以更好地形式展示給用戶。
目前,官方在 DSS&Linkis1.0.3 中,對 JDBC 類型引擎的多數(shù)據(jù)源連接支持還不夠完美,我們在此基礎(chǔ)上做了改良。
JDBC 多數(shù)據(jù)源支持
如圖,用戶通過切換不同的數(shù)據(jù)源連接標(biāo)識,來達到連接不同 JDBC 服務(wù)的效果。后續(xù)官方會在 1.2.0 版本中支持此功能,詳見:https://github.com/apache/incubator-linkis/issues/2092
DSS 提供了一套作業(yè)流設(shè)計與上線功能,其底層調(diào)度組件 Schedulis 的調(diào)度能力依賴于 Azkaban,但我們內(nèi)部的調(diào)度系統(tǒng)一直使用的是 Airflow,在構(gòu)建 IDS 之前,我們有一套自研的作業(yè)流設(shè)計和上線平臺—— Cuckoo Cloud ,其 web 化功能類似于 DolphinScheduler ,支持用戶拖拽式的設(shè)計工作流,并一鍵發(fā)布作業(yè) DAG 到 Airflow 調(diào)度平臺上,以彌補 Airflow 在任務(wù)上線、依賴設(shè)計方面缺少可視化工具的不足。
因此在現(xiàn)階段,我們沒有使用 DSS 原生的工作流設(shè)計和發(fā)布能力,而是以 appconn 插件的形式集成了我們內(nèi)部的工作流設(shè)計平臺,兩個組件之間打通了 SSO 登錄,共享一套用戶認(rèn)證體系。
內(nèi)部的作業(yè)流設(shè)計組件主要分三層結(jié)構(gòu),DAG 配置管理、調(diào)度單元管理、以及每個調(diào)度單元中所包含的任務(wù)節(jié)點及其依賴關(guān)系等。
此處 DAG 配置與 Airflow 上的每個 DAG 信息相對應(yīng)。
DAG配置
IDS 平臺用戶把擁有某一具體業(yè)務(wù)含義的任務(wù)節(jié)點及其上下游依賴關(guān)系劃分到同一個調(diào)度單元之中,調(diào)度單元的作用不僅強調(diào)了某一具體的業(yè)務(wù)屬性,同時也是為了對一個完整 DAG 進行概念意義上的拆分。
調(diào)度單元
用戶在使用調(diào)度設(shè)計功能時,有豐富的任務(wù)類型可供選擇和組合,幾乎涵蓋了公司內(nèi)部一條數(shù)據(jù)開發(fā)鏈路中大部分的場景需要,同時,對額外任務(wù)節(jié)點的支持?jǐn)U充,也非??焖俦憬?。
tasks
調(diào)度工作流的設(shè)計
調(diào)度設(shè)計
備注,特殊任務(wù)節(jié)點,如 Tableau、報表刷新、報表發(fā)送類型任務(wù)。原有的開發(fā)模式是,Tableau 數(shù)據(jù)源刷新任務(wù)的定時執(zhí)行是需要用戶在 tableau server 平臺上創(chuàng)建相應(yīng)數(shù)據(jù)源的定時刷新計劃。這會帶來以下幾個問題:
針對上述問題,我們選擇把報表數(shù)據(jù)源刷新任務(wù)包裝成 Airflow 的任務(wù)節(jié)點,此舉帶來的成效有:
用戶完成工作流的設(shè)計之后,點擊發(fā)布按鈕,工作流便會被 Airflow 感知,渲染,繼而進行后續(xù)的定時執(zhí)行,對應(yīng) Airflow 上工作流如下圖:
IDS工作流
未來工作流設(shè)計平臺的一些需要提升的地方:
數(shù)據(jù)地圖以不同的安全等級、主題域或業(yè)務(wù)標(biāo)簽來劃分?jǐn)?shù)倉庫表和其他存儲系統(tǒng)中的庫表元數(shù)據(jù),并對外提供數(shù)據(jù)檢索能力,用戶通過該平臺可以以較小的成本找到所需的數(shù)據(jù)、報表、中間件、以及相關(guān)實體的血緣。
用戶在 IDS 平臺中查詢數(shù)倉、CK 或其他存儲系統(tǒng)中的線上表時,會經(jīng)過 SQL 攔截器解析出來待操作的表,用戶只有在數(shù)據(jù)地圖中提交這些表的訪問申請,并被審批通過之后,才被允許繼續(xù)執(zhí)行 SQL。
對應(yīng)的,Scripts 中庫表元數(shù)據(jù)列表所能展示的也僅限于授權(quán)過的資源,以及用戶在數(shù)據(jù)地圖中分類創(chuàng)建的一些主題庫的資源,如下圖:
主題庫
數(shù)據(jù)地圖及主題庫建設(shè)
數(shù)據(jù)地圖
現(xiàn)階段,IDS 平臺上的數(shù)據(jù)流出包含如下兩種形式:
用戶提交的 SQL 正確接收到結(jié)果集之后,便會激活結(jié)果集的導(dǎo)出功能,用戶點擊導(dǎo)出按鈕,填寫好數(shù)據(jù)導(dǎo)出申請的表單,提交之后,數(shù)據(jù)導(dǎo)出服務(wù)檢測到數(shù)據(jù)導(dǎo)出任務(wù),便開始處理用戶的數(shù)據(jù)導(dǎo)出需求。
數(shù)據(jù)導(dǎo)出
用戶可以在數(shù)據(jù)導(dǎo)出列表頁面中查看自己的數(shù)據(jù)導(dǎo)出任務(wù)最新的執(zhí)行狀態(tài)。
download-data-list
主要用于多種異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)交換,可實現(xiàn)各部門業(yè)務(wù)數(shù)據(jù)在應(yīng)用層面的互聯(lián)互通和信息共享。功能特性:
數(shù)據(jù)同步
數(shù)據(jù)質(zhì)量中心通過事前定義監(jiān)控規(guī)則、事中監(jiān)控數(shù)據(jù)的生成過程以及事后評估和問題追溯,圍繞完整性、一致性、準(zhǔn)確性、有效性和及時性五個方面衡量數(shù)據(jù)質(zhì)量, 并依托離線開發(fā)中心的數(shù)據(jù)質(zhì)量配置,提升企業(yè)數(shù)據(jù)價值。
現(xiàn)有數(shù)據(jù)質(zhì)量平臺功能
規(guī)則列表
數(shù)據(jù)質(zhì)量指標(biāo)
數(shù)據(jù)質(zhì)量指標(biāo)
SLA 平臺為用戶提供核心數(shù)據(jù)的申報、SLA 的在線簽署,及簽署后的 SLA 運維管理功能,通過協(xié)同全鏈路能力,共同保障申報節(jié)點的數(shù)據(jù)質(zhì)量。
數(shù)據(jù)SLA
SLA 指標(biāo)
SLA指標(biāo)
以下列舉的是一些小的優(yōu)化項,主要是為了優(yōu)化用戶的一些使用體驗。
share-file
spark-engine-conf
意見反饋
當(dāng)前階段,我們基于 DSS 和 Linkis 完成了內(nèi)部 IDS 平臺的初步構(gòu)建,獲取了部分用戶從 zeppelin 平臺過渡到 IDS 平臺的階段性成果,并為社區(qū)伙伴們,分享了我們內(nèi)部實踐過程中的一些自認(rèn)為值得說一說的點,以及一些小的功能或體驗改造項,以期望各位在調(diào)研或初步在使用 WDS 套件的公司或團隊,從我們的“答卷”中能獲取到一些有用的經(jīng)驗,最后,再次感謝微眾及社區(qū)其他開發(fā)者大佬們,對我們集成過程中的解疑答惑。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流