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