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
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
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 自動建立並載入。
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
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
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 |
--direct 參數繞過 JDBC,利用 mysqldump/mysqlimport 提速 3-5 倍。--split-by 指定高基數列(主鍵最佳),避免數據傾斜導致 Mapper 耗時不均。--compress --compression-codec snappy 減少網絡 I/O。-m 設置為從庫核心數 1-2 倍,避免壓垮源庫。FLUSH TABLES WITH READ LOCK 或從庫 STOP SLAVE 確保時間點一致。