大数据实验报告总结体会_建设大数据中台架构思考与总结

简介

本文介绍完善的大数据中台架构了解这些架构里每个部分的位置,功能和含义及背后原理及应用场景。

帮助技术与产品经理对大数据技术体系有个全面的了解。

数据中台定义:集成离线数仓与实时数仓,并以多数据源统一整合采集到kafka,再通过kafka进行离线数据仓库及实时数据仓库,并集用户标签,统一数据资产管理(对数据资产目录、元数据、数据质量、数据血缘、数据生命周期等进行管理和展示,以一种更直观的方式展现企业的数据资产,提升企业的数据意识)提供给客户以及上层领导进行数据分析、数据运营等功能。

直观框架图如下:

9b024107f2a330cbbb252ad4b6e0ce7b.png

整个数据流程分为五个环节

从数据采集-->数据传输-->数据存储-->数据计算及查询-->数据可视化及分析。

1、数据采集

根据平台产生的日志,将数据采集后写入到HDFS,HBase,Hive ,提供后续计算流程进行消费使用。

数据来源有网络的Python爬虫数据、java后台日志数据、还有各种 API 接口及数据文件等等,汇聚到服务器本地磁盘。针对不同的数据来源有各自的采集方式,其中因为日志数据有数据量多,数据结构多样,产生环境复杂等特点,属于主要采集的对象。日志采集框架挑应用较广泛的有 Flume,Logstash进行数据采集。

Flume

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。

主要特点:

  • 可靠性当节点出现故障时,日志能够被传送到其他节点上而不会丢失。
  • 可扩展性Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。
  • 可管理性

(1)所有agent和colletor由master统一管理,这使得系统便于维护。
  (2)多master情况,Flume利用ZooKeeper和gossip,保证动态配置数据的一致性。
  (3)用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。
  (4)Flume提供了web 和shell script command两种形式对数据流进行管理。

  • 功能可扩展性用户可以根据需要添加自己的agent,collector或者storage。此外,Flume自带了很多组件,包括各种agent(file, syslog等),collector和storage(file,HDFS等)。
  • 文档丰富,社区活跃Flume 已经成为 Hadoop 生态系统的标配,它的文档比较丰富,社区比较活跃,方便我们学习。
c5102ac87d395f0d57545176bb168c84.png

Flume组成架构

Logstash

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

Logstash最常用于ELK(elasticsearch + logstash + kibane)logstash(收集)、elasticsearch(存储+搜索)、kibana(展示)作为日志收集器使用。

主要特点:

  • 集中、转换和存储你的数据Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储” 。首选Elasticsearch 是我们的输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
  • 支持访问任何类型数据如:file,redis,kafka,mq
  • 支持各种自定义插件可扩展插件生态系统,提供超过200个插件,以及创建和贡献自己的灵活性。
  • Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。
0eab58f70b275ea4a7e3d55b216f1863.png

从两者的设计思想来看,Flume本身最初设计的目的是为了把数据传入HDFS中(并不是为了采集日志而设计,这和Logstash有根本的区别),所以理所应当侧重于数据的传输,程序员要非常清楚整个数据的路由,并且比Logstash还多了一个可靠性策略,其中channel就是用于持久化目的,数据除非确认传输到下一位置了,否则不会删除,这一步是通过事物来控制的,这样的设计使得可靠性非常好。相反,Logstash则明显侧重对数据的预处理,因为日志的字段需要大量的预处理,为解析做铺垫。

2、数据传输

应用较广泛的有Kafka,Kafka是一个分布式的基于发布/订阅模式的消息队列主要应用于大数据实时处理领域。

应用场景如

d6058aa691a45a1c4117eb4e5b191b81.png

数据的传递,使用Flume消费Kafka数据存储到HDFS/Hbase

业务日志数据实时存储到Kafka集群,然后通过Flume Source组件实时去消费Kafka业务Topic采集数据,将消费后的数据通过Flume Sink组件发送到HDFS/Hbase进行存储。

3、数据存储

数据库存储方面,可分不同类别的数据存储组件,各类数据存储组件的设计是为满足不同场景下数据存储的需求,提供不同的数据模型抽象,以及面向在线和离线的不同的优化偏向。

比较常见的数据存储组件如下表:

bfd41fac6604dc7b0413b24d3f1c190a.png

存储组件的选型

做架构设计时,最大的挑战是如何对计算组件和存储组件进行选型和组合。存储组件包含数据库(又分为SQL和NoSQL两类,NoSQL下又根据各类数据模型细分为多类)、对象存储、文件存储和高速缓存等不同类别。

存储组件选型需要综合考虑数据分层、成本优化以及面向在线和离线的查询优化偏向等各种因素。平台根据不同的场景使用不同的存储组件进行数据写入、存储、查询和分析等需求。

