百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

从零开始理解大数据架构之ETL数据采集中台DBus

ccwgpt 2024-10-31 12:25 42 浏览 0 评论

在开始今天的话题之前首先分享一下,我们的开发环境的大数据集群规划图,为上期的话题收尾。


规划原则只需要将组件服务和计算服务节点分离,这样就可以确保在计算过程中不出问题。

接下来我们来详细的聊聊ETL中的E,数据提取中台DBus,在上篇文章中,我已经讲解了,这个采集数据中台产生的背景及整体架构,以及安装部署和使用

1.DBus架构与工作原理

1.1贴源数据采集

DBUS源端数据采集大体来说分为两部分:

a.读取RDBMS增量日志的方式来实时获取增量数据日志,并支持全量拉取;

b.基于logtash,fume,Filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出;

以下为具体实现原理:

主要模块如下:

  • 日志抓取模块:从RDBMS的备库中读取增量日志,并实时同步到kafka中;
  • 增量转换模块:将增量数据实时转换为UMS数据,处理schema变更,脱敏等;
  • 全量抽取程序:将全量数据从RDBMS备库拉取并转换为UMS数据;
  • 日志算子处理模块:将来自不同抓取端的日志数据按照算子规则进行结构化处理;
  • 心跳监控模块:对于RDMS类源,定时向源端发送心跳数据,并在末端进行监控,发送预警通知;
  • 对于日志类,直接在末端监控预警。
  • web管理模块:管理所有相关模块。

1.2 多租户数据分发

对于不同租户对不同源端数据有不同访问权限、脱敏需求的情形,需要引入Router分发模块,将源端貼源数据,根据配置好的权限、用户有权获取的源端表、不同脱敏规则等,分发到分配给租户的

Topic。这一级的引入,在DBUS管理系统中,涉及到用户管理、Sink管理、资源分配、脱敏配置等。不同项目消费分配给他的topic。


2. 主要功能

  • 无侵入方式接入多种数据源: 业务系统无需任何修改,以无侵入性读取数据库系统的日志获得增

量数据实时变化。目前RDBMS支持mysql,oracle数据源(Oracle数据源请参考Oracle相关协

议), 日志方面支持基于logstash,flflume和fifilebeat的多种数据日志抽取方案。

  • 海量数据实时传输: 使用基于Storm的流式计算框架,秒级延时,整体无单点保证高可用性。
  • 多租户支持: 提供用户管理、资源分配、Topology管理、租户表管理等丰富的功能,可根据需

求,为不同租户分配不同的源端表数据访问权限,应用不同的脱敏规则,从而实现多租户资源隔

离、差异化数据安全




  • 感知源端schema变更: 当源端发生schema变更时,能自动感知schema变化,调整UMS版本

号,并通过Kafka消息和邮件通知下游


  • 数据实时脱敏: 可根据需求对指定列数据进行实时脱敏。脱敏策略包括:直接替换、MD5、

murmur等脱敏算法,脱敏加盐,正则表达式替换等。支持用户开发jar包实现DBUS未覆盖的个性

化脱敏策略。


  • 初始化加载: 支持高效的初始化加载和重新加载,支持任意指定输出topic,灵活应对客户需求。


  • 统一标准化消息传输协议: 使用统一的UMS(JSON格式)消息schema格式输出便于消费,提供数

据线级ums_id保证数据顺序性,输出insert,Update(before/after),Delete event数据。


  • 可靠多路消息订阅分发: 使用Kafka存储和传递消息保证可靠性和便捷的多用户订阅
  • 支持分区表/系列表数据汇集: 支持分区表的数据汇集到一个“逻辑表” 。也可将用户自定义的系列

表数据汇集到一个“逻辑表“。例:


  • 实时监控&预警: 可视化监控系统能随时查看各数据线实时流量和延时状况;当数据线发生异常

时,根据配置策略自动发邮件或短信通知相关负责人


3.DBus生产环境部署

3.1 准备工作

3.1.1 软件依赖

DBus依赖如下外部组件:

3.1.2 硬件及部署规划

  • 硬件选择

