Apache Linkis是如何成爲數據應用開發基座的


01

引 言


大家在以前可能主要了解的是Apache Linkis在上層應用和底層引擎之間構建了一層計算中間件,通過計算中間件將上層應用和底層引擎層解耦,簡化複雜的網絡調用關係,降低整體複雜度。但是Linkis作爲中間件,除了解決連通的計算治理問題,還提供了哪些公衆中間層的能力呢以及怎麼做到功能共享和資源共享的呢?

本文將從數據應用開發基座能力的方向去詳細說明Linkis是如何提供公共的基礎能力,如何去基於Linkis快速高效構建數據應用工具的,以及去說明集成了 Linkis 的上層應用工具如何做到互聯互通,打破應用孤島的。


02

爲什麼需要數據應用開發基座


當今數據處理和利用的技術(Data-Tech)的發展突飛猛進,從原來的中心化的數據倉庫,ETL技術,衍生到了一個繁雜的數據技術體系,細分成多種數據處理領域,比如:數據分析、數據治理、數據集成、數據可視化、機器學習等。每個領域又會有相應的上層應用工具,這些工具都需要和底層的數據計算和存儲引擎進行對接,並且每個領域的工具很多時候都依賴了一些公共能力,比如數據源、上下文、UDF等。這些公共的功能,包括和底層引擎的連接能力,正是可以通過中間層去解決的能力。


如下圖所示,當我們開發數據分析工具和數據質量工具時,會發現很多功能是重合的。在沒有統一基座的情況下,數據分析工具需要支持不同數據源的查詢和分析,並具有數據源管理能力。同樣,數據質量工具也需要完成不同數據源的質量校驗和管理。在許多情況下,用戶需要對數據分析工具的結果進行數據質量校驗。如果這兩個工具之間無法連通,可能需要先將數據分析結果存儲到表中,然後再進行數據質量校驗。當然,還有許多其他的重合的功能,如UDF、變量、參數管理等。這些功能不僅增加了多個工具的開發成本,而且爲用戶提供的能力可能並不相同,且無法互聯互通,造成割裂。

爲了節省這些成本加快上層應用工具的能力構建,對於有個中間層去提供數據應用開發工具的基座能力顯得很有必要,對於平臺來說可以提供統一的公共能力,可以做統一的安全與權限,方便管理與維護,提升功能的可複用性,從而加快數據應用的構建過程。同時,對於上層應用來說可以節省開發成本並且減少工具間的割裂感。


數據應用開發基座通過將之前分散在各個工具的能力進行集中沉澱,並形成可複用、標準化的統一能力,同時提供個性化的擴展能力。這將使得基於此基座的上層應用能夠更好地滿足各種應用場景的需求。


當然我也去諮詢了ChatGPT,現在有哪些數據應用開發基座工具,針對他的回覆,下面我們將介紹爲什麼“林凱思”可以作爲數據應用開發基座工具。


03

Apache Linkis提供了哪些

數據應用開發基座的能力


爲什麼在我們將Linkis作爲統一網關或JobServer後,還要爲其增加數據應用開發基座的能力呢?這個是在我們實際去開發了多個上層應用工具後,發現如在IDE工具裏面定義了一個UDF、變量調試通過後,在發佈到調度工具的時候,這些UDF和變量又需要重現定義一遍。當依賴的一些jar包、配置文件等發生變化時,也需要修改兩個地方。


針對這些類似跨上層應用工具的公共上下文的問題,在我們實現任務統一入口爲Linkis後,我們就在想是不是可以由Linkis去提供這個數據應用開發工具的基座能力,提供一些公共可以被多個應用工具去複用的能力。所以在Linkis層設計了一層公共增強服務PES,現在已經提供了以下能力:


提供統一的數據源能力:數據源在Linkis層進行統一定義和管理,應用工具只需要通過數據源名字來進行使用,不再需要去維護對應數據源的連接信息。而且在不同的工具間數據源的含義都是一樣的。並提供了相應的數據源的元數據的查詢能力。


提供公共的UDF能力:統一UDF、小函數的定義規範和語義,做到一處定義多個工具都可使用。


提供統一上下文的能力:支持任務間傳遞信息,包括變量、結果集、資源文件的多任務間傳遞,提供任務間傳遞上下文的能力。


提供統一物料的能力:提供統一的物料,在多個工具間支持共享訪問這些物料,並且物料支持存儲多種的文件類型,並支持版本控制。


提供統一配置和變量的能力:提供了統一的配置能力支持模板化的配置不同的引擎參數模版,支持自定義變量、內置常用的系統變量和時間格式變量等。


提供公共錯誤碼的能力:提供統一的錯誤碼能力,對常用計算存儲引擎的作物進行分類編碼以及知識庫的能力,並提供了方便的SDK進行調用。

通過Linkis的公共增強服務,可以打破上層應用工具間的孤島,做到變量、函數、文件、結果集等上下文的共享,就像下圖所展示的一樣,並且大大減少應用工具間的重複開發工作。



04

Linkis數據應用開發基座能力

簡易使用介紹


那麼,Linkis提供的這些公共能力是否易於使用呢?接下來,讓我們一起了解如何運用這些功能。


4.1 數據源的使用

首先管理員需要在Linkis管理臺或者通過接口完成數據源的創建。

接着上層應用工具就可以通過數據源的名字直接進行使用了,包括可以獲取數據源的連接信息、DDL、和元數據信息查看等。比如Qualitis想對某個數據源的某個表做質量校驗,只需要通過數據源的名字就可以完成數據的查詢和連接。如下面通過SDK的使用方式一樣

詳細可以參考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/datasource-manual


4.2 UDF的使用

