一 Sqoop简介
Sqoop是Hadoop和关系数据库服务器之间传送数据的一种工具。它是用来从关系数据库如:MySQL,Oracle到Hadoop的HDFS,并从Hadoop的文件系统导出数据到关系数据库。
Sqoop:“SQL 到 Hadoop 和 Hadoop 到SQL”。
传统的应用管理系统,也就是与关系型数据库的使用RDBMS应用程序的交互,是产生大数据的来源之一。这样大的数据,由关系数据库生成的,存储在关系数据库结构关系数据库服务器。
当大数据存储器和分析器,如MapReduce, Hive, HBase, Cassandra, Pig等,Hadoop的生态系统等应运而生,它们需要一个工具来用的导入和导出的大数据驻留在其中的关系型数据库服务器进行交互。在这里,Sqoop占据着Hadoop生态系统提供关系数据库服务器和Hadoop HDFS之间的可行的互动。
2 Sqoop工作流程
二 Sqoop安装配置
前提:Hadoop,jdk,hive,hbase等已经安装
在hadoop环境搭建完成后,接下来就是要把sqoop整合进来,使其可以利用hadoop和mysql-connector-java来从MySQL中抽取数据并转存到hdfs上。
1 将得到的sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz拷贝
到/usr/local/yyl文件夹下
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C yyl
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop1.4.6
2 配置SQOOP_HOME环境变量,在/etc/profile中添加和修改如下记录:
export SQOOP_HOME=/usr/local/yyl/sqoop1.4.6/bin
export PATH=$PATH:$SQOOP_HOME
刷新环境变量
source /etc/profile
3 对sqoop进行配置,保证其可以整合到hadoop中:
1)进入到$SQOOP_HOME/conf目录下,复制一份sqoop环境配置脚本sqoop-env-template.sh到当前目录,并重命名为sqoop-env.sh:
cd $SQOOP_HOME/conf
cp sqoop-env-template.sh sqoop-env.sh
2)修改sqoop-env.sh的HADOOP_COMMON_HOME和HADOOP_MAPRED_HOME变量值,使其对应于相应的hadoop文件路径:
#Setpath to where bin/Hadoop is available
export HADOOP_COMMON_HOME=/usr/local/yyl/hadoop-2.6.5
#Setpath to where hadoop-*-core.jar isavailable
export HADOOP_MAPRED_HOME=/usr/local/yyl/hadoop-2.6.5/share/hadoop/mapreduce
export HBASE_HOME=/usr/local/yyl/hbase-1.2.6
export HIVE_HOME=/usr/local/yyl/hive1.2.2
export ZOOKEEPER_HOME=/usr/local/yyl/zookeeper-3.4.6
注:
如果数据读取不涉及hbase和hive,那么相关hbase和hive的配置可以不加;如果集群有独立的zookeeper集群,那么配置zookeeper,反之,不用配置。
3)sqoop需要连接mysql,将mysql-connector-java包和$HADOOP_HOME/share/hadoop/mapreduce/下的所有jar包复制到$SQOOP_HOME/lib目录下:
cp $HIVE_HOME/lib/mysql-connector-java-5.1.38-bin.jar $SQOOP_HOME/lib/
cp -r $HADOOP_HOME/share/hadoop/mapreduce/*.jar $SQOOP_HOME/lib
否则会报错:主类找不到
Warning: /usr/local/yyl/sqoop1.4.6/bin/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/yyl/sqoop1.4.6/bin/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Error: Could not find or load main class org.apache.sqoop.Sqoop
4 验证是否安装成功
sqoop help
sqoop version