简介:
Sqoop,用来在关系型数据库与hadoop之间进行数据的导入导出,将数据从数据库中导入到hdfs中进行数据处理,是一种转换工具。
Sqoop分为两大版本sqoop1和sqoop2,两者完全不兼容,1.4.x为sqoop1,1.99.x为sqoop2。
在网址http://sqoop.apache.org/可以下载sqoop,sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz这种的是原生的sqoop。
安装:我安装的是sqoop1,连接mysql
1:拷贝安装包到linux下并解压。
tar-zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
2:进入解压后的目录conf,在此目录下有一个sqoop-env-template.sh文件将其改名为sqoop-env.sh然后编辑此文件在文件中指定hadoop的安装路径信息。
目录:/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/conf
执行:mvsqoop-env-template.sh sqoop-env.sh
(注意名字别改错了,我改错了半天搞不定)
exportHADOOP_COMMON_HOME=/usr/local/hadoop-2.6.0
exportHADOOP_MAPRED_HOME=/usr/local/hadoop-2.6.0
3:配置环境变量
vi /etc/profile
exportPATH=.:$JAVA_HOME/bin:/usr/local/hadoop-2.6.0/bin:/usr/local/hadoop-2.6.0/sbin:/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin:$PATH
source/etc/profile
4:jdk版本必须是1.6以上
java –version
java version"1.7.0_79"
5:lib目录下放置对应数据库的驱动包,本例中我连接mysql,建议使用版本为mysql-connector-java-5.1.33-bin.jar
/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib
6:sqoop-1.4.6.jar
安装原生的sqoop时,执行sqoop时会去hadoop目录下找orgorg.apache.sqoop.Sqoop包没有的话会报错,所以我们需要将sqoop-1.4.6.jar放到hadoop的lib包中。
当我们解压缩sqoop的安装包后sqoop-1.4.6.jar就在跟目录下与conf平级,将它拷贝到
/usr/local/hadoop-2.6.0/share/hadoop/common/lib目录下。
将驱动包mysql-connector-java-5.1.33-bin.jar也放到这个目录中
7:检验安装是否成功
执行sqoop help,看到如下显示就好了,这里显示的是所有的命令。
Availablecommands:
codegen Generate code to interact withdatabase records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement anddisplay the results
export Export an HDFS directory to adatabase table
help List available commands
import Import a table from a database toHDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server toHDFS
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 incrementalimports
metastore Run a standalone Sqoop metastore
version Display version information
8:"Host'THINK-THINK' is not allowed to connect to this MySQL server
我本地连接时报错,解决方案需要开启MySQL的远程帐号
mysql>grantall privileges on *.* to root@'192.168.172.1' identified by 'password’;
mysql>flush privileges;
*.*代表全部数据库的全部表授权,也可以写成test_db.*
all privileges代表全部权限,也可以insert,update,delete,create,drop 等
允许 root 用户在 192.168.172.1这个 IP 进行远程登陆,并设置 root 用户的密码为password。