版本信息:

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. 8、Flink Table API & Flink Sql API

    一.概述 上图是flink的分层模型,Table API 和 SQL 处于最顶端,是 Flink 提供的高级 API 操作.Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时 ...

  2. 安装和使用redis

    我现在只是在window上使用redis在其他平台上暂时没有操作过,如果你有其他好的意见欢迎提出来! 安装redis具体可查看:http://www.runoob.com/redis/redis-in ...

  3. python学习10字典

    '''''''''字典(Dict)是python语言的一个最大的特征1.定义:是可变的无序集合,以键值对为基本元素,可以存储各种数据类型2.表示:{} 列表:[] 元组 () 字符串 ‘’ “” ‘‘ ...

  4. Testing for the End of a File (Windows 的异步 IO)

    The ReadFile function checks for the end-of-file condition (EOF) differently for synchronous and asy ...

  5. fail-safe fail-fast知多少

    目录 简介 Fail-fast Iterator Fail-fast 的原理 Fail-safe Iterator 总结 fail-safe fail-fast知多少 简介 我们在使用集合类的时候,通 ...

  6. Docker安装MySql完整教程、实操

    docker:官网 docker:镜像官网:        镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pull redis 默认拉取最新的版本(指定版本:docker p ...

  7. springboot中Redis的Lettuce客户端和jedis客户端

    1.引入客户端依赖 <!--jedis客户端依赖--> <dependency> <groupId>redis.clients</groupId> &l ...

  8. java 接口实现关系下的多态

    2019独角兽企业重金招聘Python工程师标准>>> 多态: 父类的引用类型变量指向了子类的对象 或者 是接口类型的引用类型变量指向了接口实现类的对象. 实现关系下的多态:    ...

  9. 移动App性能测评与优化1.4.4 多进程应用

    1.4.4 多进程应用 根据上一节中的描述,当一个进程结束后,它所占用的共享库内存将会被其他仍然使用该共享库的进程所分担,共享库消耗的物理内存并不会减少.实际上,对于所有共享使用了这个库的应用,Pss ...

  10. centos6.X修改ssh默认端口号

    先查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768    61000 新ss ...