版本信息:

Oracle GoldenGate Command Interpreter

Version 12.2.0.1.160419 OGGCORE_12.2.0.1.0OGGBP_PLATFORMS_160430.1401

Linux, x64, 64bit (optimized), Generic on Apr 30 2016 16:21:34

Operating system character set identified as UTF-8.

hive.props

gg.handlerlist=hdfs

#Handler Properties
gg.handler.hdfs.type=hdfs
gg.handler.hdfs.rootFilePath=/hive/foola.db
gg.handler.hdfs.format=delimitedtext
gg.handler.hdfs.format.includeColumnNames=false
gg.handler.hdfs.includeTokens=false
gg.handler.hdfs.format.includeCurrentTimestamp=false
gg.handler.hdfs.format.includeTableName=false
gg.handler.hdfs.format.includeOpTimestamp=false
gg.handler.hdfs.format.includeOpType=false
gg.handler.hdfs.format.includePosition=false
gg.handler.hdfs.format.pkUpdateHandlingformat.pkUpdateHandling=update
#gg.handler.hdfs.format.updateOpKey=U gg.handler.hdfs.mode=tx
gg.handler.hdfs.format.fieldDelimiter=, #Hive Metadata Provider Properties
gg.mdp.type=hive
gg.mdp.connectionUrl=jdbc:hive2://192.2.2.10:10000/foola
gg.mdp.driverClassName=org.apache.hive.jdbc.HiveDriver gg.handler.hdfs.format.iso8601Format=false
#goldengate.userexit.timestamp=utc
goldengate.userexit.writers=javawriter
#gg.contentreplaceregex=^(\\d\\d\\d\\d-\\d\\d-\\d\\d):(\\d\\d:\\d\\d:\\d\\d:\\d\\d\\d\\d\\d\\d)$
#gg.contentreplacestring=$1 $2 javawriter.stats.display=TRUE
javawriter.stats.full=TRUE gg.log=log4j
gg.log.level=INFO gg.report.time=30sec gg.classpath=dirprm/*:/home/foola/app/hadoop-2.6.0-cdh5.7.1/share/hadoop/common/*:/home/foola/app/hadoop-2.6.0-cdh5.7.1/share/hadoop/common/lib/*:/home/foola/app/hadoop-2.6.0-cdh5.7.1/share/hadoop/hdfs/*:/home/foola/app/hadoop-2.6.0-cdh5.7.1/etc/hadoop/:/home/foola/app/hadoop-2.6.0-cdh5.7.1/share/hadoop/mapreduce/*:/home/foola/app/apache-hive-1.2.1-bin/lib/*:/home/foola/app/apache-hive-1.2.1-bin/hcatalog/share/hcatalog/*:/home/foola/app/apache-hive-1.2.1-bin/hcatalog/share/webhcat/java-client/*:/home/foola/app/apache-hive-1.2.1-bin/conf/: javawriter.bootoptions=-Xmx7168m -Xms480m -Djava.class.path=ggjava/ggjava.jar

hive.prm

REPLICAT hive
-- Trail file for this example is located in "AdapterExamples/trail" directory
-- Command to add REPLICAT
-- add replicat hive, exttrail AdapterExamples/trail/tr
TARGETDB LIBFILE libggjava.so SET property=dirprm/hive.props -- SOURCEDEFS ./dirdef/ta3test.def
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 10000
ASSUMETARGETDEFS
-- getUpdateBefores -- TRANLOGOPTIONS FETCHPARTIALLOB -- map pdborcl.foola.test1, target foola.test1, COLMAP(USEDEFAULTS);
map pdborcl.foola.ac02, target foola.ac02_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id);
map pdborcl.foola.ac02_c, target foola.ac02_c_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id);
map pdborcl.foola.test1, target foola.test1_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id);
-- map drgg.aa01c, target foola.aa01c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id);
map pdborcl.foola.ac43a1, target foola.ac43a1_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id);
map pdborcl.foola.ac44a1, target foola.ac44a1_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV('GGHEADER','COMMITTIMESTAMP'),sync_time=@DATENOW()), KEYCOLS(source_id); -- map pdborcl.foola.ac43a1, target foola.ac43a1_c, COLMAP(USEDEFAULTS,source_id='1',chg_type=@GETENV('GGHEADER','OPTYPE'),src_time=@GETENV("GGHEADER", "COMMITTIMESTAMP"),sync_time=@DATENOW());

场景

数据库对单表AC02执行更新(总更新数目:161万+),AC02表数据格式如下

队列文件大小(单位:KB):

测试过程:

1、对AC02表进行5W数据更新,此时hive.props中内存参数配置为

javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar

数据可以正常快速的接收完成

2、对AC02表进行15W数据更新,仍采用上述内存配置,此时进程再获取到13w数据左右时,开始出现卡顿,并且数据接收很慢,通过stats hive, total方式查看,2min仅增加64行数据的,最后进程状态发生改变,由RUNNING变为ABENDED。修改内存配置

javawriter.bootoptions=-Xmx1024m -Xms128m -Djava.class.path=ggjava/ggjava.jar

此时再重启进程,发现数据可以正常快速的接收,且hive中不存在重复数据。

3、对AC02表进程161W数据更新,内存参数配置

javawriter.bootoptions=-Xmx4096m -Xms256m -Djava.class.path=ggjava/ggjava.jar

重启进程,更新数据库数据并提交,此时目标端进程再获取80w数据之前进程正常,80w之后数据读写明显减慢,且使用stats 方式查看会出现命令超时的错误提示:ERROR:Send Message……,过一段时间后,进程状态直接变为ABENDED。修改内存参数值

javawriter.bootoptions=-Xmx7168m -Xms480m -Djava.class.path=ggjava/ggjava.jar

重启进程,数据在150w之前加载正常且速度较快,但150W之后读写速度减慢,最后读写可以正常完成,但耗时较久。

需要解决的问题

源端有21个地市的社保业务数据库,目标端则只有一个Hive,这样目标端需要几百个进程来接收源端的传输队列文件。而物理主机内存有限,不可能对每个进程都分配较大的内存配置,一旦由于ogg进程内存不足造成目标端进程宕掉,在后期运维时会出现较大问题,且对我们当前系统的数据清洗产生较大影响,所以需要解决问题有:

1、Ogg进程的内存优化配置?

2、Ogg内存不足是否只影响进程读写速率,而不影响进程的正常运行状态?

OGG FOR BigData(Hive) GoldenGate 性能测试的更多相关文章

  1. OGG FOR BIGDATA 安装(修正)

    参考:http://docs.oracle.com/goldengate/bd1221/gg-bd/GADBD/toc.htm 一.环境介绍 源:centos6.5 oracl e 11.20.4   ...

  2. OGG For Bigdata To Kafka同步问题处理

    一.问题报错 -- :: ERROR OGG- Java or JNI exception: oracle.goldengate.util.GGException: Error detected ha ...

  3. oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate

    oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate --继昨天的测试,这一篇实施单实例双向复制(完全重新搭建) --环境不变 db1,db2( ...

  4. goldengate for big data 12.3发布

    主要新增特性:通用JDBC目标端:支持Amazon Redshift & IBM Netezza Oracle GoldenGate for Big Data 12.3现在支持通用的JDBC目 ...

  5. GoldenGate for Java Adapter介绍一(原理篇)

    前言 Oracle Goldengate在很早前就推出了一个for java的版本,主要目的是方便把关系型数据实时写入到不支持的目标端,如JMS或Redis等key value数据库.在Hadoop刚 ...

  6. GoldenGate实时投递数据到大数据平台(3)- Apache Flume

    Apache Flume Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合,最后存储到一个中心化数据存储系统中,方便进行数据分析.事实上flume也可 ...

  7. Oracle GoldenGate for Big Data 12.2.0.1的新特性

    ogg for bigdata 12.2已经发布,新增有如下特性:支持java replicat进程OGG12.2中开发了基于java的replicat模式,以前的版本是基于extract进程中使用u ...

  8. OGG 18.1 for mysql远程捕获测试

    Ogg18.1 remote capture要求mysql为5.7版本,只能从linux远程捕获mysql on windows or linux,且不支持DDL捕获.支持远程mysql为commun ...

  9. 基于Docker的GoldenGate部署

    前言 Docker最近几年异常火爆,主要是因为其方便.快捷.轻量,相对于VM,它不需要占用太多资源,随时可以创建.删除,或在已有image上添加一些软件,再制作成另一个模板image供日后使用.Doc ...

随机推荐

  1. [Abp vNext 入坑分享] - 4.JWT授权的接入

    一.感想 在写这一系列文章之前,本来以为写这个之前已经搭建好的框架描述会比较简单,但是慢慢写下来才发现.写这个真的不简单额,本来以为图文一起,一个晚上应该能输出一篇吧...结果:现实真的骨感,一个星期 ...

  2. XSS跨站脚本攻击学习笔记(pikachu)

    颓废了几天,该好好努力了. XSS概述 XSS漏洞是web漏洞中危害较大的漏洞,是一种发生在web前端的漏洞,所以危害的对象也主要是前端用户,XSS可以用来进行钓鱼攻击,前端js挖矿,获取用户cook ...

  3. web 之 tomcat 8.5 和9.0如何进入manager?

    tomcat 8.5 和9.0如何进入manager? 第一步找到tomcat-user.xml文件 第二步添加如下代码 <role rolename="manager-gui&quo ...

  4. ASP.NET MVC使用log4net

    本文介绍如何在ASP.NET MVC中使用log4net来记录日志文件. 参考链接:https://www.codeproject.com/Articles/823247/How-to-use-Apa ...

  5. python(MD5 单向加密)

    import hashlib m3 = hashlib.md5() #定义加密方式 src = bytes(", encoding="utf-8") #定义一个需要加密的 ...

  6. [转载] IE8+兼容小结

    本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...

  7. 数据库——数据库SQL语句大全,最常用的SQL语句

    检索数据 检索单个列: SELECT pname FROM product 检索多个列: SELECT pname,market_price,is_hot FROM product 检索所有列: SE ...

  8. JDK基本库概述

    看脚下,不断行,莫存顺逆. 剖析java的哪些源码 目前主要是java基本库的一些源码的分析,jvm工具的使用等等,后续可能还会结合hotspot源码来分析jvm原理,当然,这是一个比较高级的主题,根 ...

  9. react-redux的理解

    react-redux是辅助redux的,我们正常使用redux是很麻烦的,需要在每个组件中去监听数据变化,执行数据更新等 但是通过react-redux,我们可以简化组件使用公共数据的操作, rea ...

  10. qt creator源码全方面分析(4-4)

    目录 统计接口实现 统计接口实现 我们知道,插件架构必不可少的是定义接口类,即抽象基类,描述用户需要自定义实现的内容.此外,一般还有一个管理器类,对接口类的所有实现类进行管理,并调用其中的接口进行.源 ...