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

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

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

Sqoop1和Sqoop2的对比

sqoop2比sqoop1的改进

  1. 引入sqoop server,集中化管理connector等
  2. 多种访问方式:CLI,Web UI,REST API
  3. 引入基于角色 的安全机制

sqoop1与sqoop2的优缺点

  1. sqoop1的架构,仅仅使用一个sqoop客户端,sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。
  2. sqoop1优点架构部署简单
  3. sqoop1的缺点命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,
  4. 安装需要root权限,connector必须符合JDBC模型
  5. sqoop2的优点多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。
  6. sqoop2的缺点,架构稍复杂,配置部署更繁琐。

sqoop1架构图

sqoop2架构图

  由于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.sh

1. 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/hadoop273export 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/libcp $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的数据库列表显示在屏幕上表示连接成功。

如何将mysql数据导入Hadoop之Sqoop安装相关推荐

  1. mysql数据与Hadoop之间导入导出之Sqoop实例

    前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令. 显示mysql数据库的信息,一般sqoop安装测试用 sqoop l ...

  2. python etl工具 sqoop hive_python脚本 用sqoop把mysql数据导入hive

    转:https://blog.csdn.net/wulantian/article/details/53064123 用python把mysql数据库的数据导入到hive中,该过程主要是通过pytho ...

  3. sqoop把mysql数据导入hive

    环境: 软件 版本 备注 Ubuntu 19.10   sqoop 1.4.7   mysql 8.0.20-0ubuntu0.19.10.1 (Ubuntu)   hadoop 3.1.2   hi ...

  4. Sqoop将MySQL数据导入到HDFS和Hive中

    一.将数据从mysql导入 HDFS sqoop import --connect jdbc:mysql://192.168.76.1:3306/workflow --username root -- ...

  5. sqoop将hbase数据导入mysql_Sqoop将mysql数据导入hbase的血与泪

    Sqoop将mysql数据导入hbase的血与泪(整整搞了大半天) 版权声明:本文为yunshuxueyuan原创文章. 如需转载请标明出处: https://my.oschina.net/yunsh ...

  6. sqoop将mysql数据导入到hive指定的数据库中

    本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 欢迎交流,禁止将本人博客直接复制下来,上传到百度文库等平台. 我们在使用hive时,经常需要建立一些库,以防止总 ...

  7. mysql数据首次导入hive_sqoop1.4.7环境搭建及mysql数据导入导出到hive

    sqoop文档:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_prerequisites 在hive创建表和导入数据时必须添加分隔符, ...

  8. sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL

    bitsCN.com MYSQL入门之三_将本地MySQL数据导入SAE数据库 1. MySQL字符集 MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL ...

  9. 【Logstash】Logstash:把MySQL数据导入到Elasticsearch中

    1.概述 转载:https://www.cnblogs.com/sanduzxcvbnm/p/12076487.html Logstash:把MySQL数据导入到Elasticsearch中 前提条件 ...

最新文章

  1. C#实现快速重命名JPEG文件
  2. GTSAM Tutorial学习笔记
  3. 怎样 获取 ios的系统版本
  4. POJ3694 Network
  5. uva 12108 Extraordinarily Tired Students(特别困的学生)
  6. 31销售是让用户用到货真价实的产品
  7. SQL优化:紧急情况下提高SQL性能竟是这样实现的!(文中有惊喜)
  8. Android 系统(152)---Android多线程:HandlerThread详细使用手册
  9. Enterprise Library +Caliburn.Micro+WPF CM框架下使用企业库验证,验证某一个属性,整个页面的文本框都变红的原因...
  10. java mysql jdbc封装类_Java-jdbc-封装类形式的数据库操作
  11. [UVa11995] I Can Guess the Data Structure!
  12. php5.3升级脚本
  13. 基于智能电网的电力线载波通信研究
  14. Java问卷调查系统
  15. java条形码解析_Java 生成、识别条形码
  16. 云流化云渲染技术在vr看房/装修领域是怎样实现的?
  17. win10 永久关闭自动更新
  18. 证券行业的数字化转型:金融业务与金融科技的共生发展
  19. 一篇读懂深度学习中「训练」和「推断」的区别
  20. 面试当中必考的数据结构---树种类大全和相关优秀博客总结

热门文章

  1. 烂泥:ubuntu 14.04搭建Open***服务器
  2. 无线路由器结合Windows Radius Server实现通过域账户连接公司无线网络
  3. 开放式创新改变世界——OpenStack生态系统将重新洗牌
  4. QPushButton 响应回车 设置默认按钮
  5. [转]PDO防注入原理分析以及使用PDO的注意事项
  6. xtragrid 上移下移
  7. 候选翻译文章列表[示范]
  8. 为何python攀上数据科学巅峰?调查显示Python超越R
  9. es创建索引设置字段不分词_ES的使用笔记
  10. .NET Core 6.0之读取配置文件