网站设计工具更好的做网站,asp网站用ftp怎么替换图片,网站设计师待遇,做个商城小程序需要多少钱Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测… Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测试数据库连接 七、案例实践Sqoop 迁移Hive出库数据7.1 数据导出Hive 导入 MySQL7.2 数据导出MySQL 导入 Hive 一、Sqoop 概述
Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据迁移。用户可以在Sqoop的帮助下轻松地将RDBMS中的数据导入到Hadoop或者与其相关的系统(如HBase和Hive)中;同时也可以将数据从Hadoop系统导出到RDBMS。因此可以说Sqoop就是一个桥梁连接了RDBMS与Hadoop。 二、Sqoop 优势 Sqoop可以高效地、可控地利用资源可以通过调整任务数来控制任务的并发度。另外它还可以配置数据库的访问时间。 Sqoop可以自动地完成数据库与Hadoop系统中数据类型的映射与转换 Sqoop支持多种数据库比如MySQL、0racle和PostgreSQL等数据库。
三、Sqoop 的架构与工作机制
客户端提交脚本调用Map Task 将关系数据库导入到 Hadoop 平台的HDFS/HBase/Hive同时也可以将 Hadoop 平台的HDFS/HBase/Hive数据通过 Map Task 导入到 关系数据库中。
四、Sqoop Import 流程 五、Sqoop Export 流程 六、Sqoop 安装部署
6.1 下载解压
下载地址https://archive.apache.org/dist/sqoop/
上传到 /usr/local/进行解压
[roothadoop1 local]# tar -zxvf /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
创建软连接
[roothadoop1 local]# ln -s sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop 6.2 修改 Sqoop 配置文件
进入 Sqoop 的 conf 目录下修改 sqoop-env.sh 配置文件修改内容如下
将配置模板拷贝一份命名为 sqoop-env.sh
[roothadoop1 conf]# cp /usr/local/sqoop/conf/sqoop-env-template.sh /usr/local/sqoop/conf/sqoop-env.sh编辑 sqoop-env.sh
export HADOOP_COMMON_HOME/usr/local/hadoop
export HADOOP_MAPRED_HOME/usr/local/hadoop
export HIVE_HOME/usr/local/hive
export ZOOCFGDIR/usr/local/zookeeper6.3 配置 Sqoop 环境变量
添加 Sqoop 的环境变量添加内容如下
[roothadoop1 conf]# vim /etc/profile添加如下内容
# 添加 Sqoop 环境变量
SQOOP_HOME/usr/local/sqoop
PATH$SQOOP_HOME/bin:$PATH
export SQOOP_HOME PATH更新环境
[roothadoop1 conf]# source /etc/profile
6.4 添加 MySQL 驱动包
将对应的 MySQL 驱动包上传到 /usr/local/sqoop/lib 目录下
6.5 测试运行 Sqoop
6.5.1 查看Sqoop命令语法
在Sqoop安装目录下使用help命令查看Sqoop的基本用法具体操作如下
[roothadoop1 sqoop]# /usr/local/sqoop/bin/sqoop help 6.5.2 测试数据库连接
[roothadoop1 bin]# /usr/local/sqoop/bin/sqoop list-databases --connect jdbc:mysql://192.168.220.151 --username hive --password hive七、案例实践Sqoop 迁移Hive出库数据
7.1 数据导出Hive 导入 MySQL
准备 Hive 数据源
create table mean_temperature as select id, sum(temperature)/count(*) from temperature group by id; MySQL 建表
CREATE TABLE IF NOT EXISTS mean_temperature(
id VARCHAR(20) NOT NULL,
average VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
)ENGINEInnoDB DEFAULT CHARSETutf8;hive数据导出到 mysql 脚本
/usr/local/sqoop/bin/sqoop export \
--connect jdbc:mysql://hadoop1/hive?useUnicodetruecharacterEncodingutf-8 \
--username hive \
--password hive \
--table mean_temperature \
--export-dir /user/hive/warehouse/mydb/mean_temperature \
--input-fields-terminated-by \001 \
-m 1;出现如下报错Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ‘hive’‘%’ to database ‘hive’ hive 用户只授权了 hadoop1 能够访问mysql需求开启远程访问 修复方法登录 root 用户执行如下脚本
mysql grant all on *.* to hive% identified by hive;
mysql flush privileges;
再次执行如下脚本
/usr/local/sqoop/bin/sqoop export \
--connect jdbc:mysql://hadoop1/hive?useUnicodetruecharacterEncodingutf-8 \
--username hive \
--password hive \
--table mean_temperature \
--export-dir /user/hive/warehouse/mydb/mean_temperature \
--input-fields-terminated-by \001 \
-m 1;在 mysql 查看 mean_temperature 表
7.2 数据导出MySQL 导入 Hive
执行如下脚本
/usr/local/sqoop/bin/sqoop import \
--connect jdbc:mysql://hadoop1/hive?useUnicodetruecharacterEncodingutf-8 \
--username hive \
--password hive \
--table mean_temperature \
--fields-terminated-by , \
--delete-target-dir \
-m 1 \
--hive-import \
--hive-database weather \
--hive-table ods_mean_temperature;查看 Hive 数据库的 ods_mean_temperature
hive select * from ods_mean_temperature limit 10; 可以看到 自动创建表 ods_mean_temperature 并有数据。