大資料 阿里巴巴的大規模資料流處理系統

2021-09-19 17:44:20 字數 1464 閱讀 5027

隨著阿里系的應用幾乎覆蓋了移動網際網路的全行業,阿里巴巴開始致力於搭建世界一流的計算引擎。

在2023年,阿里巴巴開始將視線轉向flink,發現表現不錯,於是開始將其投入到計算引擎的測試中,並定義內部名稱為blink。在隨後的一年克服了穩定性和可靠性的問題;而到了2023年,就開始專注於blink各元件效能的提公升,包括sql的功能及平台。

在blink的生態系統中,自下而上分別是資源管理及儲存、blink執行引擎、資料流api及資料集api、統一的sql api。在sql api之上,阿里開發了兩個平台,乙個是sql平台,允許使用者使用sql編譯,或部署sql任務;另乙個平台是機器學習平台,這個平台是純圖形化ui,使用者可以在介面上拖動任務或元件,以達到配置和連線的目的。有了這兩大平台,就足以支撐阿里系上述的所有網際網路產品。

阿里為何選擇sql作為整個平台的底層介面(blink的上層介面)呢?sql有以下5大特點:

通用性:各種平台的開發人員都熟悉sql

易於理解:更易描述業務邏輯

效能優化:sql系統的核心優化器能使任務更快捷地執行

穩定性:甚至可以平滑替換執行引擎

統一性:即可使用者batch任務,也可用於streaming任務

這裡大家可能就會有疑問了,為什麼sql會適用於streaming的任務呢?我們知道sql適用於表的查詢,而在流處理任務中根本沒有表啊,即使有也是不斷在更新變化的表。阿里就率先提出了動態表的概念:使用者可以通過標準sql語句查詢資料流,也就是說資料流和表之間可以無縫轉換。這其實也不難理解,只要我們把資料流看作是表的變更日誌,就得到了動態表;把錶的變更日誌匯出就得到了資料流,阿里稱之為「表流二相性」。

當然,在對歷史資料做查詢時,還要用到sql的ddl,dml以及queryconf語句。在查詢涉及多個資料流的時候,可以用sql的join語句將資料流與資料流、資料流與表組合在一起。組合方式分為lookup join和snapshot join。前者指當系統收到sql指令需要查詢表的結果時,這時需要在join語句中加入處理時間(proctime()),這樣sql執行優化器就會找到對應時刻的查詢結果;後者需要使用者輸入乙個常量時間,在系統支援版本資料的情況下將對應時刻的資料返回給使用者。

阿里巴巴大資料之路

資料治理 對這些資料進行有序 有結構地分類組織和儲存,目前企業資料現狀 集團資料儲存達到eb 1eb 1024pb 2 60位元組 級別,部分單張表每天的資料記錄數高達幾千億條 資料工程師工作 資料工程師每天要面對百萬級規模的離線資料處理工作。資料模型 資料研發 資料質量和運維保障工作。大資料系統體...

《大資料之路 阿里巴巴大資料實踐》筆記

阿里巴巴大資料系統體系主要分為,資料採集 資料計算 資料服務和資料應用四大層次。瀏覽器的頁面日誌採集 h5裝置標識 日誌傳輸資料同步基礎 不過濾刪除流水,下游邏輯刪除 過濾最後一條刪除流水,比如存在手工批量刪除或者備份刪除,則資料還是有效的不應當置為無效 過濾刪除流水和之前的流水 阿里資料倉儲的同步...

大規模資料作成時的注意點。

有時候測試大規模資料,300萬條。這時有幾點是我們需要注意的。1.對作成的資料,選擇乙個字段設定上特殊的值。通過這個特殊值來判斷表中的資料是這次大規模的測試資料,還是已有資料。同時也方便將來刪除。2.確認資料的有效性。比如,db中有的字段是加密後的字段,程式中會將這個資料解密。如果無法解密則會報錯,...