大数据领域常用的存储组件有:

HDFS

Hadoop Distributed File System (HDFS) — Apache Hadoop 项目的一个子项目, 是一个高度容错的分布式文件系统,可以理解成HDFS一个以集群方式实现的一个文件系统,HDFS设计用于在低成本硬件上运行。HDFS 提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

使用场景如下:

  • HDFS不适合大量小文件的存储。
  • HDFS适用于高吞吐量,而不适合低时间延迟的访问。
  • 流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写),以及任意位置写入(不支持随机写),支持文件尾部apend操作,或者文件的覆盖操作。
  • HDFS更加适合写入一次,读取多次的应用场景,通过线上HDFS集群的监控,hadoop目前业务的读写比为10:1,在设计上也是考虑了这一点,读速度比较快。
  • HDFS 适合用来做大数据分析的底层存储服务。

HBase

HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储,这些都已经在生产环境验证,并且在广大的公司已经验证。

使用场景如下图:

f524e1094ab6146bedd199a29634456b.png
对象存储:我们知道不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中。时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求。推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上。时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外该技术所有大一点的数据量的车联网企业,数据都是存在HBase之中。CubeDB OLAP:Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求。消息/订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上。Feeds流:典型的应用就是xx朋友圈类似的应用。NewSQL:之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求。

Hive

Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的。Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理。

使用场景如下:

  • 日志分析:大部分互联网公司使用hive进行日志分析。如: 统计网站一个时间段内的pv、uv及多维度数据分析等。
  • 海量结构化数据离线分析。

ElasticSearch简称ES

ElasticSearch天然支持分布式,具备存储海量数据的能力,其搜索和数据分析的功能都建立在ElasticSearch存储的海量的数据之上。

使用场景如下:

  • 全文检索,高亮,搜索推荐。
  • 用户行为日志(点击,浏览,收藏,评论)+社交网络数据,数据分析。
  • 站内搜索(电商,招聘,门户,等等)具体如:电商网站检索商品。
  • 日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)。
  • 商品价格监控网站。

Elasticsearch作为传统数据库的一个补充,提供了数据库所不能提供的很多功能。如:比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理。

4、数据计算及查询

数据计算

大数据计算场景可分为批处理和流处理分别对应离线分析和实时分析。

常用框架分类有:

流处理框架(实时分析):Storm,Samza。

批处理框架(离线分析):Hadoop MapReduce 简称:MR。

混合框架:Spark、Flink。

Spark

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:

  • Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。
  • Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。

Spark与hadoop

Hadoop有两个核心模块,分布式存储模块HDFS和分布式计算模块Mapreduce。spark本身并没有提供分布式文件系统,因此spark的分析大多依赖于Hadoop的分布式文件系统HDFS。Hadoop的Mapreduce与spark都可以进行数据计算,而相比于Mapreduce,spark的速度更快并且提供的功能更加丰富。

Flink

Flink 作为更新一代的处理框架,拥有更快的计算能力,更低的延迟。

Fink与Spark Streaming 对应 流(Stream)与微批(Micro-batch)

如下图:

830ac8b7a2c0a7452bf3fb55ef14e9ab.png

数据模型

spark采用RDD模型,spark streaming的DStream实际上也就是一组组小批数据RDD的集合。

fink基础数据模型是数据流,以及事件(Event)序列。

运行时架构

spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个。

fink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

flink内部支持多种函数,其中包括窗口函数和各种算子和spark很像,但是flink在性能和实时上比 spark高。

Storm

storm流式处理,低延迟(ms级延迟),高吞吐,且每条数据都会触发计算。

Spark与storm对比, spark属于批处理转化为流处理即将流式数据根据时间切分成小批次进行计算,对比与storm而言延迟会高于0.5s(秒级延迟),但是性能上的消耗低于storm。流式计算是批次计算的特例(流式计算是拆分计算的结果)。

fink与storm对比 ,flink为流式计算而生属于每一条数据触发计算,在性能的消耗低于storm,吞吐量高于storm,延时低于storm,但比storm更加易于编写。因为storm如果要实现窗口需要自己编写逻辑,但是flink中有窗口方法。

综合对比spark、storm和flink的功能、容错和性能

2a6e4a16652dd8aeaba41f425e1ba224.png
相比于storm ,spark和flink两个都支持窗口和算子,减少了不少的编程时间。flink相比于storm和spark,flink支持乱序和延迟时间(在实际场景中,这个功能很牛逼),这个功能就可以胜spark。对于spark而言他的优势就是机器学习,如果我们的场景中对实时要求不高可以考虑spark,但是如果是要求很高就考虑使用flink,比如对用户异常消费进行监控,如果这个场景使用spark的话那么等到系统发现开始预警的时候(0.5s),已经完成了交易,可想而知在某些场景下flink的实时有多重要。

