關於 Apache Pulsar
Apache Pulsar 是 Apache 軟體基金會頂級專案,是下一代雲原生分散式訊息流平臺,集訊息、儲存、輕量化函式式計算為一體,採用計算與儲存分離架構設計,支援多租戶、持久化儲存、多機房跨區域資料複製,具有強一致性、高吞吐、低延時及高可擴充套件性等流資料儲存特性。
GitHub 地址:http://github.com/apache/pulsar/
文章轉自公眾號:Apache InLong,原文地址:https://mp.weixin.qq.com/s/Wg...
Apache InLong 增加了通過 Apache Pulsar 接入資料的能力,充分利用了 Pulsar 不同於其它 MQ 的技術優勢,為金融、計費等資料質量要求更高的資料接入場景,提供完整的解決方案。在下面的內容中,我們將通過一個完整的示例介紹如何通過 Apache InLong 使用 Apache Pulsar 接入資料。
Apache InLong(incubating)簡介
Apache InLong(應龍 https://inlong.apache.org)是騰訊捐獻給 Apache 社群的一站式資料流接入服務平臺,提供自動、安全、可靠和高效能的資料傳輸能力,方便業務構建基於流式的資料分析、建模和應用。InLong 專案原名 TubeMQ ,專注於高效能、低成本的訊息佇列服務。為了進一步釋放 TubeMQ 周邊的生態能力,我們將專案升級為 InLong,專注打造一站式資料流接入服務平臺。Apache InLong 以騰訊內部使用的 TDBank 為原型,依託萬億級別的資料接入和處理能力,整合了資料採集、匯聚、儲存、分揀資料處理全流程,擁有簡單易用、靈活擴充套件、穩定可靠等特性。
Apache InLong 服務於資料採集到落地的整個生命週期,按資料的不同階段提供不同的處理模組,主要包括:
- inlong-agent,資料採集 Agent,支援從指定目錄或檔案讀取常規日誌、逐條上報。後續也將擴充套件 DB 採集、HTTP 上報等能力;
- inlong-dataproxy,一個基於 Flume-ng 的 Proxy 元件,支援資料傳送阻塞和落盤重發,擁有將接收到的資料轉發到不同 MQ(訊息佇列)的能力;
- inlong-tubemq,騰訊自研的訊息佇列服務,專注於大資料場景下海量資料的高效能儲存和傳輸,在海量實踐和低成本方面有著良好的核心優勢;
- inlong-sort,對從不同的 MQ 消費到的資料進行 ETL 處理,然後匯聚並寫入 Hive、ClickHouse、Hbase、Iceberg 等儲存系統;
- inlong-manager,提供完整的資料服務管控能力,包括後設資料、任務流、許可權,OpenAPI 等;
- inlong-website,用於管理資料接入的前端頁面,簡化整個 InLong 管控平臺的使用。
關於 Apache Pulsar
Apache Pulsar 是 Pub/Sub 模型的訊息系統,並且從設計上做了儲存和計算的分離。Apache Pulsar 計算與儲存分離的架構,以及分片儲存的設計為 Apache Pulsar 帶來了相比於傳統基於分割槽儲存 MQ 的一些優勢:
- Broker 和 Bookie 相互獨立,方便實現獨立的擴充套件以及獨立的容錯;
- Broker 無狀態,便於快速上、下線,更加適合於雲原生場景;
- 分割槽儲存不受限於單個節點儲存容量;
- 分割槽資料分佈均勻。
準備條件
- 安裝 Apache Pulsar,版本 2.6+
- 安裝 Apache Hive,版本 2.3+
安裝 InLong
部署 InLong ,可以使用 Docker Compose 實現一鍵部署,也可以通過二進位制檔案在普通機器上部署。
- Docker Compose 部署:https://inlong.apache.org/zh-...
- 使用安裝包部署:https://inlong.apache.org/zh-...
區別於 InLong TubeMQ,如果使用 Apache Pulsar,需要在 Manager 元件安裝中配置 Pulsar 叢集資訊,格式如下:
# Pulsar admin URL
pulsar.adminUrl=http://127.0.0.1:8080,127.0.0.2:8080,127.0.0.3:8080
# Pulsar broker address
pulsar.serviceUrl=pulsar://127.0.0.1:6650,127.0.0.1:6650,127.0.0.1:6650
# Default tenant of Pulsar
pulsar.defaultTenant=public
建立資料接入
配置資料流 Group 資訊
在建立資料接入時,資料流 Group 可選用的訊息中介軟體選擇 Pulsar,其它跟 Pulsar 相關的配置項還包括:
- Queue module:佇列模型,並行或者順序,選擇並行時可設定 Topic 的分割槽數,順序則為一個分割槽;
- Write quorum:訊息寫入的副本數;
- Ack quorum:確認寫入 Bookies 的數量;
- retention time:已被 consumer 確認的訊息被儲存的時間;
- ttl:未被確認的訊息的過期時間;
- retention size:已被 consumer 確認的訊息被儲存的大小。
配置資料流
配置訊息來源時,檔案資料來源中的檔案路徑,可參照 inlong-agent 中 File Agent 的詳細指引。
配置資料格式
配置 Hive 叢集
儲存 Hive 流向,點選“提交審批”。
資料接入審批
進入審批管理頁面,點選我的審批,審批上面提交的接入申請,審批結束後會在 Pulsar 叢集同步建立資料流需要的 Topic 和訂閱。
我們可以在 Pulsar 叢集使用命令列工具檢查 Topic 是否建立成功:
配置檔案 Agent
在配置檔案 Agent 時,需要根據資料接入建立時指定的目錄下建立檔案:
touch /data/test_file.txt;
按照建立資料流時的資料來源格式,向檔案中寫入資料(可以按格式寫入更多資料):
echo -e "1|test\n2|test\n" >> /data/test_file.txt
資料落地檢查
最後,我們登入 Hive 叢集,通過 Hive 的 SQL 命令檢視 test_stream
表中是否成功插入了資料。
問題排查
如果出現資料未正確寫入 Hive 叢集,可以檢查 Dataproxy 和 Sort 相關資訊是否同步:
- 檢查 Inlong-Dataproxy 的 conf/topics.properties 資料夾中是否正確寫入該資料流對應的 Topic 資訊
b_test_group/test_stream=persistent://public/b_test_group/test_stream
- 檢查 InLong Sort 監聽的 ZooKeeper 中是否成功推送了資料流的配置資訊:
get /inlong_hive/dataflows/{{sink_id}}
關注公眾號「Apache Pulsar」,獲取更多技術乾貨
加入 Apache Pulsar 中文交流群 ??