Sqoop介绍、安装与操作
搭建环境
部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放
Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下
创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建环境:
- 虚拟机操作系统: CentOS6.6 64位,单核,1G内存
- JDK:1.7.0_55 64位
- Hadoop:1.1.2
2 Sqoop介绍
2.1 Sqoop简介
Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1和Sqoop2。
Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive、hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入。
那么为什么选择Sqoop呢?
- 高效可控的利用资源,任务并行度,超时时间。
- 数据类型映射与转化,可自动进行,用户也可自定义
- 支持多种主流数据库,MySQL,Oracle,SQL Server,DB2等等
2.2 Sqoop1和Sqoop2比较
2.2.1 Sqoop1和Sqoop2异同
- 两个不同的版本,完全不兼容
- 版本号划分区别,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2) CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)
- Sqoop2比Sqoop1的改进
- 引入Sqoop server,集中化管理connector等
- 多种访问方式:CLI,Web UI,REST API
- 引入基于角色的安全机制
2.2.2 Sqoop1与Sqoop2的架构图
Sqoop架构图1
Sqoop架构图2
2.2.3 Sqoop1与Sqoop2的优缺点
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需要配置)
- export HADOOP_COMMON_HOME=/app/hadoop-1.1.2
- 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
- --username 数据库用户名
- --password连接数据库密码
- --table 表名
- -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- -- username为mysql中的数据库连接用户名
- --password为mysql中的数据库连接密码
- --table为导出表
- --hive-table test1 为导出表在Hive中的名称
- -m 1表示map数
从运行的日志可以看到,这个过程有两个阶段:
- 第一个阶段是从MySql中把数据到HDFS文件中
- 第二个阶段是从HDFS中把数据写入到MySql中
4.2.3 查看导出结果
登录hive,在hive创建表并查看该表,命令如下:
- hive
- hive>show tables;
- hive>desc MySql2Hive;
Sqoop介绍、安装与操作的更多相关文章
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Sqoop 介绍、安装及环境配置
一.Sqoop Sqoop介绍 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.oracle...)间进行数据的传递,可以将一个关系型数据库中的数据导进到Ha ...
- opencv3.1自带demo的介绍和运行操作。转载
opencv3.1自带demo的介绍和运行操作. 下列实验基本都试过,有些需要根据自己的电脑修改一些路径或者调试参数. 值得注意的是,控制台程序输入有时候要在图像所在的窗口输入相应的指令.我的电脑上安 ...
- Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装
搭建此环境主要用来hadoop的学习,因此我们的操作直接在root用户下,不涉及HA. Software: Hadoop 2.6.0-cdh5.4.0 Apache-hive-2.1.0-bin Sq ...
- (转)私有代码存放仓库 BitBucket介绍及入门操作
转自:http://blog.csdn.net/lhb_0531/article/details/8602139 私有代码存放仓库 BitBucket介绍及入门操作 分类: 研发管理2013-02-2 ...
- Sqoop的安装及简单使用
SQOOP是用于对数据进行导入导出的. (1)把MySQL.Oracle等数据库中的数据导入到HDFS.Hive.HBase中 (2)把HDFS.Hive.HBase中的数据导出到MySQL.Or ...
- Sqoop的安装配置及使用
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- Sqoop环境安装
环境下载 首先将下载的 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz放到 /usr/hadoop/目录下(该目录可以自定义,一般为Hadoop集群安装目录),然 ...
- 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用
进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...
随机推荐
- Python入门基础(10)_异常_1
最近有点忙,到现在快一个月没写了,罪过罪过,继续学习 异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常. 抛出异常:程序停止 ...
- Spring AOP JDK动态代理与CGLib动态代理区别
静态代理与动态代理 静态代理 代理模式 (1)代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理. (2)静态代理由 业务实现类.业务代理类 两部分 ...
- HTTP请求包和响应包
HTTP请求包 HTTP响应包
- ubuntu16.04安装Ros(kinetic版本)【亲测好用】
准备 1.ubuntu16.04 64位桌面版 ps:关于系统的下载和安装这里不做介绍,请自行百度,不是介绍重点 2.更改源 图上的几个勾默认是选上的,如果没有选上,选成上图这样(如果修改过勾,点击关 ...
- Linux面试题总结
1.简述Apache两种工作模式,以及它们之间的区别.答:(1)prefork MPM使用多个子进程,每个子进程只有一个线程来处理一个http请求,直到这个TCP连接被释放.root主进程在最初建立s ...
- 原生js实现的一个随机颜色的简单效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...
- Redis学习总结(六)--Redis集群伸缩
我们在上一章讲了如何创建集群,今天我们来实现下集群的伸缩. 添加节点 操作流程 1.启动节点 2.将节点加入到集群中 3.将数据槽从原来的节点迁移部分到新节点上 实践 1)准备两个新节点并启动 [ro ...
- 跨库数据迁移利器 —— Sqoop
一.Sqoop 基本命令 1. 查看所有命令 # sqoop help 2. 查看某条命令的具体使用方法 # sqoop help 命令名 二.Sqoop 与 MySQL 1. 查询MySQL所有数据 ...
- unity_UGUI养成之路01
1.UGUI_UI之音量设计 2.控制音量音效的开关 实现开和关的互斥点击 实现开与关画面的显示 注意,上图并未选择分组.具体原因博主尚不清楚如果有知道的可以告知一二,谢谢各位!!! 代码: usi ...
- RabbitMQ消息丢失问题和保证消息可靠性-消费端不丢消息和HA(二)
继续上篇文章解决RabbitMQ消息丢失问题和保证消息可靠性(一) 未完成部分,我们聊聊MQ Server端的高可用和消费端如何保证消息不丢的问题? 回归上篇的内容,我们知道消息从生产端到服务端,为了 ...