数据查询

数据计算结果后,还需要面向用户接触和使用的高效查询引擎。

术语

ETL:也即是数据抽取、清理、装载,是数据仓库建设的核心一环。

ODS:操作数据存储 ODS(Operational Data Store)是数据仓库体系结构中的一个重要部

分,ODS 具备数据仓库的部分特征和 OLTP 系统的部分特征,主要存储原始库表同步过来的

数据以及接口上报采集过来的数据。

DW:数据仓库(Data Warehouse), 面向主题的、集成的、相对稳定的、随时间不断变

(不同时间)的数据集合。

OLAP:OLAP是英文是On-Line Analytical Processing的缩写,意为联机分析处理。OLAP允许以一种称为多维数据集的结构,访问业务数据源经过聚合和组织整理后的数据。

统一数仓分层规范

ODS(贴源数据层):

对各业务系统数据进行采集、汇聚,尽可能保留原始业务流程数据,与业务系统基本保持一致,仅做简单整合、非结构化数据结构化处理或者增加标识数据日期描述信息,不做深度清洗加工。

统一拉通层:

把DW层的数据做统一的清洗处理。去重、去噪、字典翻译、空值转化,日期格式化等操作。

DWD(明细层):

和ODS粒度一致的明细数据,对数据进行去重,脏数据过滤和砍字段处理,空处理,保证

数据质量,简单逻辑通过视图实现,并解决数据的完整度问题。

DWS(服务层):

轻度汇总数据及集市大宽表(按主题)存放数据。

DIM:(维表层):

通过ods层获取得到。

应用数据ADS层(kylin/impala)

应用数据层ADS(Application Data Store):按照业务的需要从统一数仓层、标签层抽取数据,并且面向业务的特殊需要加工业务特定数据,以满足业务以及性能需求,向特定应用组装应用数据。

目前 OLAP 的查询分析框架有:

  • 基于 HBase 做预聚合:如Kylin 等,均需指定预聚合的指标,在数据接入的时候进行聚合运算,适合相对固定,维度较多的业务报表类需求。
  • 基于 Parquet 做列式存储:如impala 等,基本是完全基于内存的并行计算,Parquet 系能降低存储空间,提高IO效率,以离线处理为主,很难提高数据写的实时性,超大表的 Join 支持可能不够好。

标签数据层TDM

标签数据层TDM(Tag Data Model):面向对象建模,把跨业务板块、跨数据域的特定对象数据进行整合,通过ID-Mapping把各个业务板块各个业务过程同一对象的数据打通,形成对象的全域标签体系,方便深度的分析、挖掘、应用。

5、大数据应用

数据运营方面:用户画像、精准推荐、智能检索。

数据分析方面:olap报表、决策支持、可视化大屏。

f2f1a65b6fa25249806ec0e6245c1e1a.png

大数据可视化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半数集问题

给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1) n ∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。…

maven的profile详解

详细内容请见:https://www.cnblogs.com/wxgblogs/p/6696229.html Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值。有…

夏至未至计算机版音乐,夏至未至有哪些插曲背景音乐 夏至未至所有bgm歌曲汇总...

夏至未至有哪些插曲背景音乐 夏至未至所有bgm歌曲汇总夏至未至第一集插曲是什么?夏至未至插曲曝光。夏至未至是由陈学冬、郑爽、白敬亭等联袂主演的青春偶像剧,昨晚已经开播了,那么第一集的插曲是什么呢?和小编一起去看看吧!夏至未至第一集插曲《那些花儿》那片笑…

nmap常用参数详解

nmap常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 借用英雄联盟的一个英雄赵信的一句话:“即使敌众我寡,末将亦能万军丛中取敌将首级!”。三国关羽,万军丛中斩了颜良&#x…

模板变量,过滤器和静态文件引用

模板变量,过滤器和静态文件引用 模板路径 Djiango先到settings里面找templates下的DIRS查看是否有路径,也是从上往下依次寻找,找到就返回。如果DIRS没有,就到APP_DIRS里面寻找。但是APP要先在INSTALLED_APPS里面进行注册然后根据I…

antd option宽度自适应_WordPress文章中添加自适应宽度的表格——墨涩网

WordPress文章中添加自适应表格,前面写文章的时候需要用到表格来表达阵列信息,但是在WordPress添加表格不想是在office中那样方便,需要借助插件或者代码才可以实现,今天分享一个不需要安装插件纯代码实现WordPress文章中添加自适应…

OO第一单元总结

OO第一单元总结 第一次作业总结 这是我第一次接触Java和面向对象思想,最一开始,我建立了简单的类和对象的概念,多亏了第一次作业难度和复杂度较低,我才没有崩掉hhh。 第一次作业我只分了三个类,一个main,一…

