MySQL添加Hadoop數(shù)據(jù)實(shí)時(shí)復(fù)制功能
TT中國(guó) 發(fā)表于:13年05月09日 13:48 [轉(zhuǎn)載] 網(wǎng)界網(wǎng)
MySQL復(fù)制操作可以將數(shù)據(jù)從一個(gè)MySQL服務(wù)器(主)復(fù)制到其他的一個(gè)或多個(gè)MySQL服務(wù)器(從)。試想一下,如果從服務(wù)器不再局限為一個(gè)MySQL服務(wù)器,而是其他任何數(shù)據(jù)庫(kù)服務(wù)器或平臺(tái),并且復(fù)制事件要求實(shí)時(shí)進(jìn)行,是否可以實(shí)現(xiàn)呢?
MySQL團(tuán)隊(duì)最新推出的 MySQL Applier for Hadoop(以下簡(jiǎn)稱Hadoop Applier)旨在解決這一問題。
用途
例如,復(fù)制事件中的從服務(wù)器可能是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng),如Apache Hive,它使用Hadoop分布式文件系統(tǒng)(HDFS)作為數(shù)據(jù)存儲(chǔ)區(qū)。如果你有一個(gè)與HDFS相關(guān)的Hive元存儲(chǔ),Hadoop Applier就可以實(shí)時(shí)填充Hive數(shù)據(jù)表。數(shù)據(jù)是從MySQL中以文本文件形式導(dǎo)出到HDFS,然后再填充到Hive。
操作很簡(jiǎn)單,只需在Hive運(yùn)行HiveQL語(yǔ)句'CREATE TABLE',定義表的結(jié)構(gòu)與MySQL相似,然后運(yùn)行Hadoop Applier即可開始實(shí)時(shí)復(fù)制數(shù)據(jù)。
優(yōu)勢(shì)
在Hadoop Applier之前,還沒有任何工具可以執(zhí)行實(shí)時(shí)傳輸。之前的解決方案是通過(guò)Apache Sqoop導(dǎo)出數(shù)據(jù)到HDFS,盡管可以批量傳輸,但是需要經(jīng)常將結(jié)果重復(fù)導(dǎo)入以保持?jǐn)?shù)據(jù)更新。在進(jìn)行大量數(shù)據(jù)傳輸時(shí),其他查詢會(huì)變得很慢。且在數(shù)據(jù)庫(kù)較大的情況下,如果只進(jìn)行了一點(diǎn)更改,Sqoop可能也需要較長(zhǎng)時(shí)間來(lái)加載。
而Hadoop Applier則會(huì)讀取二進(jìn)制日志,只應(yīng)用MySQL服務(wù)器上發(fā)生的事件,并插入數(shù)據(jù),不需要批量傳輸,操作更快,因此并不影響其他查詢的執(zhí)行速度。
實(shí)現(xiàn)
Applier使用一個(gè)由libhdfs(用于操作HDFS中文件的C庫(kù))提供的API。實(shí)時(shí)導(dǎo)入的過(guò)程如下圖所示:
數(shù)據(jù)庫(kù)被映射作為一個(gè)單獨(dú)的目錄,它們的表被映射作為子目錄和一個(gè)Hive數(shù)據(jù)倉(cāng)庫(kù)目錄。插入到每個(gè)表中的數(shù)據(jù)被寫入文本文件(命名如datafile1.txt),數(shù)據(jù)以逗號(hào)或其他符號(hào)分割(可通過(guò)命令行進(jìn)行配置)。
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.