淺談數據開發神器——數棧離線開發平台(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分鍾即可完成配置;
  • 斷點續傳:系統自動記錄每次的同步點位,下一周期運行時,自動從上次的讀取位置繼續同步,既可以減輕源庫的壓力,又可以保障同步的數據無遺漏、無重復;
  • 整庫同步:快速、批量配置大量同步任務,節省大量初始化精力。
  • 臟數據管理:在讀取、寫入階段發生異常的數據,系統可將這部分數據保存下來,便於用戶及時排查臟數據問題。

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頁面為用戶提供服務,屏蔽底層復雜的分布式計算引擎,在線化開發平台,提高開發效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM