zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

使用E-MapReduce集群sqoop组件同步云外Oracle数据库数据到集群hive

2023-09-14 09:01:05 时间

E-MapReduce集群sqoop组件可以同步数据库的数据到集群里,不同的数据库源网络配置有一些差异网络配置。最常用的场景是从rds mysql同步数据,最近也有用户询问如何同步云外专有Oracle数据库数据到hive。云外专有数据库需要集群所有节点通过公网访问,要创建VPC网络,使用VPC网络创建集群,给集群各节点绑定动态ip,检查网络链路,Oracle数据库还上传oracle jdbc jar。本文会详细介绍具体的操作步骤。

创建vpc专有网络集群

如果没创建过VPC专有网络和子网交换机,需要先创建。如果已创建可以跳过下面的创建章节。

创建专有网络

进入VPC控制台 ,选择一个地区地区,点击创建专有网络。目前E-MapReduce支持华东1(杭州)和 华北2(北京)两个地区,所以专有网络也只能创建在这两个地区,根据您专有数据库和其他应用的网络情况选择一个。
图1. 专有网络列表
_

图2. 配置专有网络
_

创建交换机

创建专有网络成功后,点击管理交换机,创建一个交换机。交换机有可用区属性,这个要和EMR的集群可用区保持一致。
图3. 创建专有网络成功
_

图4. 配置交换机
_

创建VPC集群

创建VPC集群可以参考用户手册创建专有网络集群

绑定动态IP

VPC网络的EMR集群,默认只有master绑定了动态ip可以访问外网,需要给其他节点也绑定动态ip以便map任务访问专有数据库。先创建动态ip,再给各个节点绑定

创建动态IP

点击 IP管理控制台,点击右上角申请弹性公网IP。
图5. 弹性公网Ip
_ip

选择和VPC集群一致的地域,根据需要同步数据的实际情况选择按量计费或固定带宽,带宽峰值,购买数量设置为您master以外的节点数量。点击立即购买,等待开通

成功后在ecs控制台给集群的每个ecs实例绑定一个EIP,就可以访问私有数据库的公网地址了。绑定的操作方式在ecs控制台-ecs实例后的管理-配置信息-更多-里面选择绑定弹性IP.

图6. 绑定弹性Ip
fc6b289e283d92da25cd7c5908626931bd6868c8_jpeg

放置 oracle jdbc jar

集群集成了常用的mysql jdbc jar,Oracle的jdbc jar需要去Oracle官网下载数据库可用的ojdbc jar,比如ojdbc14.jar,放在master节点的$SQOOP_HOME/lib目录下

在master节点上连接Oracle数据库的访问地址,telnet ip port,如果无法连接,可能是因为你的数据库设置了防火墙访问规则限制,需要联系您数据库的运维人员设置集群所有节点的公网Ip允许访问。

选择Oracle连接

sqoop官方手册, oracle连接有三种写法

--connect jdbc:oracle:thin:@OracleServer:OraclePort:OracleSID

--connect jdbc:oracle:thin:@//OracleServer:OraclePort/OracleService

--connect jdbc:oracle:thin:@TNSName

选择适合您的连接方式。

可以使用 sqoop eval执行一条查询语句确定连接是否正常. [eval 语法](http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html?spm=5176.doc28133.2.7.K0HsDL#_literal_sqoop_eval_literal),如果提示用户名密码无法访问,可能是密码错误或者该账户没有访问的权限。

map任务提示网络不通

如果map任务报错提示The Network Adapter could not establish the connection,可能是数据库防火墙的访问规则没加上集群其他节点,需要全部节点都允许访问。


【大数据开发运维解决方案】Sqoop增量同步mysql/oracle数据到hive(merge-key/append)测试文档 上一篇文章介绍了sqoop全量同步数据到hive, 本片文章将通过实验详细介绍如何增量同步数据到hive,以及sqoop job与crontab定时结合无密码登录的增量同步实现方法。
【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive 前面文章写了如何部署一套伪分布式的handoop+hive+hbase+kylin环境,也介绍了如何在这个搭建好的伪分布式环境安装配置sqoop工具以及安装完成功后简单的使用过程中出现的错误及解决办法, 接下来本篇文章详细介绍一下使用sqoop全量同步oracle/mysql数据到hive,这里实验采用oracle数据库为例,
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理 前面几篇文章详细介绍了sqoop全量增量导入数据到hive,大家可以看到我导入的数据如果有时间字段的话我都是在hive指定成了string类型,虽然这样可以处理掉时间字段在hive为空的问题,但是在kylin创建增量cube时需要指定一个时间字段来做增量,所以上面那种方式不行,这里的处理方式为把string改成timestamp类型,看实验:
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive 将关系型数据库ORACLE的数据导入到HDFS中,可以通过Sqoop、OGG来实现,相比较ORACLE GOLDENGATE,Sqoop不仅不需要复杂的安装配置,而且传输效率很高,同时也能实现增量数据同步。 本文档将在以上两个文章的基础上操作,是对第二篇文章环境的一个简单使用测试,使用过程中出现的错误亦可以验证暴漏第二篇文章安装的问题出现的错误,至于sqoop增量同步到hive请看本人在这篇文章之后写的测试文档。
【大数据开发运维解决方案】Sqoop增量同步Oracle数据到hive:merge-key再次详解 这篇文章是基于上面连接的文章继续做的拓展,上篇文章结尾说了如果一个表很大。我第一次初始化一部分最新的数据到hive表,如果没初始化进来的历史数据今天发生了变更,那merge-key的增量方式会不会报错呢?之所以会提出这个问题,是因为笔者真的有这个测试需求,接下来先对oracle端的库表数据做下修改,来模拟这种场景。
【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据 在solr页面中点击core admin add core 增加一个core。和id字段如果不做主键,需要将required= true 去掉。配置文件介绍中已经说了问题的主要原因是schema配置文件中存在。2、取消ID的required=true,修改为指定的字段即可。保存退出,至于为什么这么改,看后面遇到的问题及解决方法。1、将uniqueKey修改为你导入solr的字段。能够正常查询出来数据,简单导入完成。最后结果如上截图及配置。
阿里云EMR是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎,计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK平台。