【大數據開發工程師】面試——Sqoop、Canal、Maxwell


sqoop主要用來做離線任務,每天定時執行腳本。

canal和maxwell主要用來做實時任務或拉鏈表,實時監控表的變化。

Sqoop

項目經驗

Hive中的Null在底層是以“\N”來存儲,而MySQL中的Null在底層就是Null,為了保證數據兩端的一致性。在導出數據時采用--input-null-string和--input-null-non-string兩個參數。導入數據時采用--null-string和--null-non-string。

canal

原理:偽裝成mysql master的從機。拷貝binlog的內容到本機。

MySQL主從復制過程

  • Master主庫將改變記錄,寫到二進制日志(binary log)中 
  • Slave從庫向mysql master發送dump協議,將master主庫的binary log events拷貝到它的中繼日志(relay log);
  • Slave從庫讀取並重做中繼日志中的事件,將改變的數據同步到自己的數據庫。

maxwell

抓取msql變化的原理也是基於binlog,但是它只有一個server把數據發送到消息隊列或redis。

 Maxwell和canal工具對比

  • Maxwell沒有canal那種server+client模式,只有一個server把數據發送到消息隊列或redis。如果需要多個實例,通過指定不同配置文件啟動多個進程。
  • Maxwell有一個亮點功能,就是canal只能抓取最新數據,對已存在的歷史數據沒有辦法處理。而Maxwell有一個bootstrap功能,可以直接引導出完整的歷史數據用於初始化,非常好用。
  • Maxwell不能直接支持HA,但是它支持斷點還原,即錯誤解決后重啟繼續上次點兒讀取數據。
  • Maxwell只支持json格式,而Canal如果用Server+client模式的話,可以自定義格式。
  • Maxwell比Canal更加輕量級。maxwell記錄的每一行數據是一個SQL命令引起的一行變化,而canal記錄的每一行數據是一個SQL命令引起的一個表的所有變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM