乾貨分享!帶你瞭解數棧FlinkX實時採集原理與使用
一、FlinkX實時採集功能的基本介紹
首先為大家介紹下FlinkX實時模組的分類,如下圖所示:
1、實時採集模組(CDC)
1)MySQL Binlog外掛
利用阿里開源的Canal元件實時從MySQL中捕獲變更資料。
2)PostgreSQL Wal外掛
PostgreSQL 實時採集是基於 PostgreSQL的邏輯複製以及邏輯解碼功能來完成的。邏輯複製同步資料的原理是,在Wal日誌產生的資料庫上,由邏輯解析模組對Wal日誌進行初步的解析,它的解析結果為ReorderBufferChange(可以簡單理解為HeapTupleData),再由Pgoutput Plugin對中間結果進行過濾和訊息化拼接後,然後將其傳送到訂閱端,訂閱端透過邏輯解碼功能進行解析。
2、訊息佇列
1)Kafka:Kafka外掛存在四個版本,根據Kafka版本的不同,外掛名稱也略有不同。具體對應關係如下表所示:
2)EMQX:EMQX 是一款完全開源,高度可伸縮,高可用的分散式MQTT訊息伺服器,適用於IoT、M2M 和移動應用程式,可處理千萬級別的併發客戶端。
3、間隔輪詢
RDB型別外掛的使用限制:
只有RDB型別的reader外掛支援間隔輪詢
輪詢欄位只能為數值型別或者時間型別
輪詢欄位只能為連續遞增且不重複
4、其他
Hive外掛: Hive外掛只有寫入外掛,功能基於HDFS的寫入外掛實現,也就是說從實時採集外掛讀取,寫入Hive也支援失敗恢復的功能。
二、Binlog實時採集原理
1、什麼是Binlog
MySQL 的二進位制日誌 Binlog 可以說是 MySQL 最重要的日誌,它記錄了所有的 DDL 和 DML 語句(除了資料查詢語句Select、Show等),以事件形式記錄,還包含語句所執行的消耗的時間,MySQL的二進位制日誌是事務安全型的,Binlog 的主要目的是複製和恢復。
2、Binlog外掛基本原理
實時採集外掛的核心是如何實時捕獲資料庫資料的變更,對於MySQL資料庫而言,阿里開源的Canal已經很好的幫我們實現了基於MySQL資料庫增量日誌解析,提供增量資料訂閱和消費功能。因此這裡我們直接用Canal捕獲MySQL資料庫資料的變更資訊,基於FlinkX框架將任務簡化成指令碼的配置,基於Flink的Checkpoint機制提供了任務的故障恢復,提高了任務的容錯性。
基本步驟如下:
任務啟動時啟動Canal執行緒
Canal模擬MySQL slave的互動協議,偽裝自己為MySQL slave,向MySQL master傳送dump協議
MySQL master收到dump請求,開始推送Binary Log給slave(即Canal)
Canal解析Binary Log 物件(原始為Byte流)
FlinkX獲取Canal解析後的物件做二次解析,封裝後傳送至下游資料來源
三、Binlog到Hive實戰
1、環境準備:確認資料庫開啟了Binlog
show variables like '%log_bin%';
2、建表
CREATE TABLE `kudu` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`user_id` bigint(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2764446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 數棧技術分享:詳解FlinkX中的斷點續傳和實時採集斷點
- 超級乾貨:帶你全面瞭解低程式碼!
- 一文帶你瞭解求職面試那些名詞(乾貨)求職面試
- 遊戲技能該如何設計?這二篇乾貨帶你瞭解遊戲
- 實戰乾貨|Spark 在袋鼠雲數棧的深度探索與實踐Spark
- 甲方安全建設之日誌採集實操乾貨
- 【純乾貨分享】網路安全這些專業“術語”你瞭解嗎?
- 雲集技術學社|帶你瞭解DevOps技術原理dev
- 帶你快速瞭解 MongoDB 分散式叢集MongoDB分散式
- 帶你瞭解 Angular 與 Angular JSAngularJS
- 乾貨|一文帶你瞭解 Apache Hive2.x 的四大特性ApacheHive
- 一文帶你瞭解數棧百萬級分散式排程引擎DAGScheduleX分散式
- 數棧產品分享:乾貨解讀資料中臺產品「模組化」設計思路
- 開場 Live,分享點乾貨——「深入瞭解 Node.js 包與模組機制」Node.js
- 【乾貨】MySQL底層架構設計,你瞭解多少?MySql架構
- 乾貨分享|使用 Istio 實現灰度釋出
- 乾貨!一分鐘帶你瞭解如何測試海外HTTP代理的ip可用率!HTTP
- 帶你瞭解redux與react-reduxReduxReact
- 帶你瞭解webpackWeb
- 【乾貨!!】十分鐘帶你搞懂 Java AQS 核心設計與實現!!!JavaAQS
- iOS 實時音訊採集與播放Audio Unit使用iOS音訊
- 一文帶你瞭解執行緒池原理執行緒
- 你瞭解實時計算嗎?
- 乾貨分享|Bitset 應用詳解
- 帶你快速瞭解HTMLHTML
- 純乾貨:21天帶你玩轉容器
- [乾貨]谷歌外掛跨域你可以瞭解下谷歌跨域
- 分享乾貨啦!
- 5分鐘帶你瞭解RabbitMQ的(普通/映象)叢集MQ
- 你真的瞭解“SQL”嗎?《SQL優化最佳實踐》作者帶你重新瞭解SQLSQL優化
- 乾貨 | 4步帶你完成私有云盤搭建
- 帶你瞭解極具彈性的Spark架構的原理Spark架構
- 萬字帶你瞭解ChatGLM
- Flutter 螢幕採集實戰分享Flutter
- 好程式設計師Java乾貨分享5分鐘瞭解折半插入排序程式設計師Java排序
- 乾貨分享|袋鼠雲數棧離線開發平臺在小檔案治理上的探索實踐之路
- 乾貨 | 攜程酒店實時數倉架構和案例架構
- 你真的瞭解python嗎?這篇文章帶你快速瞭解!Python