师德师风建设好的小学网站,wordpress不同page,使用织梦系统建设网站,做调差问卷的网站Sqoop安装前需要检查之前是否安装了Tez,否则会产生版本或依赖冲突#xff0c;我们需要移除tez-site.xml#xff0c;并将hadoop中的mapred-site.xml配置文件中的mapreduce驱动改回成yarn#xff0c;然后分发到其他节点#xff0c;hive里面配置的tez也要移除#xff0c;然后…Sqoop安装前需要检查之前是否安装了Tez,否则会产生版本或依赖冲突我们需要移除tez-site.xml并将hadoop中的mapred-site.xml配置文件中的mapreduce驱动改回成yarn然后分发到其他节点hive里面配置的tez也要移除然后重启hive元数据 Sqoop的安装
#上传解压
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/soft/#配置环境变量
vim /etc/profileexport SQOOP_HOME/usr/local/soft/sqoop-1.4.7/
export PATH$PATH:$SQOOP_HOME/bin
source /etc/profile# 切换到sqoop配置文件目录
cd /usr/local/soft/sqoop-1.4.7/conf
# 复制配置文件并重命名
cp sqoop-env-template.sh sqoop-env.sh
# vim sqoop-env.sh 编辑配置文件并加入以下内容export HADOOP_COMMON_HOME/usr/local/soft/hadoop-3.1.1
export HADOOP_MAPRED_HOME/usr/local/soft/hadoop-3.1.1
export HIVE_HOME/usr/local/soft/hive-3.1.3
export HIVE_CONF_DIR/usr/local/soft/hive-3.1.3/conf
export HADOOP_CLASSPATH$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
export HBASE_HOME/usr/local/soft/hbase-2.2.7
export ZOOCFGDIR/usr/local/soft/zookeeper-3.8.4/conf
export ZOOKEEPER_HOME/usr/local/soft/zookeeper-3.8.4# 切换到bin目录
cd /usr/local/soft/sqoop-1.4.7/bin
# vim configure-sqoop 修改配置文件注释掉没用的内容就是为了去掉警告信息 注释警告信息 安装成功
sqoop version Sqoop的使用
Sqoop基于MapReduce必须先启动hadoop才能使用
添加Mysql的驱动连接 # 从HIVE中复制MySQL连接驱动到$SQOOP_HOME/lib
cp /usr/local/soft/hive-1.2.1/lib/mysql-connector-java-5.1.49.jar /usr/local/soft/sqoop-1.4.7/lib/# 测试MySQL连通性
sqoop list-databases -connect jdbc:mysql://master:3306?useSSLfalse -username root -password 123456
准备MySQL数据
1、登录MySQL数据库
mysql -u root -p123456;
2、创建student数据库
create database student;
3、切换数据库并导入数据
# mysql shell中执行
use student;
source /root/student.sql;
source /root/score.sql;
4、另外一种导入数据的方式
# linux shell中执行
mysql -u root -p123456 student/root/student.sql
mysql -u root -p123456 student/root/score.sql
5、使用Navicat运行SQL文件 使用navicat导入文件
6、导出MySQL数据库
mysqldump -u root -p123456 数据库名任意一个文件名.sql
7、import 从传统的关系型数据库导入HDFS、HIVE、HBASE...... MySQLToHDFS
编写脚本保存为MySQLToHDFS.conf
import
--connect
jdbc:mysql://master:3306/bigdata31?useSSLfalse
--username
root
--password
123456
--table
students
--m
2
--split-by
id
--target-dir
/data/students_sqoop
--fields-terminated-by
,
执行脚本
sqoop --options-file MySQLToHDFS.conf
注意事项
1、--m 表示指定生成多少个Map任务不是越多越好因为MySQL Server的承载能力有限
2、当指定的Map任务数1那么需要结合--split-by参数指定分割键以确定每个map任务到底读取哪一部分数据最好指定数值型的列最好指定主键或者分布均匀的列避免每个map任务处理的数据量差别过大
3、如果指定的分割键数据分布不均可能导致数据倾斜问题
4、分割的键最好指定数值型的而且字段的类型为int、bigint这样的数值型
5、编写脚本的时候注意例如--username参数参数值不能和参数名同一行
--username root // 错误的// 应该分成两行
--username
root
6、实际上sqoop在读取mysql数据的时候用的是JDBC的方式所以当数据量大的时候效率不是很高
7、sqoop底层通过MapReduce完成数据导入导出只需要Map任务不需要Reduce任务
8、每个Map任务会生成一个文件
MySQLToHive
先会将MySQL的数据导出来并在HDFS上找个目录临时存放默认为/user/用户名/表名
然后再将数据加载到Hive中加载完成后会将临时存放的目录删除
编写脚本并保存为MySQLToHIVE.conf文件
import
--connect
jdbc:mysql://master:3306/bigdata31?useSSLfalse
--username
root
--password
123456
--table
students
--fields-terminated-by
,
--lines-terminated-by
\n
--m
3
--split-by
id
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
default
--hive-table
students_hive
--delete-target-dir
--direct
将HADOOP_CLASSPATH加入环境变量中
vim /etc/profile
# 加入如下内容
export HADOOP_CLASSPATH$HADOOP_HOME/lib:$HIVE_HOME/lib/*# 重新加载环境变量
source /etc/profile
将hive-site.xml放入SQOOP_HOME/conf/
cp /usr/local/soft/hive-3.1.3/conf/hive-site.xml /usr/local/soft/sqoop-1.4.7/conf/
--direct 加上这个参数可以在导出MySQL数据的时候使用MySQL提供的导出工具mysqldump加快导出速度提高效率需要将master上的/usr/bin/mysqldump分发至 node1、node2的/usr/bin目录下 #分发
scp /usr/bin/mysqldump node1:/usr/bin/
scp /usr/bin/mysqldump node2:/usr/bin/
-e参数的使用
import
--connect
jdbc:mysql://master:3306/bigdata31
--username
root
--password
123456
--fields-terminated-by
\t
--lines-terminated-by
\n
--m
2
--split-by
id
--e
select id,name,age,gender,clazz from students where $CONDITIONS
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
default
--hive-table
students_hive1
--target-dir
/data/students_hive1
MySQLToHBase
编写脚本并保存为MySQLToHBase.conf
import
--connect
jdbc:mysql://master:3306/bigdata31?useSSLfalse
--username
root
--password
123456
--table
students
--hbase-table
students_sqoop
--hbase-create-table
--hbase-row-key
id
--m
1
--column-family
info 在HBase中创建student表
create students_sqoop,info
执行脚本
sqoop --options-file MySQLToHBase.conf
export
HDFSToMySQL
编写脚本并保存为HDFSToMySQL.conf
export
--connect
jdbc:mysql://master:3306/bigdata31?useSSLfalse
--username
root
--password
123456
--table
students_sqoop
-m
1
--columns
id,name,age,gender,clazz
--export-dir
/data/students_sqoop
--fields-terminated-by
,
先清空MySQL student表中的数据不然会造成主键冲突
执行脚本
sqoop --options-file HDFSToMySQL.conf
查看sqoop help
# 查看import的详细帮助
sqoop import --help
sqoop help21/04/26 15:50:36 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
usage: sqoop COMMAND [ARGS]Available commands:codegen Generate code to interact with database recordscreate-hive-table Import a table definition into Hiveeval Evaluate a SQL statement and display the resultsexport Export an HDFS directory to a database tablehelp List available commandsimport Import a table from a database to HDFSimport-all-tables Import tables from a database to HDFSimport-mainframe Import datasets from a mainframe server to HDFSjob Work with saved jobslist-databases List available databases on a serverlist-tables List available tables in a databasemerge Merge results of incremental importsmetastore Run a standalone Sqoop metastoreversion Display version informationSee sqoop help COMMAND for information on a specific command.