安装 sqoop
简介
Sqoop是一个用来将Hadoop(Hive、HBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中,但是不能将hbase、hive的数据导入到关系型数据库。
下载
因为官方并不建议在生产环境中使用sqoop2,即1.99.7,所以这里我用的是sqoop1,即1.4.7
点击下载:sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
安装
解压
- #tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /data/hadoop/
#cd /data/hadoop
#mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop
配置环境变量~/.bashrc
- export SQOOP_HOME=/data/hadoop/sqoop
- export PATH=${SQOOP_HOME}/bin:$PATH
编辑完成后,执行命令: source /etc/profile
sqoop配置文件修改
- 进入 /data/hadoop/sqoop/conf 目录下,
- # cd /data/hadoop/sqoop/conf
- 将sqoop-env-template.sh复制一份,并取名为sqoop-env.sh
- # cp sqoop-env-template.sh sqoop-env.sh
在sqoop-env.sh文件最后添加如下参数
- # Hadoop
- export HADOOP_HOME=/data/hadoop/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- export HADOOP_COMMON_HOME=${HADOOP_HOME}
- export HADOOP_HDFS_HOME=${HADOOP_HOME}
- export HADOOP_MAPRED_HOME=${HADOOP_HOME}
- export HADOOP_YARN_HOME=${HADOOP_HOME}
- # Native Path
- export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
- export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
- # Hadoop end
- #Hive (如果存在)
- export HIVE_HOME=/data/hadoop/hive
- export PATH=$HIVE_HOME/bin:$PATH
- #HBase (如果存在)
- export HBASE_HOME=/data/hadoop/hbase
- export PATH=$HBASE/bin:$PATH
mysql驱动包
下载地址:https://dev.mysql.com/downloads/connector/j/
解压与拷贝
- # tar zxvf mysql-connector-java-8.0..tar.gz
# cd mysql-connector-java-8.0.13/
# cp mysql-connector-java-8.0.13.jar /data/hadoop/sqoop/lib/
sqoop使用
1、查看帮助
- # sqoop help
- Available commands:
- codegen Generate code to interact with database records
- create-hive-table Import a table definition into Hive
- eval Evaluate a SQL statement and display the results
- export Export an HDFS directory to a database table
- help List available commands
- import Import a table from a database to HDFS
- import-all-tables Import tables from a database to HDFS
- import-mainframe Import datasets from a mainframe server to HDFS
- job Work with saved jobs
- list-databases List available databases on a server
- list-tables List available tables in a database
- merge Merge results of incremental imports
- metastore Run a standalone Sqoop metastore
- version Display version information
想要显示具体的参数用法,可以使用sqoop help options
- # sqoop help import
2、显示mysql所有数据库(mysql的安装自行百度)
- # sqoop list-databases --connect jdbc:mysql://192.168.1.91 --username root --password 123456 注意,url地址要写对,mysql权限要赋予。
如果报如下的错误:
19/07/20 18:23:16 ERROR tool.BaseSqoopTool: Got error creating database manager: java.io.IOException: No manager for connect string: jdbc.mysql://192.168.1.91
这种情况要么是mysql驱动程序拷贝,要么是url地址写错误了- 上诉的这个错误就是url写错了,正常应该是 jdbc:mysql://192.168.1.91 这里写成了 jdbc.mysql://192.168.1.91
- 我在这里卡了好一会,,尴尬的一批。0.0
- 也可以使用如下的命令查询某一个数据库
# sqoop list-databases --connect jdbc:mysql://192.168.1.91:3306/test?characterEncoding=UTF-8 --username root --password '123456'
3、显示数据库里面的所有表
- # sqoop list-tables --connect jdbc:mysql://192.168.1.91:3306/hadoop?characterEncoding=UTF-8 --username root --password '123456'
4、使用sqoop导入数据
sqoop利用Hadoop MapReduce(只是执行map阶段)来执行数据的导入和导出。
查看import帮助
- # sqoop help import
usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]
....
sqoop import命令有两个基本部分,一个是GENERIC参数,另一个是TOOL参数
在导入前,首先在mysql里面创建一个hadoop数据库
- create database hadoop;
use hadoop;
创建表
create table learn(id int,name char,age int);
插入一条简单的数据
insert into learn values(1,'yjt',22);
导入数据到hdfs
- # sqoop import --connect jdbc:mysql://192.168.1.91:3306/hadoop --username root --password '123456' --table learn --target-dir /test
报错了
ERROR tool.ImportTool: Import failed: No primary key could be found for table learn. Please specify one with --split-by or perform a sequential import with '-m 1'.
说这个learn没有主键。报错的后面提示了解决办法,,--split-by <column> 指定以什么字段分割 -m是指定map任务数- 重新执行
# sqoop import --connect jdbc:mysql://192.168.1.91:3306/hadoop --username root --password '123456' --table learn --target-dir /test --split-by id- 查看hdfs上的test目录存在的数据
# hadoop fs -cat /test/part-m-00000
1,y,22
说明成功把数据导入到了hdfs
当使用Sqoop导入命令时,Sqoop将数据集切分成多个分区,并启动map-only任务将数据块传输到hdfs,Sqoop从数据库的元数据中推断出数据类型。所以,sqoop导入可以分为两个过程:
(1) sqoop收集要导入的数据所需的元数据。
(2)Sqoop将map任务提交到Hadoop集群。
Sqoop是不直接连接到关系型数据库或者仓库来导入(导出)数据的。Sqoop通过运行MapReduce作业来连接到数据库,读取数据并将数据导入到hdfs。
在上诉的导入命令中,需要输入一大堆的参数,能不能把一些每次导入需要的选项保存下来呢,,答案是可以的,可以使用选项文件(--options-file)参数,如下:
创建文本文件,以保存参数
- # cat sqoop-option-file.txt
- --connect
- jdbc:mysql://192.168.1.91/hadoop
- --username
- root
- --password
执行sqoop导入操作
- # sqoop import --options-file sqoop-option-file.txt --table learn --target-dir /test1 --split-by id
5、Sqoop是如何导入数据的???
(1)Sqoop连接数据库。
(2)获取表的元数据
(3)生成一个Java类并进行编译
(4)连接到Hadoop集群
(5)在Hadoop集群执行MapReduce作业
(6)MapReduce使用在步骤2中生成的元数据执行map任务来完成导入过程
(7)MapReduce将输出作为hdfs中的一组文件生成
6、指定密码的几种方式
(1)使用--password password
(2)使用--p 以交互式方式输入密码
(3)使用--password-file password-file 从文件中读取密码
(4)保存到sqoop metastore中,可以通过在sqoop-site.xml文件设置sqoop.metastore.client.record.password属性来设置明文密码。
参考文章:
https://www.cnblogs.com/frankdeng/p/9132194.html
https://www.cnblogs.com/frankdeng/p/9067092.html
https://www.cnblogs.com/cenyuhai/p/3306037.html
安装 sqoop的更多相关文章
- 安装sqoop
安装sqoop 1.默认已经安装好java+hadoop 2.下载对应hadoop版本的sqoop版本 3.解压安装包 tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-a ...
- 简易安装sqoop
版本 :hive-0.13.1-cdh5.3.6.tar.gz 1:解压 然后 进到 conf 目录 修改 sqoop-env.sh 2:如果使用mysql 数据库 要将 mysql驱动包拷贝到 ...
- centos6.5系统hadoop2.7安装sqoop
一.sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ...
- 安装sqoop 1.99.4
参考http://sqoop.apache.org/docs/1.99.4/Installation.html 1.简介 sqoop2分为server和client两部分.server作为maprde ...
- ubuntu - 安装sqoop
解析过程 参考:https://www.cnblogs.com/qingyunzong/p/8807252.html#_label4 一.下载 二.解压到指定目录 三.配置sqoop环境变量并生效 四 ...
- Linux安装Sqoop及基础使用
下载Sqoop 官网地址 http://sqoop.apache.org/ wget http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7 ...
- centos 7 安装sqoop 1.4.7
1. 下载sqoop1.4.7 cd /home/workspace wget https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/sqoo ...
- Sqoop安装及操作
一.集群环境: Hostname IP Hadoop版本 Hadoop 功能 系统 node1 192.168.1.151 0.20.0 namenode hive+sqoop rhel5.4X86 ...
- Sqoop安装配置及数据导入导出
前置条件 已经成功安装配置Hadoop和Mysql数据库服务器,如果将数据导入或从Hbase导出,还应该已经成功安装配置Hbase. 下载sqoop和Mysql的JDBC驱动 sqoop-1.2.0- ...
随机推荐
- 【开发笔记】- Java读取properties文件的五种方式
原文地址:https://www.cnblogs.com/hafiz/p/5876243.html 一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供j ...
- 在notepad++中编辑时光标消失不见
在notepad++进行编辑时,会不知道的情况下,鼠标光标由竖线变成了下划线,如图 解决方法很简单,是点击”insert“键或者”ins“键,即可改变光标形状.
- 字符串导出xml文件并弹出下载对话框
转自:https://blog.csdn.net/zhandingfeng/article/details/53887354 导出单个xml文件:[java] view plain copy ...
- grant_type为client_credentials和password二者的区别
最近工作中需要使用到oauth,注意到oauth客户端的grant_type值可以指定为client_credentials和password两种,很好奇所以网上搜索了一下,发现stackoverfl ...
- python接口自动化13-data和json参数傻傻分不清
前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传data? 一.识别json参数 1.在前面 ...
- Linux命令——tree
参考:Linux tree Command Tutorial for Beginners (6 Examples) 简介 Linux tree命令用于以树状图列出目录的内容. 执行tree指令,它会列 ...
- linux系统编程之管道(三)
今天继续研究管道的内容,这次主要是研究一下命名管道,以及与之前学过的匿名管道的区别,话不多说,进入正题: 所以说,我们要知道命名管道的作用,可以进行毫无关系的两个进程间进行通讯,这是匿名管道所无法实现 ...
- 开发搭建环境之springboot配置logback日志管理
首先书写logback-spring.xml文件为: <?xml version="1.0" encoding="UTF-8"?><confi ...
- spring依赖注入实例
依赖注入: BL public class T01BL implements Serializable { private static final Log logger = LogFactory.g ...
- PHP项目部署 Linux 服务器
一.运行环境 Centos7 x64 lnmp (Linux , Nginx , Mysql , PHP/Python) 二.安装依赖和修改配置 安装Lnmp环境集成包:https://lnmp.or ...