天天看點

淺談資料開發神器——數棧離線開發平台(BatchWorks)

數棧是雲原生—站式資料中台PaaS,我們在github和gitee上有一個有趣的開源項目:​​FlinkX​​,FlinkX是一個基于Flink的批流統一的資料同步工具,既可以采集靜态的資料,也可以采集實時變化的資料,是全域、異構、批流一體的資料同步引擎。大家喜歡的話請給我們點個star!star!star!

github開源項目:​​https://github.com/DTStack/flinkx​​

gitee開源項目:​​https://gitee.com/dtstack_dev_0/flinkx​​

随着數智化時代的到來,企業需要彙聚各業務闆塊資料,提供一個強大的中間層為高頻多變的業務場景提供支撐。基于此類需求,“資料中台”應運而生,将資料提煉為資料資産,轉換成業務需要的資料「血液」。

資料中台的建設與營運,通常包含如下活動:資料彙聚、資料加工與提煉、對外提供資料服務這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分鐘即可完成配置;
  • 斷點續傳:系統自動記錄每次的同步點位,下一周期運作時,自動從上次的讀取位置繼續同步,既可以減輕源庫的壓力,又可以保障同步的資料無遺漏、無重複;
  • 整庫同步:快速、批量配置大量同步任務,節省大量初始化精力。
  • 髒資料管理:在讀取、寫入階段發生異常的資料,系統可将這部分資料儲存下來,便于使用者及時排查髒資料問題。
淺談資料開發神器——數棧離線開發平台(BatchWorks)

2、資料開發:

  • 豐富的任務類型:支援SparkSQL、HiveSQL、Python、Shell等10餘種不同的任務類型,滿足不同場景下的資料處理需求;
  • 豐富的系統參數:内置多個系統參數,可根據需要指定自定義系統參數,支援常量、變量,可指定豐富的時間格式和時間計算模式;
  • 優秀的開發體驗:支援代碼高亮、關鍵字/表名/字段名智能提示、文法檢測、編輯器主題、快捷鍵等功能,為使用者提供優秀的編碼體驗;
  • 本地檔案導入:支援本地csv、txt檔案導入至資料表,用于臨時性資料分析;
  • 函數管理:支援Hive、Spark等計算引擎的函數檢視、UDF函數的注冊。
淺談資料開發神器——數棧離線開發平台(BatchWorks)

3、排程引擎:

  • 基于自研分布式排程引擎,滿足任務的周期性、依賴性排程,支援百萬級别任務排程;
  • 系統可智能識别目前任務的代碼與依賴資訊,并自動推薦上遊任務;
  • 根據使用者的排程配置,智能識别超出有效期的任務,自動取消運作,節約計算資源。

4、運維中心:

  • 自動監控并統計每日跑批進度、異常情況等資訊,彙總易出錯任務,協助使用者排查代碼品質、平台運作情況等問題;
  • 實時監控執行個體運作情況,進行檢視日志、重跑、終止、恢複排程等操作;
  • 通過指定時間範圍,快速重刷曆史資料,操作簡單、便捷;
  • 可根據失敗、逾時等多種條件觸發告警規則,通過短信、郵件等方式将異常資訊發送給指定人員。
淺談資料開發神器——數棧離線開發平台(BatchWorks)

5、安全保障:

BatchWorks采用多種方式保障資料安全和功能操作的安全,主要涵蓋叢集安全、資料安全和功能安全3部分:

  • 叢集安全:可對接開源Kerberos元件,保障平台安全通路。
  • 資料安全:支援使用者跨項目權限申請,可指定需要的具體操作内容和字段資訊,經管理者審批通過後可通路。
  • 功能安全:内置管理者等多種角色,不同的角色有不同的操作權限,保障功能安全。

三、産品優勢

1、全生命周期覆寫:

覆寫資料采集、資料處理、排程依賴、任務運維等場景,充分滿足離線資料開發過程中的各項需求,相比傳統的開源工具,可以節省80%資料開發時間。

2、多引擎、異構對接:

  • 相容開源、Cloudera、Hortonworks、星環、華為Fusion Insight等各種Hadoop體系或MPP類資料庫作為計算引擎;
  • 一套離線開發平台支援同時對接多套雲環境的異構引擎,例如:一套BatchWorks同時對接阿裡雲 EMR、AWS EMR、本地機房TiDB引擎;
  • 批流一體資料同步引擎FlinkX:基于Flink架構自主研發的分布式、插件化、批流一體資料同步引擎FlinkX,具備全量/增量/實時資料抽取全棧能力。該引擎已經在Github上開源
  • 高性能分布式排程引擎DAGScheduleX:自主研發的分布式DAG排程引擎,支援百萬級任務并發,具備周期性、依賴性、優先級等多種排程配置

繼續閱讀