淺談資料開發神器——數棧離線開發平臺(BatchWorks)
隨著數智化時代的到來,企業需要匯聚各業務板塊資料,提供一個強大的中間層為高頻多變的業務場景提供支撐。基於此類需求,“資料中臺”應運而生,將資料提煉為資料資產,轉換成業務需要的資料「血液」。
資料中臺的建設與運營,通常包含如下活動:資料匯聚、資料加工與提煉、對外提供資料服務這3部分。其中的資料匯聚、資料加工與提煉能力,是由作為資料中臺建設基座的離線開發平臺提供的。
一、 應用場景
例如,某服裝企業需要統計最近3個月在全國不同城市中,不同款式的服裝的銷量情況/庫存情況,用於指導下一步的銷售活動和款式設計,這些資料需要每天更新,這就是典型的離線計算場景。為了完成上述流程,資料部門需要進行如下處理動作:
- 將最近3個月的銷售資料、庫存資料從業務系統中抽取出來,要支援每天的增量抽取;
- 結合統計需求,編寫SQL進行統計;
- 資料每天更新,需要以天為週期,觸發資料抽取、SQL統計的指令碼,每天進行資料更新;
- 監控任務的執行情況,當發生異常情況時,需要進行排錯、重刷歷史資料等操作;
為解決以上場景的問題,需要在資料採集、儲存、加工等方面進行各種選型對比,通常可歸類為以下2類:
1、基於MySQL、Greenplum等關係型或MPP類資料庫:
- 資料採集:可採用開源的Kettle、DataX等元件,配合shell指令碼實現資料抽取;
- 資料開發:本地文字編輯器、Navicat等工具,配合Shell指令碼實現資料開發+週期排程;
- 資料運維:人工觀察結果資料產出,沒有成熟的運維工具,通常都是業務方發現資料問題反饋給技術人員,響應滯後;
- 叢集運維:叢集監控、告警、擴縮容均手動進行。
2、基於Hadoop體系的技術方案
- Hadoop體系通常會採用HDFS+YARN作為基座,再配合Hive、Spark、Impala等引擎作為擴充套件;
- 資料採集、開發、排程,均有多種可選,例如Sqoop、Hue、Oozie/Azkaban/AirFlow等,再配合Shell進行各類元件的打通與配置管理
- 叢集運維:可採用開源的Cloudera Manager等工具。
3、以上2類場景存在以下幾種問題:
- 採集、開發、排程、運維的工具都比較原始,由各種開源元件拼湊組合形成,沒有統一高效的管理方式,適用於小規模團隊,無法滿足大規模、團隊協作化的資料中臺建設;
- 在資料採集方面,DataX、Kettle等元件一般都是單點使用,無法滿足大吞吐量、高併發的資料同步場景;
- 在資料開發、任務排程方面,通常只能採用文字編輯器+Navicat+Shell的原始方案,資料開發體驗較差,在系統引數、排程打通、函式管理、後設資料檢視等方面存在各種體驗問題;
- 排程引擎與任務運維方面,開源的Azkaban、AirFlow雖然支援基本的排程邏輯,但與開發環節彼此割裂,沒有實現無縫打通。在任務運維方面,只有基本的狀態監控,在重刷歷史資料、任務異常處理、告警配置等方面均有所欠缺;
- 在資料管理方面,開源的Hue只有基本的後設資料檢視,在資料許可權、生命週期、後設資料擴充套件等方面均難以滿足。
二、BatchWorks主要功能
BatchWorks提供的各項功能,完整覆蓋上述場景中的各種需求,包含的功能模組如下:
1、資料同步:
- 分散式系統架構:基於自研分散式同步引擎(FlinkX),用於在多種異構資料來源之間進行資料同步,具有高吞吐量、高穩定性的特點;
- 豐富的資料來源支援:支援關係型資料庫、半結構化儲存、大資料儲存、分析性資料庫等20餘種不同的資料來源;
- 視覺化配置:主要包括同步任務選擇源表、目標表、配置欄位對映、配置同步速度等步驟,2分鐘即可完成配置;
- 斷點續傳:系統自動記錄每次的同步點位,下一週期執行時,自動從上次的讀取位置繼續同步,既可以減輕源庫的壓力,又可以保障同步的資料無遺漏、無重複;
- 整庫同步:快速、批次配置大量同步任務,節省大量初始化精力。
- 髒資料管理:在讀取、寫入階段發生異常的資料,系統可將這部分資料儲存下來,便於使用者及時排查髒資料問題。
2、資料開發:
- 豐富的任務型別:支援SparkSQL、HiveSQL、Python、Shell等10餘種不同的任務型別,滿足不同場景下的資料處理需求;
- 豐富的系統引數:內建多個系統引數,可根據需要指定自定義系統引數,支援常量、變數,可指定豐富的時間格式和時間計算模式;
- 優秀的開發體驗:支援程式碼高亮、關鍵字/表名/欄位名智慧提示、語法檢測、編輯器主題、快捷鍵等功能,為使用者提供優秀的編碼體驗;
- 本地檔案匯入:支援本地csv、txt檔案匯入至資料表,用於臨時性資料分析;
- 函式管理:支援Hive、Spark等計算引擎的函式檢視、UDF函式的註冊。
3、排程引擎:
- 基於自研分散式排程引擎,滿足任務的週期性、依賴性排程,支援百萬級別任務排程;
- 系統可智慧識別當前任務的程式碼與依賴資訊,並自動推薦上游任務;
- 根據使用者的排程配置,智慧識別超出有效期的任務,自動取消執行,節約計算資源。
4、運維中心:
- 自動監控並統計每日跑批進度、異常情況等資訊,彙總易出錯任務,協助使用者排查程式碼質量、平臺執行情況等問題;
- 實時監控例項執行情況,進行檢視日誌、重跑、終止、恢復排程等操作;
- 透過指定時間範圍,快速重刷歷史資料,操作簡單、便捷;
- 可根據失敗、超時等多種條件觸發告警規則,透過簡訊、郵件等方式將異常資訊傳送給指定人員。
5、安全保障:
BatchWorks採用多種方式保障資料安全和功能操作的安全,主要涵蓋叢集安全、資料安全和功能安全3部分:
- 叢集安全:可對接開源Kerberos元件,保障平臺安全訪問。
- 資料安全:支援使用者跨專案許可權申請,可指定需要的具體操作內容和欄位資訊,經管理員審批透過後可訪問。
- 功能安全:內建管理員等多種角色,不同的角色有不同的操作許可權,保障功能安全。
三、產品優勢
1、全生命週期覆蓋:
覆蓋資料採集、資料處理、排程依賴、任務運維等場景,充分滿足離線資料開發過程中的各項需求,相比傳統的開源工具,可以節省80%資料開發時間。
2、多引擎、異構對接:
- 相容開源、Cloudera、Hortonworks、星環、華為Fusion Insight等各種Hadoop體系或MPP類資料庫作為計算引擎;
- 一套離線開發平臺支援同時對接多套雲環境的異構引擎,例如:一套BatchWorks同時對接阿里雲 EMR、AWS EMR、本地機房TiDB引擎;
3、自主智慧財產權:2大核心模組100%自研,掌握全部智慧財產權
- 批流一體資料同步引擎FlinkX:基於Flink框架自主研發的分散式、外掛化、批流一體資料同步引擎FlinkX,具備全量/增量/實時資料抽取全棧能力。該引擎已經在Github上開源
- 高效能分散式排程引擎DAGScheduleX:自主研發的分散式DAG排程引擎,支援百萬級任務併發,具備週期性、依賴性、優先順序等多種排程配置
4、線上化、視覺化操作:
產品透過Web頁面為使用者提供服務,遮蔽底層複雜的分散式計算引擎,線上化開發平臺,提高開發效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2769113/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料開發提效有秘訣!離線開發BatchWorks 六大典型場景拆解BAT
- 淺談直播教育平臺開發成本
- 淺談移動跨平臺開發框架的發展歷程框架
- FInClip開放平臺:淺談輕應用的發展
- 數控開發平臺
- 乾貨分享|袋鼠雲數棧離線開發平臺在小檔案治理上的探索實踐之路
- 淺談 2018 移動端跨平臺開發方案
- 綠茵面家平臺開發(開發平臺)
- 《離線和實時大資料開發實戰》(二)大資料平臺架構 & 技術概覽大資料架構
- 數藏平臺開發貴嗎
- Web快速開發平臺個人之淺見Web
- 淺談模組化開發
- 大資料平臺開發公司有哪些?大資料
- [北京] [前端、資料分析平臺開發、全棧] 矽谷遊戲公司 Magic Tavern Hiring~前端全棧遊戲
- 前端離線開發指南前端
- 平臺資產開發數字資產交易系統開發公司
- 淺談軟體開發模型之瀑布開發和敏捷開發模型敏捷
- 全棧開發自學路線全棧
- 大前端時代,淺談JavaScript開發重型跨平臺應用以及架構前端JavaScript架構
- 低程式碼是開發的未來嗎?淺談低程式碼平臺
- 如何開發直播平臺,直播平臺開發需要CDN嗎
- 數字資產幣幣交易平臺開發區塊鏈合約交易平臺開發區塊鏈
- 淺談 Android 開發文化Android
- 敏捷開發框架的開發運用之大資料平臺的構建敏捷框架大資料
- Windows Live平臺開發資源Windows
- 開源 Amundsen:資料發現和後設資料平臺
- 智慧警務大資料平臺開發,資料視覺化分析平臺搭建大資料視覺化
- Web快速開發平臺,基於二次開發平臺Web
- (1)開發部署離線版本
- 淺談移動應用的跨平臺開發工具(Xamarin和React Native)React Native
- 數字貨幣交易系統開發、數字貨幣交易平臺開發、 虛擬數字貨幣交易平臺開發、區塊鏈數字貨幣交易系統開發區塊鏈
- 淺析北京賽車平臺開發app搭建 Web APP開發技巧彙總APPWeb
- 淺談 PHP 與手機 APP 開發(API 介面開發)PHPAPPAPI
- 微信公眾平臺開發(九) 資料庫操作資料庫
- 數字貨幣交易平臺開發,虛擬幣自動搬磚量化交易平臺開發
- 淺談Blazor開發的那些事Blazor
- android 開發淺談(JDK && NDK)AndroidJDK
- 淺談一下“敏捷開發”敏捷