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