在开始今天的话题之前首先分享一下,我们的开发环境的大数据集群规划图,为上期的话题收尾。
规划原则只需要将组件服务和计算服务节点分离,这样就可以确保在计算过程中不出问题。
接下来我们来详细的聊聊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
记得评论,转发我,谢谢。
商业智能
商业智能,又称商务智能,英文为Business Intelligence,简写为BI。
商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理(OLAP)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP和数据挖掘等技术的综合运用。
商业智能的概念于1996年最早由加特纳集团(Gartner Group)提出,加特纳集团将商业智能定义为:商业智能描述了一系列的概念和方法,通过应用基于事实的支持系统来辅助商业决策的制定。商业智能技术提供使企业迅速分析数据的技术和方法,包括收集、管理和分析数据,将这些数据转化为有用的信息,然后分发到企业各处。
目前,学术界对商业智能的定义并不统一。商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商资料及来自企业所处行业和竞争对手的数据,以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理(OLAP)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP和数据挖掘等技术的综合运用。
可以认为,商业智能是对商业信息的搜集、管理和分析过程,目的是使企业的各级决策者获得知识或洞察力(insight),促使他们做出对企业更有利的决策。商业智能一般由数据仓库、联机分析处理、数据挖掘、数据备份和恢复等部分组成。商业智能的实现涉及到软件、硬件、咨询服务及应用,其基本体系结构包括数据仓库、联机分析处理和数据挖掘三个部分。
因此,把商业智能看成是一种解决方案应该比较恰当。商业智能的关键是从许多来自不同的企业运作系统的数据中提取出有用的数据并进行清理,以保证数据的正确性,然后经过抽取(Extraction)、转换(Transformation)和装载(Load),即ETL过程,合并到一个企业级的数据仓库里,从而得到企业数据的一个全局视图,在此基础上利用合适的查询和分析工具、数据挖掘工具、OLAP工具等对其进行分析和处理(这时信息变为辅助决策的知识),最后将知识呈现给管理者,为管理者的决策过程提供支持。
提供商业智能解决方案的著名IT厂商包括微软、IBM、Oracle、Microstrategy、Business Objects、Cognos、SAS等。
具体可参照http://baike.baidu.com/view/21020.htm
商业智能,又称商务智能,英文为business intelligence,简写为bi。 商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理(olap)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、olap和数据挖掘等技术的综合运用。 商业智能的概念于1996年最早由加特纳集团(gartner group)提出,加特纳集团将商业智能定义为:商业智能描述了一系列的概念和方法,通过应用基于事实的支持系统来辅助商业决策的制定。商业智能技术提供使企业迅速分析数据的技术和方法,包括收集、管理和分析数据,将这些数据转化为有用的信息,然后分发到企业各处。 目前,学术界对商业智能的定义并不统一。商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商资料及来自企业所处行业和竞争对手的数据,以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理(olap)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、olap和数据挖掘等技术的综合运用。 可以认为,商业智能是对商业信息的搜集、管理和分析过程,目的是使企业的各级决策者获得知识或洞察力(insight),促使他们做出对企业更有利的决策。商业智能一般由数据仓库、联机分析处理、数据挖掘、数据备份和恢复等部分组成。商业智能的实现涉及到软件、硬件、咨询服务及应用,其基本体系结构包括数据仓库、联机分析处理和数据挖掘三个部分。 因此,把商业智能看成是一种解决方案应该比较恰当。商业智能的关键是从许多来自不同的企业运作系统的数据中提取出有用的数据并进行清理,以保证数据的正确性,然后经过抽取(extraction)、转换(transformation)和装载(load),即etl过程,合并到一个企业级的数据仓库里,从而得到企业数据的一个全局视图,在此基础上利用合适的查询和分析工具、数据挖掘工具、olap工具等对其进行分析和处理(这时信息变为辅助决策的知识),最后将知识呈现给管理者,为管理者的决策过程提供支持。
1、DataPipeline
DataP声再ipeline 隶属于精伤节北京数见科技有限公司,是一家企业级批流一体数据确径样类品复于沉快觉融合服务商和解决方案提供商,国内实时数据管道技术的倡导者。
通过平台和技术为企业客户解决数据准备过程中的各种痛点,帮助客户更敏捷、更高效、更简单地刻第增鸡乙源实现复杂异构数据源到目的地的实时数据融合和数据管理等综合服务。
从而打破传统 ETL 给客户灵活数据应用带来的束缚,让数据准备过程不再成为数据消费的瓶颈。
2、Kettle
Kettle真路胡固飞程喜采绿台培是一款国外开源的ETL工具,纯java编写,可以在Windows、名阶说呢是殖坏部安印分Linux、Unix上运行,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
3、Talend
Talend 是数据集成解决方案领域的领袖企业,为公共云和私有云以及本地环境提供一体化行连停的数据集成平台。Tal门诗限end的使命是致力于帮助客户优化数据,提高数据可靠性,把企业数据更快地转化为商业价值。
以此为使命,Talend的解决方案将数据从传形年环统基础架构中解放出来,提高客户在业务中的洞察力,让客户更早实现业务价值。
4、Info写针哪车粒卫rmatica
Informa数查已谈冲是既协阻曲动tica是全球领先的数据管理软件提供商。
在如下Gartner魔力象限选害派位于领导者地位:数据集成工具魔力象限、数据质量工具魔力象限、元数据管理解决方案够魔力象限、主数据管理解决方案魔力象限、企业级集成平台即服务(EiPaaS)魔力象缩事顺北煤歌同正促限。
5、DataStage
IBM® InfoSphere™ Information Server 是一种数据集成软件平台,能够帮助企业从散布在各个系统中的复杂异终笔案苦良告关构信息获得更多价值。InfoSphere Information Server提供了一个统一的平台, 使公司能够了解、清理、变换和交付值得信赖且上下文丰富的信息。
IBM® InfoSphere™ DataStage® and QualityStage™ 提供了图形框架,您可使用该框架来设计和运行用于变换和清理、加载数据的作业。
参考资料:DataPipeline官网-关于我们
参考资料:百度百科-Kettle
参考资料:百度百科-T何坐束alend
参考资料创味注动失诗坏外剂向边:百度百科-Informatica
参考资料:百度百科-DataStage