基于公司HDP集群大数据集群8台机器node01-node08

  • 软件选择

Ambari托管】:DBus依赖的很多组件HDP3.1已经包含了,如果使用HDP包含的软件就叫做

Ambari托管(使用Ambari部署和管理),只不过需要注意版本问题。

跟Ambari共用】:有些软件可以跟Ambari公用,比如Ambari和DBus都需要用MySQL和Grafana,

但是这俩又不属于HDP软件栈,只不过需要注意版本问题。

独立部署】:还有部分依赖软件需要独立部署。

部分软件直接使用HDP自带的组件,布署如下:


3.1.3 补充安装软件

DBus会用到zip,所以在各节点:

sudo yum -y install zip

3.1.4 版本兼容性问题

在正式部署一直我们要解决一个问题:DBus依赖的部分组件HDP正好有,但是版本不一样,只有先解

决版本兼容性问题才能使用HDP的组件,否则就只能单独安装。

一个比较好的方案是基于HDP自带软件版本重新编译DBus,特殊情况下还可能需要改源代码。

通过《3.1.2 硬件及部署规划》中的表我们看到DBus有两个依赖组件的版本需要升级:

Kafka0.10=>2.0.0

Storm1.0.2=>1.2.1

3.1.4.1 编译DBus源代码

首先我们了解下编译DBus,请跳转到《第6章 编译DBus源代码》查看。

3.1.4.2 匹配HDP版本重新编译源代码

上小节我们知道了怎么编译DBus源代码,这一步我们只需要把对应软件的版本升级,然后编译即可。

项目根目录下的pom.xml修改如下内容:



3.2 基础软件安装

在安装Dbus前先安装Ambari+HDP3.1大数据集群及上面罗列的各个组件

3.3 DBus安装配置

3.3.2 下载DBus-Keeper

将我们通过源代码编译好的包deployer.zip上传到node01 并解压 unzip deployer.zip。

3.3.3 Nginx配置

复制deployer下的nginx.conf到Nginx的配置目录替换默认配置文件:

复制deployer下的build.zip到Nginx安装目录的html下解压(unzip build.zip):

重启Nginx:

3.3.4 修改Dbus-Keeper启动配置

修改/home/hadoop/app/dbus/dbuskeeper_web/confifig.properties,提供dbus-keeper初始化启动

参数:

需要修改的是如下配置项( 一定要根据自己实际情况来改,不要死记):

mkdir -p /home/hadoop/app/dbus

cd /home/hadoop/app/dbus

mv ~/deployer.zip .

unzip deployer.zip

# ZK地址换成我们自己安装zk,在node01上,端口2181

zk.str=node01:2181

# mysql管理库相关配置,其中mysql驱动可以不改

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://node01:3306/dbusmgr?characterEncoding=utf-8

spring.datasource.username=dbusmgr

spring.datasource.password=dbusmgr%123

#kafka地址换成我们自己的

bootstrap.servers=node02:6667

bootstrap.servers.version=2.0.0

#influxdb地址:influxdb_url_web(外网地址),influxdb_url_dbus(内网地址),不区分内外网相同

即可

influxdb_url_web=http://node03:8086

influxdb_url_dbus=http://node03:8086


3.3.5 启动/停止Dbus-Keeper

3.3.6 初始化配置

启动之后等待1分钟,等系统完全启动后登录web: http://node03:8080 ,首次登陆会自动跳转到初始

化页面,如果没有自动进入请地址栏手动输入 http://node03:8080/login /init地址进入,根据页面提示

填写相关信息:

如上图所示,我们在/home/hadoop/app/dbus/dbuskeeper_web/confifig.properties配置的基本一些

配置信息已经带过来了,接下来先配置Grafana(如果基本配置没带过来,就多刷新几次):

然后是Storm配置,如下图:

nginx.ip=node03

nginx.port=8080

初始化没有问题会跳转至登录页, 输入用户名密码即可开启DBus之旅。 管理员初始账号/密码:

admin/12345678



3.3.7 检查heartbeat

根据DBus-Keeper的初始化配置,它已经在node02和node03的/home/hadoop/app/dbus/下安装了

