sqoop安装以及使用(保会)

 sqoop安装及使用

1.上传并解压

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

创建软连接

Ln -s sqoop............ sqoop

2.修改配置文件

1)切换到sqoop配置文件目录

cd /home/hadoop/app/sqoop/conf

2) 复制配置文件并重命名

cp sqoop-env-template.sh sqoop-env.sh

3) vim sqoop-env.sh 编辑配置文件,并加入以下内容(以下是我hadoop,zookeeper,hbase,hive安装路径)

export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop

export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop/share/hadoop/mapreduce

export HBASE_HOME=/home/hadoop/app/hbase

export HIVE_HOME=/home/hadoop/app/hive

export ZOOCFGDIR=/home/hadoop/app/zookeeper/conf

export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper

4) 切换到bin目录

cd /home/hadoop/app/qoopbin

# vim configure-sqoop 修改配置文件,注释掉没用的内容(就是为了去掉警告信息)

sqoop安装以及使用(保会)_第1张图片

3.修改环境变量

vim ~/.bashrc

# 将sqoop的目录加入环境变量

1)添加mysql连接驱动

sqoop可能会用到MySQL导入到hdfs上,就需要myssql驱动

cp mysql-connector-java-5.1.49.jar /home/hadoop/app/sqoop/lib/

常见错误

错误:如何寻找sqoop-1.4.6.jar文件包,解决找不到或无法加载主类org.apache.sqoop.sqoop的问题

解决方案:

1.sqoop-1.4.x.tar.gz在1.4.5以上的安装包已经没有了这个jar包,必须下载sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz这个安装包。

2.然后解压这个安装包,打开安装包取出sqoop-1.4.6.jar放在hadoop的lib下,或者放到share/hadoop/yarn下.

3.再次导入数据,查看报错是否存在,一般情况都会解决。

4.测试检查连通性

1)测试

sqoop version

sqoop安装以及使用(保会)_第2张图片

2)测试MySQL连通性

sqoop list-databases -connect jdbc:mysql://master:3306/ -username root -password 123456

5.脚本

再执行脚本之前打开zookeeperhdfsyarn  sqooo用的就是mapreduce

  1.  MysqlToHdfs

import

--connect

jdbc:mysql://master:3306/student

--username

root

--password

123456

--table

student

--m

2

--split-by

age

--target-dir

/sqoop/data/student

--fields-terminated-by

','

执行脚本:

sqoop --options-file MySQLToHDFS.conf

注意事项:

1、--m 表示指定生成多少个Map任务,不是越多越好,因为MySQL Server的承载能力有限

2、当指定的Map任务数>1,那么需要结合--split-by参数,指定分割键,以确定每个map任务到底读取哪一部分数据,最好指定数值型的列

3、如果指定的分割键数据分布不均,可能导致数据倾斜问题

4、编写脚本的时候,注意:例如:--username参数,参数值不能和参数名同一行

2)MysqlToHive

import

--connect

jdbc:mysql://master:3306/student

--username

root

--password

123456

--table

score

--fields-terminated-by

"\t"

--lines-terminated-by

"\n"

--m

2

--split-by

student_id

--hive-import

--hive-overwrite

--create-hive-table

--hive-database

testsqoop

--hive-table

Score

执行脚本:

sqoop --options-file 脚本名

注意:--direct

加上这个参数,可以在导出MySQL数据的时候,使用MySQL提供的导出工具mysqldump,加快导出速度,提高效率

注意:在hive中不能建表

问题:Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException

解决:Hbase和hive的libthrift版本分别是libthrift-0.8.0.jar,libthrift-0.9.0.jar

copy libthrift-0.9.0.jar 到sqoop/lib目录下,问题解决。

再次支持导入语句的时候出现目录已经存在的问题

 ERROR security.UserGroupInformation: PriviledgedActionException as:jifeng cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory project already exists

14/09/08 01:28:56 ERROR tool.ImportTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory project already exists

删除目录问题解决:

[hadoop@master ~]$ hadoop dfs -rmr /user/hadoop/score

Warning: $HADOOP_HOME is deprecated.

Deleted hdfs://jifeng01:9000/user/jifeng/project

3)MysqlToHbase

import

--connect

jdbc:mysql://master:3306/student

--username

root

--password

123456

--table

student

--hbase-table

student

--hbase-row-key

id

--m

1

--column-family

cf1

注意:在HBase中创建student表

create 'student','cf1'

执行脚本:

sqoop --options-file 脚本名

  1. HDFSToMysql

export

--connect

jdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=UTF-8

--username

root

--password

123456

-m

1

--columns

id,name,age,gender,clazz

--export-dir

/sqoop/data/student/

--fields-terminated-by

','

--table

Student

注意:先清空MySQL student表中的数据,不然会造成主键冲突

执行脚本:

sqoop --options-file 脚本名

你可能感兴趣的:(hadoop,hdfs,mysql)