一、kafka

kafka是一个实时数据处理系统,可以横向扩展、高可靠,而且还变态快,已经被很多公司使用。

对于实时数据处理,我们最常见的,就是消息中间件了,也叫MQ(Message Queue,消息队列),也有叫Message Broker的。

消息中间件的作用主要有两点:

  • 解耦消息的生产和消费。
  • 缓冲

我的理解:消息中间件相当于一个大的公众号平台,生产者存放有各种消息内容(消息中间件),消费者需要时,直接订阅消息件(取出消息中间件)即可。

埋点信息读入kafka

数据采集服务会对采集到的埋点写入到 Kafka 中,对于各个业务的实时数据消费需求,我们为每个业务提供了单独的 Kafka,流量分发模块会定期读取埋点管理平台提供的元信息,将流量实时分发的各业务 Kafka 中。
在这里插入图片描述

二、数据仓库

在这里插入图片描述

数据仓库的作用就是:汇总数据、整合数据、加工数据并最终输出能力。

1、构建数据据仓库

在这里插入图片描述

ODS

取得数据持有方的支持后,将各数据源同步到数据仓库中的ODS层,该层和源数据是同构的,即在ODS层将数据源的数据原封不动的存储起来,以便后续追溯数据问题;这一层数据粒度是最细的,而且这层的数据保存时间最久。

ETL

ETL是对数据的抽取、转换、加载的简称;它是指将关系型数据库中的数据抽取出来,并将不同数据源的数据按规则进行转化和整合,最终加载到数据仓库中。

在这一系列的操作中将会对元数据的数据格式,拼写错误,多余字段以及缺失值等进行处理,将分散、零乱、标准不统一的数据整合到一起,使数据达到允许加载到数据仓库的标准

1. 基础层

也有称DWD(Data Warehouse Detail)层,基础层对ODS层数据进行了清洗、转换(即前面提到的ETL过程),和轻度汇总。产出为数据明细、维度表、事实表等基础数据。例如订单表、商品列表以及一些日志表等。

2. 主题层

也有称DWS(Data Warehouse Service)层,主题层对数据按照一定维度或业务逻辑进行高度聚合,生成不同主题下的表。主题层一般已不存在具体的明细数据,所有数据按照主题进行了归集。例如零售行业,可能会根据业务分成用户主题、商品主题、销售主题等。

数据共享

① 通常情况下,大部分的数据需求可以从DWS层直接取数,但是总会存在一些需求是DWS层支持不了的,这时候就需要将DWS层数据或者是从DWM、DWD数据进行计算以满足需求;

② 数据的使用我们讲究实时性,三层数据通常存储在一些比较廉价的存储介质上,如使用hive进行存储,这显然是不能满足我们的分析查询实时需求的,需要将有实时需求的数据加载到这一层中支持实时查询获取。

三、ELK

日志对于任何的系统来讲都是极其重要的组成部分,通常日志分散在不同的设备上,对于一个大型应用来讲,应用程序有可能分布在几十甚至上百台应用服务器上。如果对应用日志不进行统一的收集,对于这种分布式部署的应用日志就非常不方便开发人员或者运维人员查询,同时分散的日志也不便于管理,因此构建一个统一的日志管理系统就十分有必要。

通常一个日志管理系统包括日志采集、日子传输、日志存储、日志搜索、日志分析和日志监控以及报警等模块;

ELK就是一款非常优秀的、开源的、用于搭建实时日志分析平台的组件。ELK是Elasticsearch、Logstash和Kibana这三款开源框架首字母的缩写;

Elasticsearch:

是一个实时的分布式搜索和分析引擎,建立在全文搜索引擎Apache Lucene基础之上,使用Java语言编写,具有分布式、高可用性、易扩展、具有副本和索引自动分片动能、提供基于HTTP协议以JSON为数据交互格式的REST风格API、多数据源、实时分析存储特点;

Logstash:

