ogg_for_bigdata(oracle日志通过ogg for bigdata 导入hdfs)

ogg for bigdata(oracle日志通过ogg for bigdata 导入hdfs)

1、环境准备

192.168.23.171 node01 Centos7

192.168.23.172 node02 Centos7

192.168.23.173 node03 Centos7

192.168.23.174 node04 Centos7

为了方便,四台主机均已关闭防火墙

其中node01,node02,node03安装hadoop,node04安装Oracle11 xe

ogg 源端装在node04,ogg目标端装在node02

2、Oracle XE 11安装

通过Oracle官网下载Oracle Xe 11 安装包,并上传到node04 /opt下

cd /opt
# 解压压缩文件
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
# 添加oracle用户
useradd oracle
groupadd oinstall
usermod -g oinstall oracle
# 更改解压好的文件夹Disk1的权限
chown -R oracle:oinstall ./Disk1
# 安装依赖包
yum install libaio libaio-devel bc man net-tools -y
# 分配空间
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
mkswap /swapfile
cp /etc/fstab /etc/fstab.backup_$(date +%N)
echo '/swapfile swap swap defaults 0 0' /etc/fstab
chown oracle:oinstall /swapfile
chmod 0600 /swapfile
swapon -a
swapon -s
# 执行oracle安装
cd Disk1
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm.zip
# 执行完成后会显示You must run /etc/init.d/oracle-xe configure' as the root user to configure the database,按照提示信息进行执行
/etc/init.d/oracle-xe configure
# 这里会让设置system的密码,另外注意设置started on boot,开机启动
# 到此安装完成

配置Oracle的环境变量

vi /etc/profile

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME
ORACLE_SID=XE; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

source /etc/profile

环境设置完成后切换账户oracle,登录oracle

su - oracle
sqlplus / as sysdba

在这里插入图片描述

3、hadoop安装

hadoop用的是hadoop 2.7.7

将下载好的hadoop安装包传入node01 /opt目录下

cd /opt
tar -zxvf hadoop-2.7.7.tar.gz
cd /opt/hadoop-2.7.7/etc/hadoop/
vi hadoop-env.sh
# 找到JAVA_HOME设置位置,将其更改为你的jdk路径

在这里插入图片描述

vi core-site.xml
# 在configuration之间插入以下内容
#-----------------
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://node01:9000</value>
</property>
	<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/data/hadoopdata</value>
</property>
#-----------------
vi hdfs-site.xml
# 插入方式如上
#-----------------
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
#-----------------
vi yarn-site.xml
# 插入方式同上
#-----------------
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.address</name>
        <value>node01:18040</value>
</property>
<property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>node01:18030</value>
</property>
<property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>node01:18025</value>
</property>
<property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>node01:18141</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>node01:18088</value>
</property>
#-----------------
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
# 插入方式同上
#-----------------
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
#-----------------
vi slaves
# 删除原来的localhost,插入以下内容
# 插入方式同上
#-----------------

node01
node02
node03

#-----------------

配置环境变量

vi /etc/profile

export HADOOP_HOME=/opt/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

将node01下的hadoop-2.7.7文件,/etc/profile复制到node02.node03

scp -r /opt/hadoop-2.7.7 node02:/opt
scp -r /opt/hadoop-2.7.7 node03:/opt
scp /etc/profile node02:/etc
scp /etc/profile node03:/etc

并且在node02和node03上加载环境变量且创建hdfs 文件夹

source /etc/profile
mkdir -p /opt/data/hadoopdata

格式化文件系统,只在node01做即可

hadoop namenode -format

启动hadoop集群

start-all.sh

# 查看是否启动成功

jps

hdfs web页面查看

在这里插入图片描述

关闭hadoop集群

stop-all.sh

4、安装源端ogg

ogg源端在node04上安装,node04的oracle用户已经添加

这里源端ogg采用的版本为12.3.0.1

在这里插入图片描述

将tar包上传到/opt下

切换用户为oracle

su - oracle
tar -xvf ggs_linux_x64_DB2400_64bit.tar
cd /opt/fbo_ggs_Linux_x64_shiphome/Disk1/response
vi oggcore.rsp

修改