首先UDF創建者通過在Linkis管理臺或者通過接口定義UDF,發佈共享後就可以給到用戶進行使用,多個工具都可以直接進行使用,不需要重新定義和擔心UDF語義不同問題,並且支持版本控制方便調試和版本的回退。現在已經支持了Hive、Spark、Python等UDF,並支持Jar、Java、Scala、Python等方式定義UDF。

使用起來就更加簡單,只需要在提交的任務中直接使用UDF就行,會自動加載和進行使用,不需要用戶操心UDF物料等問題。

#通過Python定義UDF函數def helloUDF(col):    print "hello:" + str(col)#在sql中可以直接進行使用select helloUDF(name) from student

詳細可以參考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/control-panel/udf-function


4.3 上下文的使用

上下文ContextService(CS)用於解決一個數據應用開發流程,跨多個系統間的數據和信息共享問題。例如,B系統需要使用A系統產生的一份數據,通常的做法如下:

  A系統調用B系統開發的數據訪問接口;

  B系統讀取A系統寫入某個共享存儲的數據。


有了CS之後,A和B系統只需要與CS交互,將需要共享的數據和信息寫入到CS,需要讀取的數據和信息從CS中讀出即可,無需外部系統兩兩開發適配,極大降低了系統間信息共享的調用複雜度和耦合度,使各系統的邊界更加清晰。現在CS已經支持了傳遞結果集、變量、資源文件、對象等。

詳細可以參考:https://linkis.apache.org/zh-CN/docs/latest/architecture/feature/public-enhancement-services/context-service/overview


4.4 物料庫的使用

BML(物料庫服務)是linkis的物料管理系統,主要用來存儲用戶的各種文件數據,包括用戶腳本、資源文件、第三方Jar包等,支持版本控制和權限控制。提供了簡單易用的SDK,方便上層應用進行使用。

詳細可以參考:

https://linkis.apache.org/zh-CN/docs/latest/architecture/feature/public-enhancement-services/bml/overview


4.5 配置和變量的使用

配置就是提交給Linkis任務指定的配置模版功能,當任務中沒有帶運行時參數和啓動參數時,就會用默認模版的參數。參數通過在Linkis管理臺進行配置,就可以在各個應用中進行使用。

而變量是Linkis提供的支持在任務中定義和使用變量,進行變量的自動替換,目前支持了多種方式的變量,包括用戶自定義,系統內部變量、date pattern變量等。

詳細可以參考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/dynamic-variables


4.6 錯誤碼的使用

錯誤碼的功能,通過解析各個不同引擎的任務錯誤異常信息,優化爲用戶可以理解的錯誤碼,並關聯知識庫。用戶只需要點擊錯誤碼就可以跳轉知識庫。支持通過Client進行調用,傳入一段日誌返回對應的錯誤碼和知識庫。

詳細可以參考:

https://linkis.apache.org/zh-CN/docs/latest/tuning-and-troubleshooting/error-guide/error-code


05

使用Linkis作爲數據應用開發基座的

應用案例


前面討論了Linkis作爲數據應用開發基座的優點與易用性,現在我們來看實際案例。下圖展示的是數據開發集成工具IDE(Scriptis)和數據治理工具(Qualitis)接入Linkis的示意圖。Scriptis基於Linkis進行開發,因此基本上只包含前端代碼,只需關注前端交互便可實現出色的用戶體驗。類似地,Qualitis只需關注數據質量校驗規則,無需操心任務的高併發和多租戶控制,可以複用Linkis提供的數據源、UDF、配置參數、變量等基座能力。


同時因爲這兩款工具都基於Linkis的基礎之上進行開發的,所以這些公共的基座能力是互聯互通的,在Scriptis上面定義的一個UDF,可以直接在Qualitis進行使用,IDE分析的一個結果可以在Qualitis上面直接進行校驗,不需要將結果落入對應的庫表中。這不僅大大節省了兩個工具的開發成本,而且還可以打破工具間的應用孤島,提高用戶體驗。

下圖中展示的是已經和Linkis 做了對接的一些開源項目,這些上層應用工具項目,都是通過Linkis來提交和管理各種類型引擎的任務,把Linkis 當成了一個開發基座,極大的降低了上層應用工具在連通、擴展、管控等計算治理方面的開發工作量,讓上層應用工具只需專注於其自身的功能性需求。



06

總結與未來規劃


本文我們介紹了什麼是數據應用開發基座,以及大數據平臺爲什麼需要數據應用開發基座,以及Linkis作爲數據應用開發基座提供的能力和能力簡單使用。


未來,Linkis作爲數據應用開發基座的能力將不斷擴展,以提供更多的公共基礎功能,並持續完善現有公共能力。我們期待Linkis推動更多上層應用工具的集成,共同構建一個完整的數據應用開發應用市場。


— END —

如何成爲社區貢獻者

 官方文檔貢獻。發現文檔的不足、優化文檔,持續更新文檔等方式參與社區貢獻。通過文檔貢獻,讓開發者熟悉如何提交PR和真正參與到社區的建設。參考攻略:保姆級教程:如何成爲Apache Linkis文檔貢獻者


 代碼貢獻。我們梳理了社區中簡單並且容易入門的的任務,非常適合新人做代碼貢獻。請查閱新手任務列表:https://github.com/apache/incubator-linkis/issues/1161


 內容貢獻:發佈WeDataSphere開源組件相關的內容,包括但不限於安裝部署教程、使用經驗、案例實踐等,形式不限,請投稿給小助手。例如:


 社區答疑:積極在社區中進行答疑、分享技術、幫助開發者解決問題等;


 其他:積極參與社區活動、成爲社區志願者、幫助社區宣傳、爲社區發展提供有效建議等;

本文分享自微信公衆號 - WeDataSphere(gh_273e85fce73b)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章