安装 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.13.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 importusage: 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
123456

执行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

官网

原文地址:https://www.cnblogs.com/yjt1993/p/11218804.html

时间: 2024-12-18 05:51:32

安装 sqoop的相关文章

安装sqoop,并将Mysql中的表数据导出到HDFS下的文本文件

首先是安装mysql数据库.使用 sudo apt-get install mysql-server命令即可安装完成.然后进行表的创建和插入数据.如图. 然后下载sqoop和连接mysql数据库的jar包.接下来是安装sqoop.首先是配置sqoop-env.sh文件.如图. 然后将config-sqoop文件中不需要检查的注释掉.如图. 然后接下来是将sqoop-1.4.4.jar包和连接mysql的jar包copy到hadoop目录下的lib目录中,同时把hadoop-core-1.2.1.

Centos7安装Sqoop(CentOS7+Sqoop1.4.6+Hadoop2.8.0+Hive2.1.1)

  注意:本文只讲Sqoop1.4.6的安装.和hive一样,sqoop只需要在hadoop的namenode上安装即可.本例安装sqoop的机器上已经安装了hdoop2.8.0和hive2.1.1,hadoop2.8.0的安装请参考博文:        http://blog.csdn.net/pucao_cug/article/details/71698903 hive2.1.1的安装请参考博文:       http://blog.csdn.net/pucao_cug/article/de

安装sqoop

安装sqoop 上传,解压 修改SQOOP_HOME环境变量 复制mysql-connector-java-5.1.32-bin.jar到sqoop/lib下 将sqoop-env-template.sh改成sqoop-env.Sh 在sqoop/bin目录下,修改configure-sqoop,去掉未安装服务.如HBASE,HCATALOG,ACCUMULO if [ -z "${HBASE_HOME}" ]; then if [ -d "/usr/lib/hbase&qu

在Hadoop集群上安装Sqoop数据迁移工具

集群如下: HostName          IP                    Soft                                Processh1                    192.168.1.31    Hadoop,Hbase                          NameNode(Active),DFSZKFailoverController,HMaster(Active)h2                    192.168

Sqoop安装

Sqoop 配置文档 安装环境ubuntu14.04 64位 hadoop2.6 jdk 1.7.0_79  sqoop-1.99.6-bin-hadoop200 Sqopp介绍: Sqoop 学习笔记 1.sqoop 介绍 1)多数是用hadoop技术处理大数据业务的企业有大量的数据存储在rdbms中. 2)基于历史数据的数据分析,利用大数据的平台来进行处理. 3)因此需要将关系型数据库中的数据迁移到hadoop(hive和hbase)中,将hadoop分析出来的数据可能要在倒回到关系型数据库

Sqoop安装配置及数据导入导出

前置条件 已经成功安装配置Hadoop和Mysql数据库服务器,如果将数据导入或从Hbase导出,还应该已经成功安装配置Hbase. 下载sqoop和Mysql的JDBC驱动 sqoop-1.2.0-CDH3B4.tar.gz :http://archive.cloudera.com/cdh/3/sqoop-1.2.0-CDH3B4.tar.gz mysql-connector-java-5.1.28 安装sqoop [[email protected] ~]$ tar -zxvf sqoop-

详解Sqoop的架构和安装部署

一.Sqoop是什么 Sqoop 是连接传统关系型数据库和 Hadoop 的桥梁.它包括以下两个方面: 1. 将关系型数据库的数据导入到 Hadoop 及其相关的系统中,如 Hive和HBase. 2. 将数据从 Hadoop 系统里抽取并导出到关系型数据库. Sqoop 的核心设计思想是利用 MapReduce 加快数据传输速度.也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的.所以它是一种批处理方式进行数据传输,难以实现实时的数据进行导入和导出. 二.为什么选择S

sqoop配置安装以及导入

安装sqoop的前提是已经具备java和hadoop的环境 1.上传并解压 (要导mysql的数据)得加入mysql的jdbc驱动包 接下来验证启动 Sqoop的数据导入 "导入工具"导入单个表从RDBMS到HDFS.表中的每一行被视为HDFS的记录.所有记录都存储为文本文件的文本数据(或者Avro.sequence文件等二进制数据) 语法 下面的语法用于将数据导入HDFS. $ sqoop import (generic-args) (import-args) 示例 表数据 在mys

sqoop安装及导入sqlserver数据

如何使用 Sqoop 导出 sql server 的数据 1.下载Sqoop 1.4.7 到清华镜像去下载sqoop-1.4.7就行了 2.连接sqlserver用的jar包 使用 sqoop 导出 sql server 的数据,需要使用对应的 sqljdbc.jar 包,这里用到的是 sqljdbc4.jar点我下载 3.安装sqoop 将下载好的压缩包解压到指定安装目录,如/opt tar -zxvf sqoop-1.4.7_hadoop-bin.tar.gz -C /opt 4.配置 修改