Hadoop入门进阶课程11--Sqoop介绍、安装与操作
来源:互联网 发布:boss 弹道优化瞄准镜 编辑:程序博客网 时间:2024/05/21 08:53
转载:http://www.cnblogs.com/shishanyuan/p/4648275.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan 。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237
【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs,下载该PDF文件
1、搭建环境
部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建环境:
l 虚拟机操作系统: CentOS6.6 64位,单核,1G内存
l JDK:1.7.0_55 64位
l Hadoop:1.1.2
2、Sqoop介绍
2.1 Sqoop简介
Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1和Sqoop2。
Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive、hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入。
那么为什么选择Sqoop呢?
l 高效可控的利用资源,任务并行度,超时时间。
l 数据类型映射与转化,可自动进行,用户也可自定义
l 支持多种主流数据库,MySQL,Oracle,SQL Server,DB2等等
2.2 Sqoop1和Sqoop2比较
2.2.1 Sqoop1和Sqoop2异同
l 两个不同的版本,完全不兼容
l 版本号划分区别,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2) CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)
l Sqoop2比Sqoop1的改进
(1)引入Sqoop server,集中化管理connector等
(2)多种访问方式:CLI,Web UI,REST API
(3)引入基于角色的安全机制
2.2.2 Sqoop1与Sqoop2的架构图
Sqoop架构图1
Sqoop架构图2
2.2.3 Sqoop1与Sqoop2的优缺点
比较
Sqoop1
Sqoop2
架构
仅仅使用一个Sqoop客户端
引入了Sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制
部署
部署简单,安装需要root权限,connector必须符合JDBC模型
架构稍复杂,配置部署更繁琐
使用
命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏
多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在Sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写
3、安装部署Sqoop
3.1 下载Sqoop
可以到apache基金sqoop官网http://hive.apache.org/,选择镜像下载地址:http://mirror.bit.edu.cn/apache/sqoop/下载一个稳定版本,如下图所示下载支持Hadoop1.X的1.4.5版本gz包:
也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app目录中
cd /home/shiyanlou/install-pack
tar -xzf sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz
mv sqoop-1.4.5.bin__hadoop-1.0.0 /app/sqoop-1.4.5
ll /app
3.2 设置/etc/profile参数
编辑/etc/profile文件,加入sqoop的Home路径和在PATH加入bin的路径:
export SQOOP_HOME=/app/sqoop-1.4.5
export PATH=$PATH:$SQOOP_HOME/bin
编译配置文件/etc/profile,并确认生效
source /etc/profile
echo $PATH
3.3 设置bin/configure-sqoop配置文件
修改bin/configure-sqoop配置文件
cd /app/sqoop-1.4.5/bin
sudo vi configure-sqoop
注释掉HBase和Zookeeper等检查(除非使用HBase和Zookeeper等HADOOP上的组件)
3.4 设置conf/sqoop-env.sh配置文件
如果不存在sqoop-env.sh文件,复制sqoop-env-template.sh文件,然后修改sqoop-env.sh配置文件
cd /app/sqoop-1.4.5/conf
cp sqoop-env-template.sh sqoop-env.sh
sudo vi sqoop-env.sh
设置hadoop运行程序所在路径和hadoop-*-core.jar路径(Hadoop1.X需要配置)
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/app/hadoop-1.1.2
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/app/hadoop-1.1.2
编译配置文件sqoop-env.sh使之生效
3.5 验证安装完成
输入如下命令验证是否正确安装sqoop,如果正确安装则出现sqoop提示
sqoop help
4、文件导入/导出
4.1 MySql数据导入到HDFS中
如果没有安装MySql,请参照第8课3.1进行安装
4.1.1 下载MySql驱动
到MySql官网进入下载页面:http://dev.mysql.com/downloads/connector/j/ ,选择所需要的版本进行下载,这里下载的zip格式的文件,然后在本地解压:
也可以在/home/shiyanlou/install-pack目录中找到该安装包,把MySql驱动包使用如下命令放到Sqoop的lib目录下
cd /home/shiyanlou/install-pack
cp mysql-connector-java-5.1.22-bin.jar /app/sqoop-1.4.5/lib
4.1.2 启动MySql服务
查看MySql服务并查看状态,如果没有启动则启动服务
sudo service mysql status
sudo service mysql start
4.1.3 查看MySql中的数据表
进入MySql数据库,选择有数据的一张表查看内容,比较导出结果是否正确,输入如下命令:
mysql -uhive -phive
mysql>show databases;
mysql>use hive;
mysql>show tables;
mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;
4.1.4 把MySql数据导入到HDFS中
使用如下命令列出MySql中所有数据库:
sqoop list-databases --connect jdbc:mysql://hadoop:3306/ --username hive --password hive
使用如下命令把hive数据库TBLS表数据导入到HDFS中:
sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS -m 1
l--username 数据库用户名
l--password连接数据库密码
l--table 表名
l-m 1表示map数
4.1.5 查看导出结果
使用如下命令查看导出到HDFS结果,文件路径在当前用户hadoop目录下增加了TBLS表目录,查看part-m-00000文件:
hadoop fs -ls /user/shiyanlou/TBLS
hadoop fs -cat /user/shiyanlou/TBLS/part-m-00000
4.2 MySql数据导入到Hive中
4.2.1 启动metastore和hiveserver
在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:
hive --service metastore &
hive --service hiveserver &
启动用通过jps命令可以看到两个进行运行在后台
4.2.2 从MySql导入表数据到Hive中
使用如下命令到把MySql中TBLS表数据导入到Hive中:
sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1
l-- username为mysql中的数据库连接用户名
l--password为mysql中的数据库连接密码
l--table为导出表
l--hive-table test1 为导出表在Hive中的名称
l-m 1表示map数
从运行的日志可以看到,这个过程有两个阶段:
1. 第一个阶段是从MySql中把数据到HDFS文件中
2. 第二个阶段是从HDFS中把数据写入到MySql中
4.2.3 查看导出结果
登录hive,在hive创建表并查看该表,命令如下:
hive
hive>show tables;
hive>desc MySql2Hive;
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程12--Flume介绍与安装
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
- Hadoop入门进阶课程8--Hive介绍和安装部署
- Hadoop入门进阶课程8--Hive介绍和安装部署
- Hadoop入门进阶课程8--Hive介绍和安装部署
- Hadoop入门进阶课程8--Hive介绍和安装部署
- Hadoop入门进阶课程7--Pig介绍、安装与应用案例
- Hadoop入门进阶课程9--Mahout介绍、安装与应用案例
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
- Hadoop入门进阶课程7--Pig介绍、安装与应用案例
- Hadoop入门进阶课程9--Mahout介绍、安装与应用案例
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
- 在extjs的textfield中输入带有特殊字符的字符串,比如/opt/apache-storm-0.9.4/bin/storm ui &但是&符号却无法传递到后台
- Openfire3.10.2源码在eclipse上部署编译
- navicat 快捷键
- vb 遍历sheet名和对数据循环处理并输出到文件
- 关于ANSI,unicode与utf-8的区别
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- OpenGL ADSGouraud着色
- 第5章 原型
- strlen 是C语言的一个库函数计算字符串长度
- 掘金智能手机价值洼地,三星深耕超高端商务手机市场
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
- socket 可读 可写 条件
- JavaScript学习笔记3-JavaScript中的继承