ogg oracle到hive,OGG FOR BigData(Hive) GoldenGate 性能测试

版本信息:

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表数据格式如下

img?u=aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvNzk1MTkwLzIwMjAwNS83OTUxOTAtMjAyMDA1MjAxOTA4MTAyMzMtMTIwMDU0NjM0Ny5wbmc=

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

img?u=aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvNzk1MTkwLzIwMjAwNS83OTUxOTAtMjAyMDA1MjAxOTA4MTQwODAtNjI0OTUyMTExLnBuZw==

测试过程:

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内存不足是否只影响进程读写速率,而不影响进程的正常运行状态?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值