其功能类似于Flume,用于对日志进行收集、过滤,对数据进行格式化处理,并将所搜集的日志传输到相关系统进行存储,如存储到HDFS、Kafka等。Logstash是用Ruby语言开发的,由数据输入端、过滤器和输出端3部分组成。其中数据输入端可以从数据源采集数据,常见的数据源包括文件、Syslog、Kafka等;过滤器是数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式;数据输出端是将Logstash收集的数据经由过滤器处理之后输出到其他系统,如Kafka、HDFS、Elasticsearch等。

Kibana:

是一款针对Elasticsearch开源分析以及可视化平台,使用node.js开发,可以用来搜索,展示存储在Elasticsearch中的数据。同时提供了丰富的图标模板,只需要通过简单的配置就可以方便的进行高级数据分析和绘制各种图表。在Kibana界面我们可以通过拖拽各个图表进行排版,同时Kibana也支持条件查询、过滤检索等,还支持导入相应插件的仪表盘,如Metricbeat仪表盘;
在这里插入图片描述

四、Hadoop

在这里插入图片描述

下面介绍大数据常用工具:

1. 数据采集传输类

1)Flume

针对非结构化的海量日志的采集工具,主要用于收集数据到HDFS。

2)Sqoop

针对在Hadoop和结构化数据存储(如关系型数据库)之间高效传输大批量数据的工具。主要用于从关系型数据库管理系统(如Oracle、MySQL)向Hadoop中(HDFS、Hive)导入数据,或从Hadoop中导入关系型数据库。

3)Kafk

可持久化的分布式消息队列,用于发布订阅消息的系统。可与流式框架(如Storm)组合使用,完成实时数据的传输处理。

2. 数据存储类

1)Hive

Hadoop的数据仓库框架,基于MapReduce封装。其将存储在HDFS的文件映射成我们熟悉的数据表,并提供类SQL(Hive SQL/HQL)语句进行数据表操作。是使用Hadoop平台数据仓库的必备技能。

2)Memcached

基于Key-Value的、高性能、分布式内存对象缓存系统,解决了大数据量缓存的问题,可在内存中缓存数据查询结果。

3)Redis

基于Key-Value的、可持久化的日志型内存数据库。Redis与Memcached类似,但支持更多的存储类型。另外,Redis可以将内存中的数据写入硬盘中,做持久化的保存。也可以设置key的过期时间,过期自动删除缓存。

3.数据计算类

1)Spark

不以MapReduce为执行引擎、基于内存计算的数据处理框架,用于大数据分析处理的集群计算系统。相比于MapReduce主要处理离线数据,Spark可以进行实时流式数据的分析处理。同时,其在内存中存储工作数据集的特点使其性能领先于MapReduce,对内存的消耗自然也较大。当任务对实时性要求较高时,可考虑选择Spark。

2)Storm

全内存计算的流式计算框架,定位是分布式实时计算系统。可处理源源不断流入的数据,来一条数据处理一条,是真正的纯实时。

3)Flink

针对流数据+批数据的计算框架。把批数据看作流数据的一种特例,延迟性较低(毫秒级),且能够保证消息传输不丢失不重复。

4.数据分析及可视化

1)Zeppelin

数据分析工具,包含了大数据分析和可视化功能,可以通过Web页面新建Notebook来完成数据的查询、分析和导出。

2)ELK

是ElasticSearch, Logstash, Kibana的统称,其是一套实时数据收集,存储,索引,检索,统计分析及可视化的解决方案。ElasticSearch是一个分布式存储及检索引擎,可快速实时地存储和查询数据,常用于快速检索内容。Logstash是一个收集实时流式数据(例如日志)的数据收集引擎,可用于接收、处理和转发日志。Kibana是一个数据分析和可视化的平台。可对ElasticSearch索引中存储的数据进行搜索和查询,并实现高级数据分析和可视化功能。最新版本已经改名为Elastic Stack,并加入了采集数据的Beats项目

5.系统管理

1)Zookeeper

是一个分布式协调服务,为应用提供统一命名、配置维护、域名服务、分布式同步等一致性服务。

2)YARN

是Hadoop的集群资源管理系统。可作为框架管理器,对计算框架进行管理和资源调度,例如MapReduce、Spark、Storm和Flink等。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