设为首页 收藏本站
查看: 841|回复: 0

[经验分享] 如何将mysql数据导入Hadoop之Sqoop安装

[复制链接]

尚未签到

发表于 2018-10-8 12:22:31 | 显示全部楼层 |阅读模式
  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的改进

  •   引入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架构图

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-616610-1-1.html 上篇帖子: MySql之基于ssl安全连接的主从复制 下篇帖子: mysql分区及分表(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表