博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqoop mysql hadoop_如何将mysql数据导入Hadoop之Sqoop安装
阅读量:1523 次
发布时间:2019-04-21

本文共 3628 字,大约阅读时间需要 12 分钟。

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。

总之Sqoop是一个转换工具,用于在关系型数据库与HDFS之间进行数据转换。

99301eeedd91

注意:sqoop1与sqoop2完全不兼容,1.4.6及之前的版本是sqoop1,之后的是sqoop2

Sqoop1和Sqoop2的对比

sqoop2比sqoop1的改进

引入sqoop server,集中化管理connector等

多种访问方式:CLI,Web UI,REST API

引入基于角色 的安全机制

sqoop1与sqoop2的优缺点

sqoop1的架构,仅仅使用一个sqoop客户端,sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。

sqoop1优点架构部署简单

sqoop1的缺点命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,

安装需要root权限,connector必须符合JDBC模型

sqoop2的优点多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。

sqoop2的缺点,架构稍复杂,配置部署更繁琐。

sqoop1架构图

99301eeedd91

sqoop2架构图

99301eeedd91

由于sqoop2还不是很完善,官方建议生产环境不建议使用,在此就sqoop1.4.6来作介绍

安装环境:

Cenos7系统

sqoop版本:1.4.6

Hadoop:2.7.3

MySQL:5.7.15

JDK :1.8

下载并解压sqoop1.4.6

安装在一台节点上就可以了

点击 sqoop下载地址,下载Sqoop安装文件sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz。将文件上传到服务器的/usr/local文件夹中。

下面执行以下命令1. cd ~#进入当前用户的用户目录

2. cd /usr/local

3. sudo tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local#解压安装文件

5. sudo mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop146#修改文件名

6. sudo chown -R hadoop:hadoop sqoop146#修改文件夹属主,如果你当前登录用户名不是hadoop,请修改成你自己的用户名 (hadoop为用Hadoop创建的用户组和用户名,sqoop将与Hadoop组合使用)

修改配置文件sqoop-env.sh1. cd sqoop146/conf/

2. cat sqoop-env-template.sh >> sqoop-env.sh#将sqoop-env-template.sh复制一份并命名为sqoop-env.sh

3. vi sqoop-env.sh#编辑sqoop-env.sh

修改sqoop-env.sh的如下信息,若有其它的可以都加上export HADOOP_COMMON_HOME=/usr/local/hadoop273

export HADOOP_MAPRED_HOME=/usr/local/hadoop273

export HBASE_HOME=/usr/local/hbase

export HIVE_HOME=/usr/local/hive

export ZOOCFGDIR= #如果读者配置了ZooKeeper,也需要在此配置ZooKeeper的路径

配置环境变量

打开当前用户的环境变量配置文件:vi ~/.bash_profile

在配置文件第一行键入如下信息:export SQOOP_HOME=/usr/local/sqoop146

export PATH=$PATH:$SBT_HOME/bin:$SQOOP_HOME/bin

export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib

保存该文件,退出vim编辑器。

然后,执行下面命令让配置文件立即生效:source ~/.bash_profile

将mysql驱动包拷贝到$SQOOP_HOME/lib

下面要把MySQL驱动程序和hadoop-connector jar包拷贝到$SQOOP_HOME/lib目录下,不存在先下载驱动包。cp ./mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/sqoop146/lib

cp $HADOOP_HOME/share/hadoop/common/hadoop-common-2.7.3.jar $SQOOP_HOME/lib

修改$SQOOP_HOME/bin/configure-sqoop

注释掉HCatalog,Accumulo检查(除非你准备使用HCatalog,Accumulo等HADOOP上的组件)##Moved to be a runtime check in sqoop.#if[ ! -d "${HCAT_HOME}" ]; then#echo "Warning: $HCAT_HOME does notexist! HCatalog jobs will fail."#echo 'Please set $HCAT_HOME to the root ofyour HCatalog installation.'#fi#if[ ! -d "${ACCUMULO_HOME}" ]; then#echo "Warning: $ACCUMULO_HOME does notexist! Accumulo imports will fail."#echo 'Please set $ACCUMULO_HOME to the rootof your Accumulo installation.'#fi#Add HCatalog to dependency list#if[ -e "${HCAT_HOME}/bin/hcat" ]; then#TMP_SQOOP_CLASSPATH=${SQOOP_CLASSPATH}:`${HCAT_HOME}/bin/hcat-classpath`#if [ -z "${HIVE_CONF_DIR}" ]; then#TMP_SQOOP_CLASSPATH=${TMP_SQOOP_CLASSPATH}:${HIVE_CONF_DIR}#fi#SQOOP_CLASSPATH=${TMP_SQOOP_CLASSPATH}#fi#Add Accumulo to dependency list#if[ -e "$ACCUMULO_HOME/bin/accumulo" ]; then#for jn in `$ACCUMULO_HOME/bin/accumuloclasspath | grep file:.*accumulo.*jar |cut -d':' -f2`; do#SQOOP_CLASSPATH=$SQOOP_CLASSPATH:$jn#done#for jn in `$ACCUMULO_HOME/bin/accumuloclasspath | grep file:.*zookeeper.*jar |cut -d':' -f2`; do#SQOOP_CLASSPATH=$SQOOP_CLASSPATH:$jn#done#fi

测试与MySQL的连接

首先请确保mysql服务已经启动了,如果没有启动,请执行下面命令启动:service mysql start

然后就可以测试sqoop与MySQL之间的连接是否成功:sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -password root

root为数据库的用户名和密码,mysql的数据库列表显示在屏幕上表示连接成功。

转载地址:http://aciby.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>