MySQL推出Applier,可實時復制數據到Hadoop
MySQL 復制操作可以將數據從一個 MySQL 服務器(主)復制到其他的一個或多個 MySQL 服務器(從)。試想一下,如果從服務器不再局限為一個 MySQL 服務器,而是其他任何數據庫服務器或平臺,并且復制事件要求實時進行,是否可以實現呢?
MySQL 團隊最新推出的 MySQL Applier for Hadoop(以下簡稱 Hadoop Applier)旨在解決這一問題。
用途
例如,復制事件中的從服務器可能是一個數據倉庫系統,如 Apache Hive,它使用 Hadoop 分布式文件系統(HDFS)作為數據存儲區。如果你有一個與 HDFS 相關的 Hive 元存儲,Hadoop Applier 就可以實時填充 Hive 數據表。數據是從 MySQL 中以文本文件形式導出到 HDFS,然后再填充到 Hive。
操作很簡單,只需在 Hive 運行 HiveQL 語句'CREATE TABLE',定義表的結構與 MySQL 相似,然后運行 Hadoop Applier 即可開始實時復制數據。
優勢
在 Hadoop Applier 之前,還沒有任何工具可以執行實時傳輸。之前的解決方案是通過 Apache Sqoop 導出數據到 HDFS,盡管可以批量傳輸,但是需要經常將結果重復導入以保持數據更新。在進行大量數據傳輸時,其他查詢會變得很慢。且在數據庫較大的情況下,如果只進 行了一點更改,Sqoop 可能也需要較長時間來加載。
而 Hadoop Applier 則會讀取二進制日志,只應用 MySQL 服務器上發生的事件,并插入數據,不需要批量傳輸,操作更快,因此并不影響其他查詢的執行速度。
實現
Applier 使用一個由 libhdfs(用于操作 HDFS 中文件的C庫)提供的 API。實時導入的過程如下圖所示:
數據庫被映射作為一個單獨的目錄,它們的表被映射作為子目錄和一個 Hive 數據倉庫目錄。插入到每個表中的數據被寫入文本文件(命名如 datafile1.txt),數據以逗號或其他符號分割(可通過命令行進行配置)。
下載地址:mysql-hadoop-applier-0.1.0-alpha.tar.gz(alpha 版本,不可用于生產環境)