INSTALL_OPTION=ORA11g
SOFTWARE_LOCATION=/opt/fbo_ggs_Linux_x64_shiphome/Disk1/ogg
START_MANAGER=false

其它不用管,保存退出

cd ..
# 执行静默安装
./runInstaller -silent -nowait -responseFile response/oggcore.rsp
# 当看到Successfully Setup Software 完成安装

进入安装目录

cd /opt/fbo_ggs_Linux_x64_shiphome/Disk1/ogg
ggsci

5、安装目标端ogg for bigdata

ogg for bigdata同样采用12.3.0.1,这里也做过测试,源端的ogg和ogg for bigdata的版本不一致也是没有问题的但是一些配置项可能发生了变化,记得查看官网具体版本的配置内容。

ogg for bigdata 安装在node02

# 创建ogg for bigdata安装目录
mkdir -p /opt/ogg
# 创建用户和用户组
useradd oracle
groupadd oinstall
usermod -g oinstall oracle
# 更改安装目录属性
chmod -R 755 /opt/ogg
chown -R oracle:oinstall /opt/ogg
tar -zxvf /opt/OGG_BigData_Linux_x64_12.3.2.1.1.tar -C /opt/ogg

添加环境变量

export JRE_HOME=/opt/jdk1.8.0_141/jre
export PATH=$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OGG_HOME:$JRE_HOME/lib/amd64/libjsig.so:$JRE_HOME/lib/amd64/server/libjvm.so:$JRE_HOME/lib/amd64/server:$JRE_HOME/lib/amd64
source /etc/profile
cd /opt/ogg
ggsci

6、Oracle设置

进入Node02

su - oracle
sqlplus / as sysdba
# 查看当前是否为归档模式
archive log list
# 立即关闭数据库
shutdown immediate
# 启动实例但是不打开
startup mount
# 更改数据库为归档模式
alter database archivelog
# 打开数据库
alter database open
# 启用自动归档
alter system archive log start
# Oracle打开日志
alter database force logging;
alter database add supplemental log data;
# 创建ogg复制用户和建表测试用户这里用一个test_bigdata
create tablespace oggtbs datafile '/u01/app/oracle/oradata/orcl/oggtbs01.dbf' size 1000M autoextend on;
# create user test_bigdata identified by test_bigdata default tablespace oggtbs;
# 赋予dba权限
grant dba to test_bigdata;
# 连接test_bigdata
conn test_bigdata/test_bigdata

7、ogg源端配置

OGG初始化

su - oracle

进入ogg主目录执行ggsci

在这里插入图片描述

假定抽取的表为TEST_BIGDATA.STU_INFO

配置管理器mgr

dblogin userid test_bigdata password test_bigdata

edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

PORT即mgr的默认监听端口;DYNAMICPORTLIST动态端口列表,当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个;AUTORESTART重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟;PURGEOLDEXTRACTS即TRAIL文件的定期清理

start mgr

启动管理器

info mgr

查看管理器运行情况

添加要复制日志的表

add trandata test_bigdata.stu_info

配置抽取进程

edit params T_BD_ET

extract T_BD_T
dynamicresolution
SETENV (ORACLE_SID = "orcl")
SETENV (NLS_LANG = "american_america.AL32UTF8")
userid test_bigdata,password test_bigdata
NOCOMPRESSUPDATES
NOCOMPRESSDELETES
DBOPTIONS ALLOWNOLOGGING
exttrail /odc/test_bigdata/tr
table test_bigdata.STU_INFO fetchools(*);

extract进程名称

dynamicresolution动态解析

SETENV设置环境变量,这里分别设置了Oracle数据库以及字符集;

userid test_bigdata,password bigdata

NOCOMPRESSUPDATES 设置update保留所有字段

NOCOMPRESSDELETES 设置delte保留所有字段

tetchools(*) 所有字段进行传递

exttrail定义trail文件的保存位置以及文件名,注意这里文件名只能是2个字母,其余部分OGG会补齐;

table即复制表的表明,支持*通配,必须以;结尾
接下来在OGG命令行执行如下命令添加extract进程

添加抽取进程从当前日志位置抽取

add extract T_BD_ET,tranlog,begin now

添加抽取进程和trail文件的绑定

add exttrail /odc/test_bigdata/tr,extract T_BD_T
info params T_BD_ET

