首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Hadoop 生態中 Sqoop 與 MySQL 數據雙向同步實戰教程

     編輯:MySQL 資料庫相關知識

Sqoop 是 Hadoop 與關係型數據庫之間高效傳輸數據的標準工具,基於 MapReduce 並行化導入導出。本文記錄 CDH3 環境下 Sqoop 1.2.0 安裝配置、MySQL 連接驗證、Hive 導入、HDFS 導出、增量同步的完整操作流。

安裝部署

# 解壓並補全依賴
tar zxf sqoop-1.2.0-CDH3B4.tar.gz
cp mysql-connector-java-5.1.10-bin.jar sqoop-1.2.0-CDH3B4/lib/
cp hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar sqoop-1.2.0-CDH3B4/lib/
chown -R hadoop:hadoop sqoop-1.2.0-CDH3B4
mv sqoop-1.2.0-CDH3B4 /home/hadoop/

# 修改 configure-sqoop 註釋 HBase/ZooKeeper 檢查
vi /home/hadoop/sqoop-1.2.0-CDH3B4/bin/configure-sqoop
# 註釋 HBASE_HOME/ZOOKEEPER_HOME 檢查塊

# 環境變量
echo 'export HADOOP_HOME=/home/hadoop/hadoop-0.20.2' >> ~/.bash_profile
echo 'export PATH=$HADOOP_HOME/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile

核心命令驗證

1. 列出數據庫/表

sqoop list-databases --connect jdbc:mysql://192.168.1.152:3306/ --username sqoop --password sqoop
sqoop list-tables --connect jdbc:mysql://192.168.1.152:3306/sqoop --username sqoop --password sqoop

2. MySQL → Hive 全量導入

sqoop import \
  --connect jdbc:mysql://192.168.1.152:3306/sqoop \
  --username sqoop --password sqoop \
  --table test \
  --hive-import -m 1

日志顯示 Retrieved 65536 records,Hive 表 default.test 自動建立並載入。

3. Hive → MySQL 導出(預建目標表)

sqoop export \
  --connect jdbc:mysql://localhost:3306/zxtest \
  --username root --password root \
  --table hive_test \
  --export-dir /user/hive/warehouse/new_test_partition/dt=2012-03-05

4. MySQL → HDFS 文本導入

sqoop import \
  --connect jdbc:mysql://10.28.168.109:3306/compression \
  --username=hadoop --password=123456 \
  --table HADOOP_USER_INFO -m 1 \
  --target-dir /user/test

5. 增量導入(追加模式)

sqoop import \
  --connect jdbc:mysql://10.28.168.109:3306/compression \
  --username=hadoop --password=123456 \
  --table HADOOP_USER_INFO -m 1 \
  --target-dir /user/test \
  --check-column id --incremental append --last-value 3

常用參數分類速查

類別核心參數
連接通用--connect --username --password -P(密碼交互式)
導入控制--table --where --columns --split-by -m (mapper數)
Hive 整合--hive-import --hive-table --hive-partition-key --hive-partition-value
增量同步--incremental append|lastmodified --check-column --last-value
導出控制--export-dir --input-fields-terminated-by --update-key --update-mode allowinsert

生產環境優化建議

  1. 直連通道:MySQL 專用 --direct 參數繞過 JDBC,利用 mysqldump/mysqlimport 提速 3-5 倍。
  2. 分片策略:--split-by 指定高基數列(主鍵最佳),避免數據傾斜導致 Mapper 耗時不均。
  3. 壓縮傳輸:--compress --compression-codec snappy 減少網絡 I/O。
  4. 並行度:-m 設置為從庫核心數 1-2 倍,避免壓垮源庫。
  5. 事務一致性:導出前 FLUSH TABLES WITH READ LOCK 或從庫 STOP SLAVE 確保時間點一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved