隨着數智化時代的到來,企業須要匯聚各業務板塊數據,提供一個強大的中間層爲高頻多變的業務場景提供支撐。基於此類需求,「數據中臺」應運而生,將數據提煉爲數據資產,轉換成業務須要的數據「血液」。html
數據中臺的建設與運營,一般包含以下活動:數據匯聚、數據加工與提煉、對外提供數據服務這3部分。其中的數據匯聚、數據加工與提煉能力,是由做爲數據中臺建設基座的離線開發平臺提供的。git
1、應用場景
例如,某服裝企業須要統計最近3個月在全國不一樣城市中,不一樣款式的服裝的銷量狀況/庫存狀況,用於指導下一步的銷售活動和款式設計,這些數據須要天天更新,這就是典型的離線計算場景。爲了完成上述流程,數據部門須要進行以下處理動做:github
- 將最近3個月的銷售數據、庫存數據從業務系統中抽取出來,要支持天天的增量抽取;
- 結合統計需求,編寫SQL進行統計;
- 數據天天更新,須要以天爲週期,觸發數據抽取、SQL統計的腳本,天天進行數據更新;
- 監控任務的運行狀況,當發生異常狀況時,須要進行排錯、重刷歷史數據等操做;
爲解決以上場景的問題,須要在數據採集、存儲、加工等方面進行各類選型對比,一般可歸類爲如下2類:shell
一、基於MySQL、Greenplum等關係型或MPP類數據庫:數據庫
- 數據採集:可採用開源的Kettle、DataX等組件,配合shell腳本實現數據抽取;
- 數據開發:本地文本編輯器、Navicat等工具,配合Shell腳本實現數據開發+週期調度;
- 數據運維:人工觀察結果數據產出,沒有成熟的運維工具,一般都是業務方發現數據問題反饋給技術人員,響應滯後;
- 集羣運維:集羣監控、告警、擴縮容均手動進行。
二、基於Hadoop體系的技術方案安全
- Hadoop體系一般會採用HDFS+YARN做爲基座,再配合Hive、Spark、Impala等引擎做爲擴展;
- 數據採集、開發、調度,均有多種可選,例如Sqoop、Hue、Oozie/Azkaban/AirFlow等,再配合Shell進行各種組件的打通與配置管理
- 集羣運維:可採用開源的Cloudera Manager等工具。
三、以上2類場景存在如下幾種問題:架構
- 採集、開發、調度、運維的工具都比較原始,由各類開源組件拼湊組合造成,沒有統一高效的管理方式,適用於小規模團隊,沒法知足大規模、團隊協做化的數據中臺建設;
- 在數據採集方面,DataX、Kettle等組件通常都是單點使用,沒法知足大吞吐量、高併發的數據同步場景;
- 在數據開發、任務調度方面,一般只能採用文本編輯器+Navicat+Shell的原始方案,數據開發體驗較差,在系統參數、調度打通、函數管理、元數據查看等方面存在各類體驗問題;
- 調度引擎與任務運維方面,開源的Azkaban、AirFlow雖然支持基本的調度邏輯,但與開發環節彼此割裂,沒有實現無縫打通。在任務運維方面,只有基本的狀態監控,在重刷歷史數據、任務異常處理、告警配置等方面均有所欠缺;
- 在數據管理方面,開源的Hue只有基本的元數據查看,在數據權限、生命週期、元數據擴展等方面均難以知足。
2、BatchWorks主要功能
BatchWorks提供的各項功能,完整覆蓋上述場景中的各類需求,包含的功能模塊以下:併發
一、數據同步:框架
- 分佈式系統架構:基於自研分佈式同步引擎(FlinkX),用於在多種異構數據源之間進行數據同步,具備高吞吐量、高穩定性的特色;
- 豐富的數據源支持:支持關係型數據庫、半結構化存儲、大數據存儲、分析性數據庫等20餘種不一樣的數據源;
- 可視化配置:主要包括同步任務選擇源表、目標表、配置字段映射、配置同步速度等步驟,2分鐘便可完成配置;
- 斷點續傳:系統自動記錄每次的同步點位,下一週期運行時,自動從上次的讀取位置繼續同步,既能夠減輕源庫的壓力,又能夠保障同步的數據無遺漏、無重複;
- 整庫同步:快速、批量配置大量同步任務,節省大量初始化精力。
- 髒數據管理:在讀取、寫入階段發生異常的數據,系統可將這部分數據保存下來,便於用戶及時排查髒數據問題。