配置投递进程

edit params T_BD_P

extract T_BD_P
passthru
dynamicresolution
DBOPTIONS ALLOWNOLOGGING
userid test_bigdata,password test_bigdata
rmthost ${target_ip} mgrport 7809
rmttrail /opt/ogg/dirdat/tc
table test_bigdata.STU_INFO;

rmthost 目的端ip

rmttrail 远程投递的目录

将本地trail文件和目标端的trail文件绑定到pump进程

add extract T_BD_P,exttrailsource /odc/test_bigdata/tr

add rmttrail /opt/ogg/dirdata/tr,extract T_BD_P

info T_BD_P

配置define文件

Oracle与mysql,hadoop集群之间传输可以定义为异构数据类型的传输,故需要定义表之间的关系映射,在OGG命令执行

edit params test_bigdata

defsfile /odc/test_bigdata/test_bigdata
userid test_bigdata,password test_bigdata
table test_bigdata.STU_INFO;

在ogg主目录下执行

./defgen paramfile dirprm/test_bigdata.prm

完成之后会在/odc/test_bigdata下生成test_bigdata文件,将这个文件拷贝到目标端ogg执行的dirdef目录即可,注意文件权限

8、目标端的配置

su - oracle

OGG初始化

同源端初始化一致

配置管理端的mgr

edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

配置checkpoint

edit params ./GLOBALS

checkpointtable test_bigdata.checkpoint

配置relication进程

edit params r2hdfs

REPLICAT r2hdfs
sourcedefs /data/ogg/app/dirdef/test_bigdata
TARGETDB LIBFILE libggjava.so SET property=/opt/ogg/dirprm/hdfs.props
REPORTCOUNT EVERY 1 MINUTES, RATE 
GROUPTRANSOPS 10000
MAP test_bigdata.stu_info, TARGET test_bigdata.stu_info

将文件与复制进程绑定

add replicat r2hdfs exttrail /opt/og/dirdat/tr,checkpointtable test_bigdata.checkpoint

在dirprm目录中编辑hdfs.props(这部分配置要根据ogg for bigdata版本去官网查看具体配置,配置因版本而变化)

vi hdfs.props

gg.handlerlist=hdfs
gg.handler.hdfs.type=hdfs
gg.handler.hdfs.mode=tx
gg.handler.hdfs.includeTokens=false
gg.handler.hdfs.maxFileSize=1g
gg.handler.hdfs.pathMappingTemplate=hdfs://xxxx/xxxx/${schemaName}/${tableName}/${currentTimestamp[yyyyMMdd]}
gg.handler.hdfs.fileRollInterval=0
gg.handler.hdfs.inactivityRollInterval=0
gg.handler.hdfs.partitionByTable=true
gg.handler.hdfs.rollOnMetadataChange=true
gg.handler.hdfs.authType=none
gg.handler.hdfs.format=delimitedtext
gg.classpath=/opt/hadoop-2.7.7/etc/hadoop:/opt/hadoop-2.7.7/share/hadoop/common/lib/*:/opt/hadoop-2.7.7/share/hadoop/common/*:/opt/hadoop-2.7.7/share/hadoop/hdfs/*:/opt/hadoop-2.7.7/share/hadoop/hdfs/lib/*

gg.classpath至少要有以下内容

Hadoop_Home/share/hadoop/common/lib/*
Hadoop_Home/share/hadoop/common/*
Hadoop_Home/share/hadoop/hdfs/lib/*
Hadoop_Home/share/hadoop/hdfs/*

创建hdfs目录hdfs://xxxx/xxxx 分配相应的权限

9、启动测试

按照下面顺序依次启动

1、源端 start mgr

2、源端 start T_BD_ET

3、源端 start T_BD_P

info all 查看启动情况

在这里插入图片描述

4、目标端 start mgr

5、目的端 start r2hdfs

info all
在这里插入图片描述

进入 node01 sqlplus

sqlplus / as sysdba

conn test_bigdata/test_bigdata

create table stu_info(id int,name varchar(255),age int, primary key(id));

insert into stu_info values (1,‘xxy’,25);

update stu_info set name=‘XXY’ where id =1;

delete stu_info where id=1;

查看hdfs文件
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值