datax 导入数据中文乱码_浅谈数据同步之道
數(shù)據(jù)同步,顧名思義就是不同系統(tǒng)的數(shù)據(jù)進(jìn)行同步處理。而業(yè)務(wù)系統(tǒng)所涉及的數(shù)據(jù)庫同步是重中之重,雖然大部分?jǐn)?shù)據(jù)庫都提供了導(dǎo)入導(dǎo)出的工具,但是數(shù)據(jù)存儲(chǔ)到各個(gè)地方,Hive、Hbase、MySQL、Oracle 等各種各樣的不同數(shù)據(jù)庫,然而要把數(shù)據(jù)同步到指定不同類型的存儲(chǔ)庫是非常麻煩。那該如何統(tǒng)一實(shí)現(xiàn)數(shù)據(jù)源同步?下面介紹幾種常用的同步的方案和工具。
1、Sqoop
Apache Sqoop 是一種工具,用于在 Apache Hadoop 和外部數(shù)據(jù)存儲(chǔ)(如關(guān)系數(shù)據(jù)庫,企業(yè)數(shù)據(jù)倉庫)之間高效傳輸批量數(shù)據(jù)。
Sqoop 用于將數(shù)據(jù)從外部數(shù)據(jù)存儲(chǔ)導(dǎo)入 Hadoop Hdfs 或 Hive 和 HBase 等相關(guān) Hadoop 生態(tài)系統(tǒng)。同樣,Sqoop 還可用于從 Hadoop 或其生態(tài)系統(tǒng)中提取數(shù)據(jù),并將其導(dǎo)出到外部數(shù)據(jù)存儲(chǔ)區(qū),如關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫。Sqoop 適用于 Oracle,MySQL,Postgres 等關(guān)系數(shù)據(jù)庫。
Sqoop 數(shù)據(jù)導(dǎo)入命令示例如下。
sqoop import -connect jdbc:mysql://localhost:3306/sqoop -username root -password 123456 -table emp_etl -m 3 -hive-import -create-hive-table -hive-table emp_mysql通過命令行界面執(zhí)行 Sqoop 命令。也可以使用 Java API 訪問 Sqoop。Sqoop 解析命令行生成 MapRedure 并只啟動(dòng) Hadoop Map 作業(yè)以導(dǎo)入或?qū)С鰯?shù)據(jù),因?yàn)橹挥性谛枰酆蠒r(shí)才需要 Reduce 階段。Sqoop 只是導(dǎo)入和導(dǎo)出數(shù)據(jù), 它沒有做任何聚合。
映射作業(yè)根據(jù)用戶定義的數(shù)量(-m 3)啟動(dòng)多個(gè)映射器。對(duì)于 Sqoop 導(dǎo)入,將為每個(gè)映射器任務(wù)分配一部分要導(dǎo)入的數(shù)據(jù)。Sqoop 在映射器之間平均分配輸入數(shù)據(jù)以獲得高性能。然后,每個(gè)映射器使用 JDBC 創(chuàng)建與數(shù)據(jù)庫的連接,并獲取由 Sqoop 分配的數(shù)據(jù)部分,將其寫入 HDFS 或 Hive 或 HBase。
2、Datax
DataX 是阿里開發(fā)的一個(gè)異構(gòu)數(shù)據(jù)源離線同步工具,致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。
DataX 本身作為離線數(shù)據(jù)同步框架,采用 Framework + plugin 架構(gòu)構(gòu)建。將數(shù)據(jù)源讀取和寫入抽象成為 Reader/Writer 插件,納入到整個(gè)同步框架中。
Reader:為數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)發(fā)送給 Framework。
Writer: 為數(shù)據(jù)寫入模塊,負(fù)責(zé)不斷向 Framework 取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端。
Framework:用于連 接reader 和writer ,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖,流控,并發(fā),數(shù)據(jù)轉(zhuǎn)換等核心技術(shù)問題。
Datax 使用比較簡單,只下載 Datax 解壓,配置需要運(yùn)行環(huán)境,通過命令運(yùn)行寫好的 json 文件既可以執(zhí)行任務(wù),另外可以通過二次開發(fā)插件支持新的數(shù)據(jù)源類型,易拓展。
{"job": {"content": [{"reader": {"name": "xxxreader",...},"writer": {"name": "xxxwriter",...}}],...} }3、Canal
無論是 Sqoop 還是 Datax 都是屬于離線同步, 不支持實(shí)時(shí)的數(shù)據(jù)抽取。這里說個(gè) MySQL 數(shù)據(jù)庫的同步組件
Canal,非常便捷地將 MySQL 中的數(shù)據(jù)抽取到任意目標(biāo)存儲(chǔ)中。
原理就是 Canal 偽裝成 MySQL 從節(jié)點(diǎn),讀取 MySQL 的 binlog(一個(gè)二進(jìn)制格式的文件,它記錄了數(shù)據(jù)庫的所有改變,并以二進(jìn)制的形式保存在磁盤中。),生成消息,客戶端訂閱這些數(shù)據(jù)變更消息,處理并存儲(chǔ)。只要開發(fā)一個(gè) Canal 客戶端就可以解析出 MySQL 的操作,再將這些數(shù)據(jù)發(fā)送到大數(shù)據(jù)流計(jì)算處理引擎,即可以實(shí)現(xiàn)對(duì) MySQL 實(shí)時(shí)處理。
4、kettle
Kettle 是一款開源的 ETL 工具,實(shí)現(xiàn)對(duì)各種數(shù)據(jù)源讀取,操作和寫入數(shù)據(jù),Kettle 無需安裝解壓即可使用,可通過客戶端進(jìn)行配置和執(zhí)行作業(yè)。Kettle 中有兩種腳本文件,transformation 和 job,transformation 完成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job 則完成整個(gè)工作流的控制。
5、Informatica PowerCenter
Informatica PowerCenter 是世界級(jí)的 企業(yè)數(shù)據(jù)集成平臺(tái),從異構(gòu)的已有系統(tǒng)和數(shù)據(jù)源中抽取數(shù)據(jù),用來構(gòu)建和管理企業(yè)的數(shù)據(jù)倉庫,從而幫助企業(yè)做出快速、正確的決策。此產(chǎn)品為滿足企業(yè)級(jí)要求而設(shè)計(jì),可以提供企業(yè)部門的數(shù)據(jù)和非關(guān)系型數(shù)據(jù)之間的集成,如XML,網(wǎng)站日志,關(guān)系型數(shù)據(jù),主機(jī)和遺留系統(tǒng)等數(shù)據(jù)源。
小結(jié)
那我們?cè)撊绾芜x擇合適同步的工具。大數(shù)據(jù)平臺(tái)是與 Hadoop 集群相掛鉤,在離線同步一般選擇 Sqoop,Sqoop 從一開始就是為大數(shù)據(jù)平臺(tái)的數(shù)據(jù)采集業(yè)務(wù)服務(wù),而且作為 Apache 頂級(jí)的項(xiàng)目,Sqoop 比起 Datax 更加可靠,如果涉及阿里自身的數(shù)據(jù)庫系列選擇 Datax 是一個(gè)不錯(cuò)的選擇。在實(shí)時(shí)同步數(shù)據(jù),一般采用 Kafka 作為中間組件,跟 Canal 結(jié)合實(shí)現(xiàn) MySQL 到 Hive 增量數(shù)據(jù)同步。kettle 和 Informatica PowerCenter 一般在建設(shè)數(shù)倉中使用,通過客戶端配置 ETL 任務(wù)定制。
總結(jié)
以上是生活随笔為你收集整理的datax 导入数据中文乱码_浅谈数据同步之道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2万人同时访问 nodejs_面向前端工
- 下一篇: 是什么故障码_大众途观报P2187、P0