如下图所示:[size=0.9em]Sqoop收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器 (Task Translator)
将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数
据的拷贝。Sqoop注意- 把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中。
- 1.4 为sqoop1, 1.9 为sqoop2 ,sqoop1与sqoop2是不兼容的。
下载安装sqoop download说明:sqoop对应hadoop的版本要求不大,hadoop2.x与hadoop3.x都可以使用
wget http://mirror.bit.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.tar.gz
tar -zxvf sqoop-1.4.7.tar.gz
mv sqoop-1.4.7.tar.gz sqoop修改配置cd sqoop/conf/
cp sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
#添加
export HADOOP_COMMON_HOME=/server/hadoop
export HADOOP_MAPRED_HOME=/server/hadoop
export HIVE_HOME=/server/hive
export ZOOCFGDIR=/server/hive/hcatalog
vi /opt/apps/sqoop/bin/configure-sqoop
## 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
# Add HCatalog to dependency list
#if [ -e "${HCAT_HOME}/bin/hcat" ]; then
# TMP_SQOOP_CLASSPATH=${SQOOP_CLASSPATH}:`${HCAT_HOME}/bin/hcat -classpath`
# if [ -z "${HIVE_CONF_DIR}" ]; then
# TMP_SQOOP_CLASSPATH=${TMP_SQOOP_CLASSPATH}:${HIVE_CONF_DIR}
# fi
# SQOOP_CLASSPATH=${TMP_SQOOP_CLASSPATH}
#fi
# Add Accumulo to dependency list
#if [ -e "$ACCUMULO_HOME/bin/accumulo" ]; then
# for jn in `$ACCUMULO_HOME/bin/accumulo classpath | grep file:.*accumulo.*jar | cut -d':' -f2`; do
# SQOOP_CLASSPATH=$SQOOP_CLASSPATH:$jn
# done
# for jn in `$ACCUMULO_HOME/bin/accumulo classpath | grep file:.*zookeeper.*jar | cut -d':' -f2`; do
# SQOOP_CLASSPATH=$SQOOP_CLASSPATH:$jn
# done
#fi
添加驱动驱动下载地址将驱动包添加到lib/目录下
#没有mysql驱动,安装sql驱动
wget -P /opt/apps/sqoop/lib/ http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40.jar
#建议hadoop集群的mysql驱动统一,所以这里使用的是之前安装的hive驱动
ln -s /server/hive/lib/mysql-connector-java-8.0.17.jar /server/sqoop/lib/mysql-connector-java.jar配置环境变量(可选)vi /etc/profile
export SQOOP_HOME=/server/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
使用介绍[root@node1 bin]# sqoop help
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/server/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/lib/zookeeper/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2019-10-13 02:59:12,286 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
See 'sqoop help COMMAND' for information on a specific command.
由上可知命令格式:sqoop COMMAND [ARGS]参数介绍将mysql中的hive数据库中的consumer表通过sqoop导入到HDFS中