火花思維:從 0 到 1 構(gòu)建一站式數(shù)據(jù)開發(fā)治理平臺(tái)
一、背景
火花思維是一家專注于青少年思維訓(xùn)練及綜合素質(zhì)提升的互聯(lián)網(wǎng)教育企業(yè),產(chǎn)品包含邏輯思維、中文素養(yǎng)、火花編程等。累計(jì)學(xué)員已超 70 萬,遍布全球 100 多個(gè)國家和地區(qū)。其主要采用直播、真人互動(dòng) AI 的方式進(jìn)行授課,通過將老師的啟發(fā)引導(dǎo)和動(dòng)畫、游戲、趣味教具等多種方式立體結(jié)合,將能力、思維、訓(xùn)練三者互相連接、層層遞進(jìn),在互動(dòng)實(shí)踐中培養(yǎng)孩子的觀察思考、邏輯思維以及自主解決問題等核心基礎(chǔ)能力。
隨著火花思維的業(yè)務(wù)發(fā)展,數(shù)據(jù)量和數(shù)據(jù)訴求呈現(xiàn)出爆炸式增長(zhǎng)的態(tài)勢(shì)。然而數(shù)據(jù)使用與管理模式已逐漸出現(xiàn)捉襟見肘,難以支撐企業(yè)高效運(yùn)營與決策支持的核心需求。具體而言,當(dāng)時(shí)我們面臨著以下幾大突出問題:
- 數(shù)據(jù)開放自助程度明顯不足,嚴(yán)重制約了數(shù)據(jù)價(jià)值的充分釋放。
- 系統(tǒng)性故障頻發(fā),對(duì)數(shù)據(jù)資產(chǎn)的可靠性構(gòu)成了嚴(yán)重挑戰(zhàn)。
- ETL 效率低下已成為制約數(shù)據(jù)處理能力的關(guān)鍵因素。為了解決這些問題,我們需要一個(gè)更加高效、智能的數(shù)據(jù)開發(fā)治理平臺(tái),以提升數(shù)據(jù)價(jià)值的挖掘能力、保障數(shù)據(jù)資產(chǎn)的可靠性、優(yōu)化數(shù)據(jù)處理效率,并降低技術(shù)成本。
在產(chǎn)品建設(shè)初期,我們?cè)紤]過第三方的現(xiàn)有產(chǎn)品。然而,經(jīng)過深入調(diào)研,我們發(fā)現(xiàn)了許多問題,最終決定自主研發(fā)。首先,當(dāng)時(shí)我們發(fā)現(xiàn)市場(chǎng)上的現(xiàn)有產(chǎn)品雖然在基本 SQL 開發(fā)、調(diào)度配置、任務(wù)運(yùn)維等方面表現(xiàn)出色,但在異源數(shù)據(jù)集成、DDL 適配、跨云部署等場(chǎng)景存在局限性。其次,我們對(duì)第三方產(chǎn)品的迭代速度和穩(wěn)定性存在擔(dān)憂。我們需要確保產(chǎn)品能夠滿足公司數(shù)據(jù)生產(chǎn)和消費(fèi)方對(duì)大數(shù)據(jù)的期望,并在使用過程中不會(huì)出現(xiàn)重大問題。如果我們純依賴三方產(chǎn)品的方法論以及售后支持和研發(fā)資源,那么會(huì)出現(xiàn)“不會(huì)用”、“加資源”、“等迭代”等常見矛盾現(xiàn)象。最后,我們認(rèn)為自主研發(fā)將為我們帶來更多的機(jī)遇和優(yōu)勢(shì)。通過自主研發(fā),我們可以更好地把控產(chǎn)品的應(yīng)用場(chǎng)景、功能矩陣和核心技術(shù),以便更好地滿足需求,并根據(jù)需求變化及時(shí)進(jìn)行調(diào)整和改進(jìn)。
二、產(chǎn)品簡(jiǎn)介
1. 功能介紹
Athena 數(shù)據(jù)工廠是火花自研的一站式數(shù)據(jù)開發(fā)治理平臺(tái),主要為運(yùn)營、BA、產(chǎn)品、研發(fā)、財(cái)務(wù)、技術(shù)支持等多樣化角色提供任務(wù)開發(fā)、任務(wù)運(yùn)維、提數(shù)分析、資源管理全方位的產(chǎn)品服務(wù),幫助數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)消費(fèi)者專注于數(shù)據(jù)價(jià)值的挖掘和探索。該平臺(tái)核心功能主要包含以下幾個(gè)部分:
- 離線開發(fā)模塊:此模塊致力于為數(shù)據(jù)生產(chǎn)者提供高效的數(shù)據(jù)處理工具。它支持定時(shí)及依賴觸發(fā)的離線任務(wù),任務(wù)類型豐富,涵蓋 HiveSQL、DorisSQL、Python、Mysql 與 Hive 間的數(shù)據(jù)交互,以及 Hive 至 ES/MQ、Hive 至 Doris 的數(shù)據(jù)同步。此外,我們提供了一鍵 API 生成功能,使得數(shù)據(jù)消費(fèi)者能夠便捷地通過接口獲取所需數(shù)據(jù),極大地提升了數(shù)據(jù)獲取的效率。
- 實(shí)時(shí)開發(fā)模塊:基于 Spark 和 Flink 兩大引擎,我們構(gòu)建了準(zhǔn)實(shí)時(shí)/實(shí)時(shí)任務(wù)開發(fā)平臺(tái)。目前,該平臺(tái)已成功支撐運(yùn)營分析、指標(biāo)監(jiān)控、日志采集、CDC 同步等多元化場(chǎng)景的需求,為用戶提供實(shí)時(shí)數(shù)據(jù)處理和分析的能力。
- 運(yùn)維中心模塊:在運(yùn)維方面,我們提供多維度的看板分析,從任務(wù)成功率、及時(shí)率、成本等多個(gè)角度全面展示數(shù)據(jù)處理的狀況。同時(shí),我們還支持上下游查詢、重跑當(dāng)前及下游、數(shù)據(jù)回溯、批量下線、任務(wù)監(jiān)控等基礎(chǔ)功能,確保數(shù)據(jù)處理流程的順暢與高效。
- 自助提數(shù)模塊:該功能基于 Hive、Spark 和 Presto 三種引擎,為數(shù)據(jù)分析師提供了強(qiáng)大的 SQL 交互能力,使他們能夠輕松地提取和下載所需數(shù)據(jù)。此外,我們還特別針對(duì)增長(zhǎng)業(yè)務(wù),提供了用戶三方標(biāo)簽的提取和下載功能,滿足用戶在增長(zhǎng)業(yè)務(wù)場(chǎng)景下的數(shù)據(jù)需求。
- 數(shù)據(jù)地圖模塊:數(shù)據(jù)地圖作為平臺(tái)的重要組成部分,為用戶提供了詳盡的數(shù)據(jù)資產(chǎn)信息。用戶可以通過該模塊查看數(shù)據(jù)目錄、明細(xì)信息、血緣關(guān)系、調(diào)度信息、更新記錄以及生產(chǎn)邏輯等關(guān)鍵信息,從而更好地理解和利用數(shù)據(jù)資源。
- 控制臺(tái)模塊:控制臺(tái)作為項(xiàng)目管理員和系統(tǒng)管理員的操作后臺(tái),具備強(qiáng)大的管理功能。管理員可以通過該模塊管理項(xiàng)目成員、數(shù)據(jù)源、庫表權(quán)限、隊(duì)列分配以及敏感信息查詢記錄等,確保數(shù)據(jù)的安全性和合規(guī)性。
通過該平臺(tái)可以輕松地完成數(shù)據(jù)的采集、清洗、加工和分析,提高數(shù)據(jù)的質(zhì)量和利用率。同時(shí),平臺(tái)的可視化操作界面和靈活的配置選項(xiàng),讓用戶可以快速上手并進(jìn)行個(gè)性化設(shè)置。此外,平臺(tái)還提供了豐富的數(shù)據(jù)服務(wù)和應(yīng)用,包括用戶標(biāo)簽、數(shù)據(jù)入湖、數(shù)據(jù)安全等,這些數(shù)據(jù)服務(wù)和應(yīng)用可以幫助企業(yè)更好地利用和管理數(shù)據(jù)資源,提高數(shù)據(jù)的價(jià)值和效益。
2. 架構(gòu)設(shè)計(jì)
Athena 數(shù)據(jù)工廠主體架構(gòu)分為以下幾個(gè)模塊:
- 交互層:采用了主流的 Vue 框架和 Monaco 插件,為用戶提供了簡(jiǎn)潔直觀的數(shù)據(jù)探查和任務(wù)發(fā)布界面。用戶可以通過簡(jiǎn)單的操作,輕松地進(jìn)行標(biāo)準(zhǔn)化 ETL 流程的定義和執(zhí)行。此外,用戶交互層還提供了豐富的可視化功能,使用戶能夠直觀地監(jiān)控和管理任務(wù)的執(zhí)行情況。交互層還支持多語言界面,方便全球用戶使用。
- 服務(wù)層:這些服務(wù)包括 SQL 開發(fā)套件、集成調(diào)試、依賴推薦、元數(shù)據(jù)管理等。此外,服務(wù)層也為各自項(xiàng)目提供了全方位的權(quán)限管理和資源管理功能。服務(wù)層還提供 API 接口,方便與其他系統(tǒng)進(jìn)行集成。該層整體采用微服務(wù)架構(gòu),服務(wù)之間的界限和功能清晰,不同模塊不同服務(wù),各自按照需求場(chǎng)景選擇適合的技術(shù)棧和擴(kuò)展應(yīng)用,同時(shí),獨(dú)立部署和運(yùn)行,這有助于提高開發(fā)部署效率以及系統(tǒng)容錯(cuò)性。
- 引擎層:通過對(duì)接各種生態(tài)組件,并封裝存儲(chǔ)計(jì)算能力,使得上層應(yīng)用無需關(guān)心過多的技術(shù)棧和升級(jí)優(yōu)化。例如,HiveSql 調(diào)試在引擎層既支持 Hive On Tez,也支持 SparkSql,并兼容各自的參數(shù)優(yōu)化。這使得用戶可以靈活地選擇適合自己業(yè)務(wù)需求的引擎進(jìn)行數(shù)據(jù)處理。引擎層還提供了豐富的插件和橫向擴(kuò)展機(jī)制,能夠根據(jù)用戶的需求進(jìn)行定制化開發(fā)。引擎層還支持多租戶模式,方便多個(gè)項(xiàng)目共享數(shù)據(jù)工廠資源。
- 組件層:數(shù)據(jù)工廠的底層組件包括調(diào)度引擎所依賴的 Airflow、Python 引擎依賴的騰訊云 SCF 產(chǎn)品 API 等。這些底層組件為數(shù)據(jù)工廠提供了穩(wěn)定可靠的運(yùn)行基礎(chǔ)。底層組件還采用了高可用架構(gòu),支持容錯(cuò)處理和數(shù)據(jù)備份,確保數(shù)據(jù)工廠的穩(wěn)定運(yùn)行。底層組件還支持分布式架構(gòu),方便水平擴(kuò)展和性能提升。
3. 使用場(chǎng)景
火花思維大數(shù)據(jù)計(jì)算鏈路經(jīng)過多年的發(fā)展和演變,已經(jīng)形成了 T/H+x、分鐘級(jí)、實(shí)時(shí)和 AI 四種場(chǎng)景的計(jì)算鏈路,支撐了多方面的數(shù)據(jù)處理和分析場(chǎng)景。
- T/H+x鏈路:T/H+x 是行業(yè)通用的離線計(jì)算,主要用于離線數(shù)倉、數(shù)據(jù)報(bào)表、應(yīng)用統(tǒng)計(jì)等場(chǎng)景。具體實(shí)現(xiàn)方式是通過數(shù)據(jù)集成組件定時(shí)將 Mysql、日志等數(shù)據(jù)源的數(shù)據(jù)同步到數(shù)倉 ODS 層,其中 80% 的數(shù)據(jù)會(huì)被加工成主題寬表,然后被其他數(shù)據(jù)生產(chǎn)者利用,按需構(gòu)建 ADS 應(yīng)用數(shù)據(jù),并最終以數(shù)據(jù)庫表、消息隊(duì)列或者 API 方式提供數(shù)據(jù)服務(wù)。
- 分鐘級(jí)鏈路:分鐘級(jí)應(yīng)用主要針對(duì) OLAP 多維分析場(chǎng)景,通過 FlinkCDC 等方式將數(shù)據(jù)源數(shù)據(jù)同步到 OLAP 引擎,然后逐層定時(shí)拉寬聚合,最終以 API 方式對(duì)外提供數(shù)據(jù)。早期的 OLAP 引擎主要是 Kudu 和 ClickHouse,現(xiàn)在以 Doris 為主。
- 實(shí)時(shí)鏈路:實(shí)時(shí)計(jì)算鏈路主要包括以 Spark Streaming 為核心計(jì)算棧的定制化數(shù)據(jù)服務(wù)和以 Flink 和 IceBerg 為核心的實(shí)時(shí)湖倉。其中,Spark Streaming 主要用于歷史遺留的 ToC 數(shù)據(jù)場(chǎng)景,如學(xué)員學(xué)情報(bào)告、CRM 運(yùn)營數(shù)據(jù)、用戶標(biāo)簽建設(shè)等。而 IceBerg 則主要用于解決實(shí)時(shí)日志流水鏈路,F(xiàn)link 則既可以用于構(gòu)建實(shí)時(shí)數(shù)據(jù)報(bào)表,也可以用于運(yùn)營監(jiān)控統(tǒng)計(jì)。
- AI 鏈路:AI 計(jì)算鏈路主要用于訓(xùn)練和推理模型,包括數(shù)據(jù)預(yù)處理、模型訓(xùn)練、模型評(píng)估和模型部署等環(huán)節(jié)。
三、關(guān)鍵技術(shù)與創(chuàng)新點(diǎn)
1. 離線 ETL
在離線開發(fā)集成角度,Athena 數(shù)據(jù)工廠提供了豐富的功能,旨在滿足用戶在基礎(chǔ)數(shù)據(jù) ETL 以及分析挖掘領(lǐng)域的多樣化需求。該模塊的核心能力體現(xiàn)在 Hive、Doris、Python 以及與其他組件的集成上,為用戶提供高效、穩(wěn)定且靈活的數(shù)據(jù) ETL 鏈路。
HiveSQL 作為離線開發(fā)任務(wù)的重要組成部分,先后經(jīng)歷從 Hive 1.2 到 Hive 3.1 的版本升級(jí)。前期主要依賴 Tez 引擎進(jìn)行數(shù)據(jù)處理,其中 Tez 0.10 引擎以其更高效的執(zhí)行計(jì)劃和資源管理能力,為 HiveSQL 提供了強(qiáng)大的性能支持。隨著大數(shù)據(jù) ServerLess 技術(shù)的演進(jìn),在 2023 年完全適配了商業(yè)化數(shù)據(jù)湖計(jì)算 DLC SparkSQL,基于存算分離的整體架構(gòu)使得離線 SQL 在大數(shù)據(jù)處理上更加靈活和高效。
Doris 計(jì)算也是 Athena 數(shù)據(jù)工廠的一大亮點(diǎn),其作為一種高性能的分布式 OLAP 引擎,具有快速查詢分析和高并發(fā)等特性。通過集成 Doris 計(jì)算,能夠支持用戶對(duì)海量數(shù)據(jù)進(jìn)行分鐘級(jí)離線運(yùn)算分析,借助一鍵 API 功能,滿足 CRM 業(yè)務(wù)數(shù)據(jù)時(shí)效性的高要求。
Python 作為一種通用編程語言,在數(shù)據(jù)開發(fā)領(lǐng)域也發(fā)揮著重要作用。在 AI 大模型“肆孽”的當(dāng)下,Athena 選擇 Python 3.10 版本支持用戶編寫離線數(shù)據(jù)處理任務(wù),利用云函數(shù) Python 豐富的庫和 MB 級(jí)內(nèi)存資源管控能力,重點(diǎn)處理 SQL 不易甚至不能解決的場(chǎng)景,實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)分析和處理邏輯,使得用戶可以更加靈活地處理數(shù)據(jù),提高開發(fā)效率。
在與其他組件的集成方面,比如 Mysql<->Hive 的集成任務(wù),Athena 依賴 Sqoop 集成工具進(jìn)行數(shù)據(jù)傳輸和同步。我們還通過異步監(jiān)聽 Mysql 的 DDL 變化,實(shí)現(xiàn)了數(shù)倉 ODS 層的字段新增、刪除以及 Comment 變化的適配,以及在用戶交互中實(shí)現(xiàn)自動(dòng)建表、字段同名映射等功能。分庫分表合并則利用 CDC 模式實(shí)現(xiàn)。對(duì)于 Hive 與其他組件的集成,我們則依賴 DataX 這一強(qiáng)大的數(shù)據(jù)交換平臺(tái)。DataX 支持多種數(shù)據(jù)源之間的數(shù)據(jù)交換,包括 Hive、ES、MQ 等。目前,為了積極擁抱彈性計(jì)算,我們根據(jù)火花數(shù)據(jù)的特有使用場(chǎng)景,通過二次開發(fā)改造 Seatunel,計(jì)劃在第二季度徹底替換 Sqoop 和 DataX。
2. 調(diào)度系統(tǒng)
Athena 數(shù)據(jù)工廠的底層調(diào)度組件,正是基于業(yè)界知名的 Airflow 2.0 構(gòu)建而成。Airflow 作為一個(gè)靈活且可擴(kuò)展的分布式工作流調(diào)度系統(tǒng),早已在大數(shù)據(jù)領(lǐng)域贏得了廣泛的應(yīng)用。它不僅能夠高效地調(diào)度各種數(shù)據(jù)處理任務(wù),還具備豐富的 API 支持,使得開發(fā)者能夠輕松集成各種功能,滿足復(fù)雜的業(yè)務(wù)需求。
在我們的調(diào)度系統(tǒng)中,除了支持任務(wù)啟停、依賴綁定、失敗重試、重跑上下游等基礎(chǔ)功能外,我們還通過深度整合調(diào)度系統(tǒng)元數(shù)據(jù)和 Athena 數(shù)據(jù)工廠元數(shù)據(jù),實(shí)現(xiàn)了更為精細(xì)化的調(diào)度管理。這使得我們能夠?qū)崟r(shí)掌握任務(wù)的運(yùn)行狀態(tài),及時(shí)發(fā)現(xiàn)并解決問題,確保數(shù)據(jù)處理的穩(wěn)定性和準(zhǔn)確性。
3. 實(shí)時(shí)計(jì)算
Athena 數(shù)據(jù)工廠的實(shí)時(shí)計(jì)算模塊功能主要支持 Spark Jar、Flink Jar 以及 Flink SQL 三種開發(fā)任務(wù)。
在 Flink SQL 方面,它已經(jīng)成為非大數(shù)據(jù)用戶的首選。Flink SQL 以其簡(jiǎn)潔易懂的語法和強(qiáng)大的實(shí)時(shí)處理能力,受到了廣大用戶的青睞。目前,我們的平臺(tái)已經(jīng)支持 Kafka、RocketMQ、Mysql、Doris、Elasticsearch、Hive、Hudi、Iceberg 等眾多 Connector。這些 Connector 的存在,使得 Flink SQL 能夠輕松接入各種數(shù)據(jù)源,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集、處理和輸出。
在 Jar 任務(wù)方面,無論是 Spark Jar 還是 Flink Jar,它們都以公司 GitLab 的倉庫地址為基準(zhǔn)。這意味著,開發(fā)人員可以將自己的 Jar 包上傳到公司代碼倉庫,并通過Athena 輕松實(shí)現(xiàn)打包、部署和運(yùn)行。這種集成方式不僅提高了開發(fā)效率,還確保了 Jar 包的版本管理和安全性。
今年,我們的實(shí)時(shí)計(jì)算底層也計(jì)劃基于 Oceanus 彈性伸縮進(jìn)行改造。根據(jù)業(yè)務(wù)需求的變化,我們可以自動(dòng)化調(diào)整計(jì)算資源,實(shí)現(xiàn)動(dòng)態(tài)計(jì)算能力的彈性伸縮。通過合理的資源調(diào)度和容錯(cuò)機(jī)制,我們能夠確保實(shí)時(shí)計(jì)算任務(wù)的穩(wěn)定性和可靠性。
4. 監(jiān)控預(yù)警
在任務(wù)級(jí)別的監(jiān)控方面,Athena 數(shù)據(jù)工廠能夠?qū)崟r(shí)監(jiān)控任務(wù)的執(zhí)行狀態(tài),包括是否成功、失敗或超時(shí)。這些監(jiān)控項(xiàng)是確保任務(wù)穩(wěn)定運(yùn)行的關(guān)鍵指標(biāo)。一旦任務(wù)失敗或超時(shí),平臺(tái)會(huì)立即觸發(fā)預(yù)警機(jī)制,通過飛書群或飛書個(gè)人等方式通知相關(guān)人員,以便及時(shí)介入處理。
除了任務(wù)級(jí)別的監(jiān)控,Athena 數(shù)據(jù)工廠還提供了表級(jí)別的監(jiān)控功能。這包括主鍵唯一性檢查、雙端對(duì)比以及表行數(shù)校驗(yàn)等。主鍵唯一性檢查能夠確保表中數(shù)據(jù)的唯一性,防止重復(fù)數(shù)據(jù)的出現(xiàn);雙端對(duì)比則能夠?qū)Σ煌瑪?shù)據(jù)源之間的數(shù)據(jù)進(jìn)行比對(duì),確保數(shù)據(jù)的一致性;表行數(shù)校驗(yàn)則可以檢查表中數(shù)據(jù)的數(shù)量是否正確,防止數(shù)據(jù)丟失或異常增多。這些表級(jí)別的監(jiān)控項(xiàng)能夠全面保障數(shù)據(jù)的質(zhì)量和準(zhǔn)確性。此外,Athena 數(shù)據(jù)工廠還支持字段級(jí)別的監(jiān)控。這包括空值檢查、異常值監(jiān)控、求和、均值、極值等??罩禉z查能夠發(fā)現(xiàn)數(shù)據(jù)中的缺失值,確保數(shù)據(jù)的完整性;異常值監(jiān)控則可以識(shí)別并報(bào)警異常數(shù)據(jù),防止其對(duì)后續(xù)分析造成影響;求和、均值和極值等統(tǒng)計(jì)指標(biāo)則能夠幫助我們了解數(shù)據(jù)的分布情況,為后續(xù)的數(shù)據(jù)處理和分析提供重要參考。
Athena 數(shù)據(jù)工廠的監(jiān)控程序與監(jiān)控任務(wù)是緊密綁定的。這種一體化的設(shè)計(jì)不僅方便了用戶對(duì)監(jiān)控任務(wù)的管理和維護(hù),還能夠?qū)崿F(xiàn)任務(wù)與監(jiān)控的成本核算。通過監(jiān)控程序,我們可以清晰了解每個(gè)監(jiān)控任務(wù)的資源消耗情況,為成本控制和資源優(yōu)化提供了有力支持。
四、實(shí)施與運(yùn)營
1. 演進(jìn)歷程
Athena 數(shù)據(jù)工廠于 2021 年底正常上線,初期目標(biāo)就是將以 Azkaban 和 Crontab 上的 HiveSQl 和 Sqoop 腳本全部遷移至數(shù)據(jù)工廠,讓數(shù)據(jù)倉庫、數(shù)據(jù)服務(wù)和 BA 自助的腳本能夠在各自項(xiàng)目空間下有序地依賴執(zhí)行。
- 2021 年 11 月,Athena 數(shù)據(jù)工廠邁出了堅(jiān)實(shí)的第一步,v1.0 版本的上線標(biāo)志著它正式踏入數(shù)據(jù)開發(fā)領(lǐng)域。這個(gè)版本以離線開發(fā)、調(diào)度配置、任務(wù)運(yùn)維三大核心功能為基礎(chǔ),為用戶提供了穩(wěn)定可靠的數(shù)據(jù)開發(fā)平臺(tái)。
- 僅僅三個(gè)月后,2022 年 2 月,我們成功完成了數(shù)據(jù)倉庫的 HiveSQL 和 mysql<->hive 相關(guān)任務(wù)的全量遷移,這標(biāo)志著 Athena 數(shù)據(jù)工廠在支撐火花思維基礎(chǔ)數(shù)據(jù)處理能力上邁出了重要的一步。
- 同年 4 月,我們又實(shí)現(xiàn)了 Hadoop 集群從依賴社區(qū)自建到商業(yè)化 EMR 的順利遷移,這一變革極大地提升了基礎(chǔ)組件的穩(wěn)定性和性能。
- 2022 年 7 月,Athena 數(shù)據(jù)工廠再次迎來重大更新,新增了 Doris 引擎和 SparkSQL 引擎,為用戶提供了更多樣化的數(shù)據(jù)處理引擎的選擇。此外,上線一鍵 API 生成功能,方便數(shù)據(jù)生產(chǎn)者通過 API 通道分享數(shù)據(jù)。
- 同年 10 月,我們整合了原《大數(shù)據(jù)實(shí)時(shí)開發(fā)平臺(tái)》至 Athena 數(shù)據(jù)工廠,構(gòu)建了獨(dú)立的實(shí)時(shí)開發(fā)模塊,以滿足用戶對(duì)于實(shí)時(shí)數(shù)據(jù)處理的需求。
- 進(jìn)入 2023 年,Athena 數(shù)據(jù)工廠的迭代速度更是加快。3 月實(shí)現(xiàn)表級(jí)別血緣關(guān)系解析以及整合公司 GitLab 實(shí)現(xiàn)版本管理,并基于此上線依賴推薦、跨周期依賴、數(shù)據(jù)回溯、BI 建模血緣跟蹤等輔助開發(fā)能力。
- 6 月,成功實(shí)現(xiàn)了離線開發(fā)和自主提數(shù)的 SQL 引擎對(duì)商業(yè)化 ServerLess 的適配,進(jìn)一步提升了數(shù)據(jù)處理效率。
- 8 月推出了字段級(jí)血緣關(guān)系以及數(shù)據(jù)監(jiān)控功能,為用戶提供了更加精細(xì)化的數(shù)據(jù)管理和質(zhì)量保證。同時(shí),基于 HiveMeta 實(shí)現(xiàn)表資產(chǎn)生命周期治理能力。
- 2023 年 11 月,基于騰訊云云函數(shù)產(chǎn)品,我們推出了 Python 開發(fā)模塊,為 BA、算法、研發(fā)等角色提供了解決 SQL 無法實(shí)現(xiàn)或較難實(shí)現(xiàn)場(chǎng)景的全新功能。
- 到了 2024 年 1 月,我們?cè)俅芜M(jìn)行了一次重大的技術(shù)革新,適配 Hdfs 遷移至 COS,實(shí)現(xiàn)了用戶無感的存算分離,為各項(xiàng)目空間提供了更加靈活和高效的數(shù)據(jù)存儲(chǔ)和計(jì)算服務(wù)。
2. 日常運(yùn)營
Athena 數(shù)據(jù)工廠的日常運(yùn)營在 2023 年 3 月前后經(jīng)歷了兩個(gè)階段,每個(gè)階段都有其獨(dú)特的運(yùn)營策略與特點(diǎn)。在 2023 年 3 月之前,我們采用的是項(xiàng)目制的運(yùn)營模式。每個(gè)項(xiàng)目都建立了專門的運(yùn)營群,并配備了專業(yè)的運(yùn)營人員。這些運(yùn)營人員不僅具備豐富的數(shù)據(jù)開發(fā)經(jīng)驗(yàn)和深厚的技術(shù)功底,還擅長(zhǎng)與用戶溝通,能夠迅速把握用戶需求并提供相應(yīng)的解決方案。他們會(huì)在群里積極回答用戶的問題,提供細(xì)致的解答和培訓(xùn),確保用戶能夠順利使用我們的產(chǎn)品。同時(shí),他們還會(huì)根據(jù)用戶的反饋和需求,不斷優(yōu)化我們的產(chǎn)品和服務(wù),持續(xù)提升用戶體驗(yàn)。
然而,隨著用戶數(shù)量的不斷增加和項(xiàng)目規(guī)模的擴(kuò)大,我們意識(shí)到這種項(xiàng)目制的運(yùn)營模式存在一些問題。比如,不同項(xiàng)目之間的信息交流不暢,導(dǎo)致一些共性問題無法得到及時(shí)解決;同時(shí),運(yùn)營人員的工作負(fù)擔(dān)也逐漸加重,難以保證服務(wù)質(zhì)量和效率。因此,在 2023 年 3 月之后,我們對(duì)產(chǎn)品運(yùn)營模式進(jìn)行了調(diào)整,建立了《大數(shù)據(jù)服務(wù)中心》千人話題群。該話題群將所有用戶集中在一起,方便他們之間的交流和互動(dòng)。同時(shí),我們實(shí)施了輪崗機(jī)制,由 Athena 數(shù)據(jù)工廠的產(chǎn)品、研發(fā)、測(cè)試多方人員輪流擔(dān)任值班人員,負(fù)責(zé)解答群內(nèi)用戶的問題,不僅提高了服務(wù)效率,還確保了問題的專業(yè)性和準(zhǔn)確性。為了確保值班人員能夠準(zhǔn)時(shí)上線并積極參與群聊,我們還引入了機(jī)器人提醒功能。機(jī)器人會(huì)在每天下午 18 點(diǎn)定時(shí)提醒值班人員上線,并在群里積極回答用戶的問題。通過這種方式,我們確保了服務(wù)的及時(shí)性和連續(xù)性。
五、成效與收獲
1. 釋放自助能力
我們一直秉持著“生產(chǎn)力改變生產(chǎn)關(guān)系”的原則,致力于提供便捷、高效的數(shù)據(jù)開發(fā)工具和服務(wù),幫助公司各部門、各角色更加自主地開展數(shù)據(jù)分析和應(yīng)用,實(shí)現(xiàn)公司數(shù)據(jù)自助開放的整體策略目標(biāo)緊密相連。
從數(shù)據(jù)層面來看,Athena 數(shù)據(jù)工廠每日承載的離線任務(wù)運(yùn)行實(shí)例數(shù)量已達(dá)到約2 萬個(gè),它表明我們的平臺(tái)已經(jīng)能夠穩(wěn)定、高效地處理大量的數(shù)據(jù)任務(wù),為公司的數(shù)據(jù)分析和應(yīng)用提供了強(qiáng)有力的支持。同時(shí),內(nèi)部用戶數(shù)量也達(dá)到了約 470 人,MAU 約 130,這說明已經(jīng)得到了廣泛的認(rèn)可和使用。由 BA、運(yùn)營、產(chǎn)品、研發(fā)等非大數(shù)據(jù)角色發(fā)起的新增任務(wù)占比高達(dá) 92%。這一數(shù)據(jù)不僅凸顯了 Athena 數(shù)據(jù)工廠在跨角色數(shù)據(jù)開發(fā)方面的廣泛應(yīng)用,更體現(xiàn)了平臺(tái)在推動(dòng)公司內(nèi)部數(shù)據(jù)自主開放方面的卓越成效。
具體來說,僅在 2023 年非大數(shù)據(jù)角色通過 Athena 數(shù)據(jù)工廠新增的任務(wù)數(shù)量就達(dá)到了 2700+ 個(gè)(忽略數(shù)據(jù)資產(chǎn)生命周期治理)。從更宏觀的視角來看,結(jié)合數(shù)據(jù)需求迭代頻率,Athena 數(shù)據(jù)工廠實(shí)際上在 2023 年支撐了公司內(nèi)部的 3000+ 個(gè)數(shù)據(jù)需求。這意味著,Athena 數(shù)據(jù)工廠已改變公司數(shù)據(jù)訴求供需關(guān)系,為增長(zhǎng)和變化預(yù)留了足夠的空間,更為公司提供了一個(gè)穩(wěn)定、可靠的數(shù)據(jù)基礎(chǔ)設(shè)施,使得公司能夠更加自信地面對(duì)未來的數(shù)據(jù)挑戰(zhàn),實(shí)現(xiàn)數(shù)據(jù)價(jià)值最大化。
2. 提升可靠性
- 事前檢查:在任務(wù)上線之前,Athena 數(shù)據(jù)工廠會(huì)進(jìn)行強(qiáng)邏輯的檢查,以確保數(shù)據(jù)任務(wù)的穩(wěn)定、正確產(chǎn)出。這些檢查規(guī)則包括腳本語法、調(diào)度配置、資源權(quán)限等多方面的檢查,可以避免數(shù)據(jù)上線后出現(xiàn)錯(cuò)誤和異常,從根本上降低值班人員起夜率。
- 事中預(yù)警:在數(shù)據(jù)生產(chǎn)和消費(fèi)過程中,平臺(tái)會(huì)進(jìn)行實(shí)時(shí)監(jiān)控,并提供豐富的預(yù)警機(jī)制。當(dāng)數(shù)據(jù)出現(xiàn)異?;蜻_(dá)到預(yù)警閾值時(shí),平臺(tái)會(huì)及時(shí)發(fā)出預(yù)警信號(hào),通知相關(guān)人員進(jìn)行處理。這樣就可以及時(shí)發(fā)現(xiàn)和解決數(shù)據(jù)異常,避免數(shù)據(jù)丟失和錯(cuò)誤,保證數(shù)據(jù)的可靠性和穩(wěn)定性。
- 事后復(fù)盤:故障發(fā)生后,QA 同學(xué)利用 GPT 依據(jù) 5why 分析法構(gòu)建了復(fù)盤機(jī)器人,帶領(lǐng)故障干洗人對(duì) SLA 問題進(jìn)行深度引導(dǎo)分析,找到根本解決方法,并預(yù)防類似問題的再次發(fā)生。
3. 優(yōu)化 ETL 效率
自從調(diào)度任務(wù)遷移至 Athena 數(shù)據(jù)工廠后,通過分析 ETL 任務(wù)的執(zhí)行數(shù)據(jù),從多方面提升了整體運(yùn)行性能,天調(diào)度 SQL 任務(wù) 24 年 3 月同比 23 年 3 月增加 107%,單平均任務(wù)運(yùn)行時(shí)長(zhǎng)降低 48%。這主要得益于三個(gè)方面的改進(jìn):
- DAG 優(yōu)化:首先,通過分析 Airflow 節(jié)點(diǎn)資源利用率,結(jié)合各類型任務(wù) Client 執(zhí)行所需的 CPU 和內(nèi)存資源,合理分配整體 Pool 和 Worker Pool 的閾值,實(shí)現(xiàn)執(zhí)行節(jié)點(diǎn)任務(wù)吞吐最大化。其次,由于各類型 DAG 運(yùn)行周期交叉,最典型的就是天調(diào)度 DAG 與零散 DAG 的交叉,會(huì)發(fā)生調(diào)度資源、算力資源甚至 IO 資源競(jìng)搶,通過分析統(tǒng)計(jì)各 DAG 任務(wù)重要性和影響度,以及任務(wù)特征,合理分配各DAG 的 Pool 大小,實(shí)現(xiàn)整體資源利用最大化。最后,根據(jù)單 DAG 上依賴模型和各任務(wù)自身特點(diǎn),動(dòng)態(tài)調(diào)整各 SLA 等級(jí)的任務(wù)權(quán)重,讓重依賴、重保障的任務(wù)盡早運(yùn)行,從而實(shí)現(xiàn)更高效的任務(wù)執(zhí)行。
- 慢任務(wù)優(yōu)化:治理團(tuán)隊(duì)投入最大的精力就是識(shí)別優(yōu)化慢 SQL,而慢 SQL 最常見的場(chǎng)景就是兩種:(1)數(shù)據(jù)掃描量大,要么忘記加分區(qū)限制要么讀取分區(qū)太多;(2)通常是嵌套 With as 較多臨時(shí)查詢的任務(wù),導(dǎo)致解析計(jì)劃中某一個(gè)或幾個(gè)Reduce 卡住,但寫 SQL 的人員優(yōu)先滿足計(jì)算口徑,而忽略數(shù)據(jù)傾斜或笛卡爾問題。由于目前底層 SQL 算力引擎已彈性,故在基線保障和成本控制的背景下,優(yōu)先解決慢任務(wù)是效果最佳的治理手段,也是持續(xù)保障任務(wù)平均執(zhí)行效率和性能的最佳實(shí)踐。
- 組件優(yōu)化:無論是 SQL 任務(wù)或是集成任務(wù),都會(huì)依賴其他組件,而很多時(shí)候,隨著數(shù)據(jù)量或讀寫壓力的增加,組件出現(xiàn)性能瓶頸,而在任務(wù)角度觀察是整體運(yùn)行變慢或夯死,這時(shí)候就可以通過多維分析任務(wù)運(yùn)行數(shù)據(jù),觀測(cè)拐點(diǎn)的任務(wù)特征,結(jié)合干系組件的性能監(jiān)控波動(dòng),識(shí)別并對(duì)癥下藥。例如:JournalNode、RDBS 以及磁盤故障等。
4. 降低成本
Athena 數(shù)據(jù)工廠通過底層技術(shù)的優(yōu)化進(jìn)一步降低了綜合技術(shù)成本。近兩年,我們將hive 底層引擎先進(jìn)行了 tez 升級(jí)后切換至 Spark,存儲(chǔ)從 HDFS 遷移到 COS,今年3 月天調(diào)度單任務(wù)計(jì)算成本同比去年降低 29%。而這些切換過程中,我們充分利用了 Athena 數(shù)據(jù)工廠對(duì)底層的隔離和封裝能力,降低技術(shù)升級(jí)對(duì)用戶的影響,甚至部分遷移工作對(duì)用戶無感。
在 Athena 數(shù)據(jù)工廠上線前,BA 和研發(fā)人員面臨著繁瑣且耗時(shí)的數(shù)據(jù)任務(wù)上線發(fā)布流程。他們需要通過一套基礎(chǔ)配置工具,歷經(jīng)八個(gè)步驟才能完成整個(gè)操作。這包括編寫配置文件和 SQL、上傳代碼、配置依賴、構(gòu)建任務(wù)、部署任務(wù)和發(fā)布任務(wù)等。每一步都需要手動(dòng)操作,稍有不慎就可能導(dǎo)致錯(cuò)誤或異常情況,進(jìn)一步增加了解決問題的難度和時(shí)間成本。然而,使用 Athena 數(shù)據(jù)工廠后,這一切得到了徹底的改變。據(jù)調(diào)查統(tǒng)計(jì),每個(gè)數(shù)據(jù)任務(wù)的上線發(fā)布過程至少可以節(jié)省 3 小時(shí)以上的時(shí)間。
六、總結(jié)與展望
1. 經(jīng)驗(yàn)教訓(xùn)
在 Athena 數(shù)據(jù)工廠構(gòu)建過程中,我們積累了許多寶貴的經(jīng)驗(yàn)教訓(xùn)。以下是一些關(guān)鍵的點(diǎn):
- 注重目標(biāo)用戶體驗(yàn):我們深刻認(rèn)識(shí)到用戶體驗(yàn)是平臺(tái)成功的關(guān)鍵因素。在平臺(tái)建設(shè)前期,團(tuán)隊(duì)投入了大量的時(shí)間與精力,組織數(shù)次產(chǎn)品 MVP 功能調(diào)研問卷,對(duì)目標(biāo)用戶群體進(jìn)行了深入的調(diào)研,明確了他們的需求和期望。這不僅幫助我們確定了平臺(tái)需要實(shí)現(xiàn)的核心功能,還讓我們能夠避免在設(shè)計(jì)過程中添加不必要的功能和復(fù)雜性,確保平臺(tái)始終保持簡(jiǎn)潔、直觀和易于使用的特性。此外,為了進(jìn)一步優(yōu)化用戶體驗(yàn),產(chǎn)品上線首年每月進(jìn)行 Top3 用戶測(cè)試和反饋收集,傾聽用戶的聲音,并根據(jù)他們的反饋對(duì)平臺(tái)進(jìn)行了持續(xù)改進(jìn)。
- 選擇合適的技術(shù)棧:選擇合適的技術(shù)棧對(duì)于平臺(tái)的成功同樣至關(guān)重要。在選擇技術(shù)棧時(shí),我們充分考慮了平臺(tái)規(guī)模、性能需求、可擴(kuò)展性以及維護(hù)成本等因素。我們進(jìn)行了深入的技術(shù)調(diào)研和評(píng)估,與業(yè)內(nèi)專家進(jìn)行了充分的溝通和交流,最終選擇了既符合平臺(tái)需求又具有前瞻性的技術(shù)組合。
- 構(gòu)建可擴(kuò)展的架構(gòu):在構(gòu)建平臺(tái)的過程中,我們還特別注重架構(gòu)的可擴(kuò)展性。我們深知,隨著業(yè)務(wù)的發(fā)展和數(shù)據(jù)的增長(zhǎng),平臺(tái)的架構(gòu)必須能夠輕松應(yīng)對(duì)未來的挑戰(zhàn)。因此,我們采用了分布式系統(tǒng)、微服務(wù)架構(gòu)等技術(shù)手段,確保平臺(tái)能夠靈活地?cái)U(kuò)展和適應(yīng)新的需求。這種可擴(kuò)展的架構(gòu)不僅提高了平臺(tái)的性能和穩(wěn)定性,還為我們后續(xù)的維護(hù)和升級(jí)帶來了極大的便利。
- 學(xué)習(xí)和不斷改進(jìn):產(chǎn)品構(gòu)建是一個(gè)不斷學(xué)習(xí)和改進(jìn)的過程。在產(chǎn)品的開發(fā)、測(cè)試、上線和運(yùn)營等各個(gè)階段,我們都保持高度的敏感性和警覺性,不斷反思和評(píng)估平臺(tái)的性能、用戶需求反饋。雖然我們暫未建立成熟的“數(shù)據(jù)飛輪”,但積極收集和分析數(shù)據(jù),通過數(shù)據(jù)驅(qū)動(dòng)的方式發(fā)現(xiàn)平臺(tái)存在的問題和不足,并制定相應(yīng)的改進(jìn)措施。這種持續(xù)改進(jìn)的態(tài)度不僅幫助我們不斷優(yōu)化平臺(tái)的功能和用戶體驗(yàn),還讓我們能夠緊跟行業(yè)發(fā)展的步伐,保持平臺(tái)的競(jìng)爭(zhēng)力和創(chuàng)新性。
2. 未來迭代
- 對(duì)于用戶自助開發(fā)過程中的代碼調(diào)試和報(bào)錯(cuò)任務(wù),提供基于 AI 的分析協(xié)助能力。利用大語言模型,我們能夠快速準(zhǔn)確地理解用戶的問題,并提供有針對(duì)性的解決方案。這種智能化的分析協(xié)助能力不僅可以提高用戶的工作效率,還可以減少用戶的焦慮和壓力,提升他們的使用體驗(yàn)。
- 優(yōu)化可觀測(cè)能力,解決大任務(wù)等對(duì)穩(wěn)定性和性能帶來的系統(tǒng)性負(fù)面影響。持續(xù)評(píng)估和優(yōu)化計(jì)算資源的性能,確保它們?cè)谔幚泶罅繑?shù)據(jù)時(shí)高效運(yùn)行。定期進(jìn)行基準(zhǔn)測(cè)試和性能評(píng)估,以確定計(jì)算資源的瓶頸和潛在優(yōu)化機(jī)會(huì)。利用性能監(jiān)控工具和指標(biāo)來實(shí)時(shí)監(jiān)測(cè)計(jì)算資源的使用情況,并及時(shí)采取措施解決性能問題。同時(shí),優(yōu)化計(jì)算資源的配置,例如調(diào)整 CPU、內(nèi)存、存儲(chǔ)等參數(shù),以提高資源利用率和性能。
- 將核心功能和底層引擎容器化,這樣可以實(shí)現(xiàn)資源的動(dòng)態(tài)分配和管理,提高系統(tǒng)的靈活性和可擴(kuò)展性。同時(shí),可以更輕松地部署和管理應(yīng)用程序,提高資源利用率和效率,降低成本,并確保系統(tǒng)的穩(wěn)定性和可靠性。同時(shí),要開始在架構(gòu)層次思考低成本支持跨平臺(tái)和云原生應(yīng)用,這可以提高系統(tǒng)的靈活性和可擴(kuò)展性,同時(shí)降低開發(fā)和維護(hù)成本。
結(jié)語:通過對(duì)一站式數(shù)據(jù)開發(fā)治理平臺(tái)的構(gòu)建與實(shí)踐,火花思維成功提升了數(shù)據(jù)管理效率,優(yōu)化了數(shù)據(jù)利用價(jià)值,為公司發(fā)展注入了新的活力。未來,隨著技術(shù)的不斷進(jìn)步和業(yè)務(wù)的持續(xù)拓展,公司將繼續(xù)深化數(shù)據(jù)治理與開發(fā)工作,為在線教育行業(yè)數(shù)據(jù)驅(qū)動(dòng)的創(chuàng)新發(fā)展貢獻(xiàn)更多力量。