二、數據開發:運維
- 豐富的任務類型:支持SparkSQL、HiveSQL、Python、Shell等10餘種不一樣的任務類型,知足不一樣場景下的數據處理需求;
- 豐富的系統參數:內置多個系統參數,可根據須要指定自定義系統參數,支持常量、變量,可指定豐富的時間格式和時間計算模式;
- 優秀的開發體驗:支持代碼高亮、關鍵字/表名/字段名智能提示、語法檢測、編輯器主題、快捷鍵等功能,爲用戶提供優秀的編碼體驗;
- 本地文件導入:支持本地csv、txt文件導入至數據表,用於臨時性數據分析;
- 函數管理:支持Hive、Spark等計算引擎的函數查看、UDF函數的註冊。

三、調度引擎:
- 基於自研分佈式調度引擎,知足任務的週期性、依賴性調度,支持百萬級別任務調度;
- 系統可智能識別當前任務的代碼與依賴信息,並自動推薦上游任務;
- 根據用戶的調度配置,智能識別超出有效期的任務,自動取消運行,節約計算資源。
四、運維中心:
- 自動監控並統計每日跑批進度、異常狀況等信息,彙總易出錯任務,協助用戶排查代碼質量、平臺運行狀況等問題;
- 實時監控實例運行狀況,進行查看日誌、重跑、終止、恢復調度等操做;
- 經過指定時間範圍,快速重刷歷史數據,操做簡單、便捷;
- 可根據失敗、超時等多種條件觸發告警規則,經過短信、郵件等方式將異常信息發送給指定人員。

五、安全保障:
BatchWorks採用多種方式保障數據安全和功能操做的安全,主要涵蓋集羣安全、數據安全和功能安全3部分:
- 集羣安全:可對接開源Kerberos組件,保障平臺安全訪問。
- 數據安全:支持用戶跨項目權限申請,可指定須要的具體操做內容和字段信息,經管理員審批經過後可訪問。
- 功能安全:內置管理員等多種角色,不一樣的角色有不一樣的操做權限,保障功能安全。
3、產品優點
一、全生命週期覆蓋:
覆蓋數據採集、數據處理、調度依賴、任務運維等場景,充分知足離線數據開發過程當中的各項需求,相比傳統的開源工具,能夠節省80%數據開發時間。
二、多引擎、異構對接:
- 兼容開源、Cloudera、Hortonworks、星環、華爲Fusion Insight等各類Hadoop體系或MPP類數據庫做爲計算引擎;
- 一套離線開發平臺支持同時對接多套雲環境的異構引擎,例如:一套BatchWorks同時對接阿里雲 EMR、AWS EMR、本地機房TiDB引擎;
三、自主知識產權:2大核心模塊100%自研,掌握所有知識產權
- 批流一體數據同步引擎FlinkX:基於Flink框架自主研發的分佈式、插件化、批流一體數據同步引擎FlinkX,具有全量/增量/實時數據抽取全棧能力。該引擎已經在Github上開源
- 高性能分佈式調度引擎DAGScheduleX:自主研發的分佈式DAG調度引擎,支持百萬級任務併發,具有周期性、依賴性、優先級等多種調度配置
四、在線化、可視化操做:
產品經過Web頁面爲用戶提供服務,屏蔽底層複雜的分佈式計算引擎,在線化開發平臺,提升開發效率。
數棧是雲原生—站式數據中臺PaaS,咱們在github和gitee上有一個有趣的開源項目:FlinkX,FlinkX是一個基於Flink的批流統一的數據同步工具,既能夠採集靜態的數據,也能夠採集實時變化的數據,是全域、異構、批流一體的數據同步引擎。你們喜歡的話請給咱們點個star!star!star!
github開源項目:https://github.com/DTStack/flinkx
gitee開源項目:https://gitee.com/dtstack_dev_0/flinkx