簡單介紹
Sqoop是一個用來將Hadoop(Hive、HBase)和關係型數據庫中的數據相互轉移的工具,可以將一個關係型數據庫(例如:MySQL ,Oracle ,Postgres等)中的數據導入到Hadoop的HDFS中,也可以將HDFS的數據導入到關係型數據庫中。
下載解壓
下載所需版本的Sqoop ,這裏我下載的官網的Sqoop 。下載地址爲:https://mirror.bit.edu.cn/apache/sqoop/1.4.7
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
配置環境變量
vim /etc/profile
添加環境變量:
export SQOOP_HOME=/usr/app/sqoop-1.4.6-cdh5.15.2
export PATH=$SQOOP_HOME/bin:$PATH
使得配置的環境變量立即生效:
source /etc/profile
修改配置
進入安裝目錄下的conf/
目錄,拷貝Sqoop的環境配置模板sqoop-env.sh.template
/opt/app/sqoop-1.4.7.bin__hadoop-2.6.0/conf
cp sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh,內容如下
加入數據庫驅動
將MySQL驅動包拷貝到Sqoop安裝目錄的lib目錄下,沒有驅動的話可以用我這個 https://pan.baidu.com/s/17XoE_akSfnTOCgxwXSZC3w 提取碼: khes
/opt/app/sqoop-1.4.7.bin__hadoop-2.6.0/lib
mysql-connector-java-5.1.39.jar(驅動)
驗證
由於之前已經將sqoop的bin目錄配置到環境變量,在任意目錄下
sqoop version
出現對應的版本信息則代表配置成功:
但是明顯可以看出兩個Warning
警告是因爲我們本身就沒有用到HCatalog
和Accumulo
,忽略即可。Sqoop在啓動時會去檢查環境變量中是否有配置這些軟件,如果想去除這些警告,可以修改bin/configure-sqoop
,註釋掉不必要的檢查。
vim /opt/app/sqoop-1.4.7.bin__hadoop-2.6.0/bin/configure-sqoop
註釋掉這些不必要的檢查。
# Check: If we can't find our dependencies, give up here.
if [ ! -d "${HADOOP_COMMON_HOME}" ]; then
echo "Error: $HADOOP_COMMON_HOME does not exist!"
echo 'Please set $HADOOP_COMMON_HOME to the root of your Hadoop installation.'
exit 1
fi
if [ ! -d "${HADOOP_MAPRED_HOME}" ]; then
echo "Error: $HADOOP_MAPRED_HOME does not exist!"
echo 'Please set $HADOOP_MAPRED_HOME to the root of your Hadoop MapReduce installation.'
exit 1
fi
## Moved to be a runtime check in sqoop.
if [ ! -d "${HBASE_HOME}" ]; then
echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
echo 'Please set $HBASE_HOME to the root of your HBase installation.'
fi
## Moved to be a runtime check in sqoop.
if [ ! -d "${HCAT_HOME}" ]; then
echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
fi
if [ ! -d "${ACCUMULO_HOME}" ]; then
echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
fi
if [ ! -d "${ZOOKEEPER_HOME}" ]; then
echo "Warning: $ZOOKEEPER_HOME does not exist! Accumulo imports will fail."
echo 'Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.'
fi