Kafka在行動:7步實現從RDBMS到Hadoop的實時流傳輸
對于尋找方法快速吸收數據到Hadoop數據池的企業, Kafka是一個偉大的選擇。Kafka是什么? 它是一個分布式,可擴展的可靠消息系統,把采取發布-訂閱模型的應用程序/數據流融為一體。 這是Hadoop的技術堆棧中的關鍵部分,支持實時數據分析或物聯網數據貨幣化。
本文目標讀者是技術人員。 繼續讀,我會圖解Kafka如何從關系數據庫管理系統(RDBMS)里流輸數據到Hive, 這可以提供一個實時分析使用案例。 為了參考方便,本文使用的組件版本是Hive 1.2.1,Flume 1.6和Kafka 0.9。
如果你想看一下Kafka是什么和其用途的概述, 看看我 在Datafloq 上發布的一篇早期博客。
Kafka用武之地:整體解決方案架構
下圖顯示了在整體解決方案架構中,RDBMS的業務數據傳遞到目標 Hive 表格結合了 Kafka , Flume和Hive交易功能。
7步實時流傳輸到Hadoop
現在深入到解決方案的詳細信息,我會告訴你如何簡單幾步實時流輸數據到Hadoop。
1. 從關系數據庫管理系統(RDBMS)提取數據
所有關系數據庫都有一個記錄最近交易的日志文件。 我們的傳輸流解決方案的***步是,在能夠傳到Hadoop的信息格式中獲得這些交易。 講完提取機制得單獨占用一篇博文–所以 如果你想了解更多此過程的信息, 請聯系我們。
2. 建立Kafka Producer
發布消息到Kafka主題的過程被稱為“生產者”。“主題”是Kafka保存的分類消息。 RDBMS的交易將被轉換為Kafka話題。 對于該例,讓我們想一想銷售團隊的數據庫,其中的交易是作為Kafka主題發表的。 建立Kafka生產者需要以下步驟:
3. 設置 Hive
接下來,我們將在Hive中創建一張表,準備接收銷售團隊的數據庫事務。 在這個例子中,我們將創建一個客戶表:
為了讓Hive能夠處理交易, 配置中需要以下設置:
hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.dbtxnmanager
4.設置Flume Agent,從Kafka到Hive流傳輸
現在讓我們來看看如何創建Flume代理,實現從Kafka主題中獲取數據,發送到Hive表。
遵循步驟來設置環境,然后建立Flume代理:
接著,如下創建一個log4j屬性文件:
然后為Flume代理使用下面的配置文件:
5.開啟Flume代理
使用如下命令開啟Flume代理:
$ /usr/hdp/apache-flume-1.6.0/bin/flume-ng agent -n flumeagent1 -f ~/streamingdemo/flume/conf/flumetohive.conf
6.開啟Kafka Stream
如下示例,是一個模擬交易消息, 在實際系統中需要由源數據庫生成。 例如,以下可能來自重復SQL交易的Oracle數據流,這些交易已提交到數據庫, 也可能來自GoledenGate。
7.接收Hive數據
以上所有完成, 現在從Kafka發送數據, 你會看到,幾秒之內,數據流就發送到Hive表了。