接口开发指的是什么_企业在什么情况下要选择定制开发软件

软件定制开发是指软件开发商依据我们的需求停止量身定制的开发,软件定制开发相关于单纯产品的施行周期长、本钱高、风险大。假如根据定制开发的工作量或水平来分,我们能够分为完整定制开发和局部定制开发,完整定制开发是指软件开发公司依据我…

计算机没有搜索筛选功能,EXCEL中筛选工具怎么没有搜索功能

EXCEL中筛选工具怎么没有搜索功能卡饭网本站整理2018-04-01excel是一款数据处理工具,可以在众多的数据中找到想要的经过处理之后的数据,而最直接方便的功能就是筛选。请阅读下文,了解如何对数据进行筛选。如下图所示的学生成绩中,…

51nod 1851 俄罗斯方块(思维题)

分析&#xff1a;假设n>m&#xff0c;m为1,2单独讨论下&#xff0c;否则可以用第二行第一个把所有黑块搞到2x2的格子里&#xff0c;不断用凸出来的那个角一列一列把黑的变白就行了。然后只要黑色有偶数块都可以构造出来。复杂度O(nm) #include <iostream> #include &l…

gprof, Valgrind and gperftools - an evaluation of some tools for application level CPU profiling on

2019独角兽企业重金招聘Python工程师标准>>> In this post I give an overview of my evaluation of three different CPU profiling tools: gperftools, Valgrind and gprof. I evaluated the three tools on usage, functionality, accuracy and runtime overhead…

xp计算机属性打不开,xp系统我的电脑右键属性打不开怎么办

在使用xp系统过程中,我们经常需要打开“我的电脑”右键属性,查看系统信息以及进行虚拟内存、性能方面的设置,不过有深度技术ghost xp sp3纯净版用户右键点击我的电脑,发现右键菜单中的“属性”打不开,出现这个问题通常是注册表禁用了这个属性,下面小编跟大家介绍xp系统我的电脑…

状态机学习(二)解析INI文件

题目来自<系统程序员成长计划> 作者:李先静. 状态变化如下 #include <string> #include <iostream> using namespace std;string s "[GRP]\n\ name def \n\ data 2016.11.29 \r\n\ ; this is a comment \r\n\ str this is a test \n\ [zhangshan]…

接口之用例编写、验证

一、用Excel编写用例&#xff08;xlsx格式&#xff09; 截图仅供参考&#xff0c;实际用例编写需要根据实际情况来。 二、用例加载、验证 1、数据的加载 import xlrd,xlwt #python操作excel主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读excel&#xff0c;xlwt是写excel的库…

repcached配置与简单測试

安装libevent-devel进行configure。安装在文件夹/usr/local/repcached下编译安装完毕启动11211节点启动11212节点编写文件验证复制&#xff08;分别向1、2节点存入数据&#xff0c;验证复制&#xff09;ruby执行结果

元祖(转载)

一.基本数据类型  整数&#xff1a;int  字符串&#xff1a;str(注&#xff1a;\t等于一个tab键)  布尔值&#xff1a; bool  列表&#xff1a;list   列表用[]  元祖&#xff1a;tuple  元祖用&#xff08;&#xff09;  字典&#xff1a;dict注&#xff1a;所…

leetcood学习笔记-226- 翻转二叉树

题目描述&#xff1a; 第一次提交&#xff1a; class Solution(object):def invertTree(self, root):""":type root: TreeNode:rtype: TreeNode"""if not root:return Nonetemp root.leftroot.left root.rightroot.right temp# root.left,…

惠普omen测试软件,双GTX1080奢华魔方PC 惠普OMEN X评测

惠普最近一段时间在游戏PC领域着力发力&#xff0c;桌面的暗影精灵家族热卖&#xff0c;如火如荼的势头终于传导到了台式机领域。而今&#xff0c;惠普也终于有了自己正统意义上的重型武器——桌面游戏台式机OMEN 900暗影精灵II 系列。今天我们就要为大家评测这款三万元的台式机…

二. linux基础命令

linux的基本命令一般有100多个&#xff0c;多练就可以了&#xff1b; 如果登陆用户是root&#xff0c;那么是#&#xff1b;如果是其他用户&#xff0c;则显示的是$ 练习&#xff1a;基本命令 1.创建一个目录/data mkdir /data ls -ld /data 2.在/data下面创建一个文件oldboy.tx…

程序员这样对待简历,你期望面试官怎么对待你?

为什么想到谈这个问题呢&#xff1f; 前段时间公司因业务扩展需要招聘几个研发、运维以及测试人员&#xff0c;在看面试者的简历时&#xff0c;发现很多人都没有认真的去对待简历&#xff0c;只是把招聘网站上的打印一下就好了&#xff01; 这就让我想问几个问题&#xff1a; 1…