heartbeat,去检查下heartbeat进程在不在,如果不在的话用如下命令手工启动:

cd /home/hadoop/app/dbus/dbus-heartbeat-0.5.0;

nohup ./heartbeat.sh >/dev/null 2>&1 &

通过DBus-Keeper界面可以检查系统状态:


3.3.8 检查表是否创建成功

应该创建29张表,以前2张可能会创建不成功,需要手工创建:

CREATE TABLE `t_data_tables` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`ds_id` int(11) unsigned NOT NULL COMMENT 't_dbus_datasource 表ID',

`schema_id` int(11) unsigned NOT NULL COMMENT 't_tab_schema 表ID',

`schema_name` varchar(64) DEFAULT NULL,

`table_name` varchar(64) NOT NULL DEFAULT '' COMMENT '表名',

`table_name_alias` varchar(64) NOT NULL DEFAULT '' COMMENT '别名',

`physical_table_regex` varchar(96) DEFAULT NULL,

`output_topic` varchar(96) DEFAULT '' COMMENT 'kafka_topic',

`ver_id` int(11) unsigned DEFAULT NULL COMMENT '当前使用的meta版本ID',

`status` varchar(32) NOT NULL DEFAULT 'abort' COMMENT

'ok,abort,inactive,waiting\r\nok:正常使用;abort:需要抛弃该表的数据;waiting:等待拉全

量;inactive:不可用 ',

`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

CURRENT_TIMESTAMP COMMENT '创建时间',

`meta_change_flg` int(1) DEFAULT '0' COMMENT 'meta变更标识,初始值为:0,表示代表没

有发生变更,1:代表meta发生变更。该字段目前mysql appender模块使用。',

`batch_id` int(11) DEFAULT '0' COMMENT '批次ID,用来标记拉全量的批次,每次拉全量会

++,增量只使用该字段并不修改',

`ver_change_history` varchar(128) DEFAULT NULL,

`ver_change_notice_flg` int(1) NOT NULL DEFAULT '0',

`output_before_update_flg` int(1) NOT NULL DEFAULT '0',

`description` varchar(128) DEFAULT NULL,

`fullpull_col` varchar(255) DEFAULT '' COMMENT '全量分片列:配置column名称',

`fullpull_split_shard_size` varchar(255) DEFAULT '' COMMENT '全量分片大小配置:配

置-1代表不分片',

`fullpull_split_style` varchar(255) DEFAULT '' COMMENT '全量分片类型:MD5',

`is_open` int(1) DEFAULT '0' COMMENT 'mongo是否展开节点,0不展开,1一级展开',

`is_auto_complete` tinyint(4) DEFAULT '0' COMMENT 'mongoDB的表是否补全数据;如果开

启,增量中更新操作会回查并补全数据',

PRIMARY KEY (`id`),

UNIQUE KEY `idx_sid_tabname` (`schema_id`,`table_name`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sudo chmod o+w /usr/hdp/3.1.4.0-315/storm/

好了,今天的分享就先到这,如果是使用中遇到什么问题,可以与我交流,我将竭力为你解决,让我一起成长,

下期预告:DBus的深入使用及MySQL数据源接入DBus

记得评论,转发我,谢谢。

相关推荐

谷歌正在为Play商店进行Material Design改造

谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...

企业网站免费搭建,定制化建站CMS系统

科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...

您需要的 11 个免费 Chrome 扩展程序

来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...

户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案

  在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。  从其结构设计来看,矩形框架虽主要为适配紧凑空...

一个基于NetCore开发的前后端分离CMS系统

今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...

本地Docker部署ZFile网盘打造个人云存储

前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...

pcfcms企业建站系统 免费+开源的企业内容管理系统

项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...

【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...

java开源cms管理系统框架PublicCMS后台管理系统

一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...

一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!

一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...

《搜神札记》:不应磨灭的惊奇(小说《搜神记》)

□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...

《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)

“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...

《助人技术》第一章助人引论内容框架

第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...

AI助手重构读后感写作流程:从提纲到完整性思考的转换

大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...

图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)

做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...

取消回复欢迎 发表评论: