注:本篇文章闡述的是StarRocks-3.2版本的Broker?Load導入機制
一、概述
? ? ?Broker Load導入方式支持從HDFS類的外部存儲系統(例如:HDFS、阿里OSS、騰訊COS、華為云OBS等),支持Parquet、ORC、CSV、及 JSON 四種文件格式,且適用于數據文件數量較多且單個文件的大小超過10GB場景的異步導入方式。Broker Load 是一種基于 MySQL 協議的異步導入方式,提交導入作業以后,StarRocks 會異步地執行導入作業。
? ? 這種導入方式需要借助Broker組件來協助進行Broker Load。?Broker是StarRocks集群中一種可選進程,主要用于支持 StarRocks讀寫遠端存儲上的文件和目錄。Broker是一個獨立的無狀態進程,封裝了文件系統接口,為StarRocks提供讀取遠端存儲系統中文件的能力。通過部署的Broker程序,StarRocks可讀取數據源上的數據,利用自身的計算資源對數據進行預處理和導入。
? ?Broker 僅作為一個數據通路,并不參與任何計算,因此僅需占用較少的內存。通常一個 StarRocks系統中會部署一個或多個 Broker 進程。
? ?官網文檔關于Broker Load的介紹地址為:
BROKER LOAD | StarRocks
從本地文件系統導入 | StarRocks
? ?Broker的介紹:
Broker - Apache Doris
二、Broker?Load原理
2.1 流程圖
2.2 流程詳解
(1)用戶在客戶端創建broker load任務。
(2)fe在接收到用戶的創建請求后,會根據請求導入的源文件的數據量和文件數量以及be的數量生成plan,并將plan分發到多個be節點上,每個be會負責一定數據量的導入任務。
(3)對應的be在接收到導入任務時,會通過broker進程,去遠端存儲系統上拉去相應的數據到對應的be上,在對數據 transform之后將數據導入StarRocks系統。
(4)所有be均完成導入,由fe最終決定導入是否成功,并返回最終結果給用戶;
2.3 注意事項
(1)最好是每個be節點上創建一個broker進程,同時broker進程的名稱保持一致,用戶在發起導入任務的時候,可以盡可能的保證所有的broker進程和對應的be節點參與到導入任務中來,最大化的提高導入性能。
(2)源文件不建議是數量較多的碎片化小文件,同時也不建議是數據量比較大的數量較少的文件個數,可以酌情把小文件合并或者大文件拆分成數量為be倍數的個數,單個文件大概在幾十到百GB 級別大小的文件。
2.4 應用案例
? ??Broker?Load導入案例,見文章:
第3.7章:StarRocks數據導入--Broker Load_starrocks broker load-CSDN博客
? ?ps:Broker?Load支持在導入過程中進行字段順序調整或者進行簡單的數據轉換的,處理邏輯:“順序占位取值”和“名稱匹配數據”,該邏輯貫穿整個StarRocks的導入操作中(核心的Stream Load等導入方式也是基于這種處理邏輯)
參考文章:
第3.7章:StarRocks數據導入--Broker Load_starrocks broker load-CSDN博客
Broker Load - Apache Doris