mmTrix大数据分析平台构建实录(大数据分析平台介绍)
ccwgpt 2024-10-26 08:44 38 浏览 0 评论
在数据分析中,有超过90%数据都是来自于非结构化数据,其中大部分的是日志,如运维、安全审计、用户访问数据以及业务数据等,但随着互联网快速的发展,数据规模也是水涨船高,从早前的GB级到现在的TB级,甚至PB级也只是短短几年光景。而移动互联网的时代到来,可以说每个人无时无刻不在产生数据,几乎成爆发式的增长。
如此多的数据早已压榨完单机的性能,在性价比的驱使下,转向分布式也是多数互联网企业早就未雨绸缪的事。2016年恰逢Hadoop十周年,可以说Hadoop改变了企业对数据的存储、处理和分析的过程,并引燃了整个大数据生态圈,而构建企业级大数据分析平台也必不可少从它开始。
一、基石-Hadoop
Hadoop2.0之后,资源管理被剥离了出来,变成了YARN。虽然在集群规模小于200台的企业里,可能不能感受到YARN带来的过多优势,但是与MRv1相比,其已不再是单纯的计算框架(Mapreduce),而是一个框架管理器,可以部署多个计算框架(如Spark,Storm,Impala等),NoSQL存储(如HBase等)。
HDFS是Hadoop的分布式文件系统,多数的计算框架都支持直接从HDFS上读取数据,且可以无障碍的部署在低廉的服务器上,Replication机制也保证了数据容灾性。但有些场景也不适合使用,如低延迟数据访问、大量小文件存储等,但可以依赖其他框架解决,如HBase、Alluxio解决低延迟访问、FastDFS解决大量小文件存储的问题,mmTrix的真机监测就是通过FastDFS来解决存储真机客户端大量回传的几KB小文件。
二、快刀-Spark、Mapreduce、Storm、Spark Streaming
很多人觉得Spark的出现,可以完全替代Mapreduce,尽管Mapreduce很优秀,编程模型简单,但是真的太慢了(前公司的BI人员多次吐槽,敲完一条连表HiveSQL,他可以看一集火影)。Spark目前正朝着2.0大步迈进,从目前最新的1.6版本来看,上千个补丁完全可以看出Spark正如其名一般的火爆。Spark 1.6引入新的内存管理器,自动调整不同内存区域大小,根据程序运行时自动地增加或缩小相应内存区域大小,这意味着对许多应用程序来说,在无需手动调整的情况下,在进行join和aggregation等操作时,其可用的内存将大大增加。
尽管Spark如此优秀,但是在日级别、部分业务小时级的数据计算时,我们依旧选择Mapreduce,但对于分钟级的计算已经将这光荣的任务移交给Spark。
Storm作为开源实时框架的先驱,在提到实时计算的时候,会第一反应想到它,尽管twitter公司已经宣布弃用,改用Heron。从Twitter在SIGMOD 2015上发布的论文来看,Heron可以说有非常不错的提升,Twitter也表示在将来会开源。而阿里的JStorm在2015年10月份也加入了Storm的豪华午餐,应该会出现在下个大版本里。我们部署了JStorm2.1.0进行了测试,发现JStorm表现出非常不错的性能,仅从监控UI就能看出阿里对于JStorm的诚意,但最重要的是JStorm解决了Storm的几个问题,如过度依赖Zookeeper(频繁交互Zookeeper)、HA、多集群监控、资源硬隔离等。
而Spark Streaming则是目前我们正在过渡到的一个实时计算框架,Spark Streaming与Storm在处理数据的本质上有着很大的不同,Storm是逐个处理tuple,而Spark Streaming则可看成细粒度批处理(micro batch)的spark任务,但这也决定了其高吞吐量和较高的延迟。一般认为Storm的处理瓶颈是单条流水线20000Tuple/s(每个tuple大小为1KB),但在一些大数据量且延迟要求不高的场景下,其实Spark Streaming可能更适合,目前mmTrix也准备将静态CDN访问日志相关的秒级监控迁到Spark Streaming。
三、辅助-Kafka、OpenTSDB、Kylin
Kafka为LinkedIn开源的优秀分布式发布订阅消息系统,即便是廉价的服务器也能跑出单机10W/s的效率。Kafka解藕了服务的同时,对消费端消费能力不足的情况下,实现了数据缓冲,并且消费不删除和Retention机制也提高了其在实践中的高可用。即便在后端消费服务全部宕机的情况下,Kafka也能默默承载全部数据压力,并给予运维、开发人员修复的时间(取决于配置项log.retention.hours)。
由于mmTrix是主要做APM业务的,不可避免地会遇到时间序列的监控数据,如OS监控、Plugin监控、Server监控等业务。早期的做法,选择了Mongo作为存储工具,但最终我们还是选择了HBase,并配合OpenTSDB使用。OpenTSDB主要由Time Series Daemon (TSD)以及一系列的命令工具组成。每个TSD都是独立的,它们之间没有Master,没有共享状态,从而在使用的时候可以部署任意多个,且相互之间不影响。数据的存储主要依托开源的列存储数据HBase,按时间序列存储。与TSD之间的数据交互,可以通过简单的telnet-style协议,比如HTTP API或者内建的GUI。时间序列的数据是高密集的,如果设计HBase Rowkey时,只注重在时间尺度上的Scan且把全时间带入到Rowkey中,当大规模灌入数据的时候是极易引起Region热点问题的。
而OpenTSDB的Rowkey设计巧妙的规避了这个问题,采用固定长度的Rowkey,让Rowkey包含尽可能多的检索信息。同时,其使用AsyncHbase而非HBase自带的HTable,且线程安全、非阻塞、异步、多线程并发的HBase API,在高并发和高吞吐时,可以获得更好的效果。
Kylin是eBay开源给Apache的OLAP平台,并于2015年12月8日成为Apache顶级项目。对于需要长期建立的数据分析仓库,在不同的时间弹性尺度上聚合结果是比较耗时的,而用户经常要求在秒级返回结果,OLAP平台正好解决这个问题。同时,mmTrix的技术支持和OP人员也需要快速的帮助客户排查一些问题或者快速制作分析报表。Kylin目前来看使用的限制较多,对于其依赖的组件Hive、HBase、Hadoop有一定限制,而且目前使用的公司还较少(京东云海分享过使用经验),mmTrix目前也在试水。
四、大数据分析平台实践
目前mmTrix整个大数据分析平台主要抽象成5层,包括数据源层、数据集成层、数据分析层、数据分析存储层、数据服务层,组件的监控则贯穿整个平台。
数据源层
数据源目前主要分3类,新增的外部数据、已保存的外部数据、已保存的内部数据。新增的外部数据,主要是非结构化的数据,由log agent,plugin agent(Redis、MySQL、Mongo等)、OS agent等上传的数据。已保存的外部数据,主要是由其他服务、采集整合的结构化数据,辅助构建数据仓库,同时存储部分元数据。已保存的内部数据 ,主要是数据落地备份和长期增量建立的数据仓库,业务主要涵盖全站加速、图片加速、网络加速、OS监控、Plugin监控等。
数据的规模,日新增数据量约1.5TB,其中网络加速日新增约20亿条,全站加速约1200万条,OS监控日新增约110GB。
数据集成层
数据集成层则是汇聚集成数据源,供各种组件使用(例如数据获取、数据清洗入库等)。目前,有kafka2hdfs、kafka2opentsdb服务分别落地新增的数据到HDFS、OpenTSDB,以多线程模式并行处理。Collector主要设计为数据收集、数据适配、数据分发,将上传的plugin数据收集后适配成OpenTSDB所需的数据格式,然后数据分发到TSD进行数据落地。
数据分析层
数据分析层则分为实时计算、离线计算、OLAP分析三块。
实时计算目前由Storm搭建,已运行的topology主要负责全站加速、网络加速的各项统计,计算结果在开启pipeline的情况下通过Codis写入(测试对比写入单机Redis,性能损耗约10%-15%),过期时效为6分钟。一些需要原语特性的实时计算,则使用Trident API,如实时监控报警(防止失败处理导致重复发送,继而引起误报,其实有时候误报比一两次的漏报更可怕)。
离线计算目前由MapReduce和Spark计算框架负责,Job调度由基于Quartz自研的JobScheduler定时调度,主要负责全站加速、网络加速、图片加速等各项业务的统计调度。JobScheduler是一个轻量级的调度系统,对任务依赖、补跑、失败重试等都进行了较好的实现,但也存在一些问题,目前也在借鉴阿里的Zeus系统进行完善,如分布式等特性。目前离线计算任务,仅定时任务月均13W左右。
OLAP分析是基于长期建立的数据分析仓库,对每日新增数据进行预计算,更新维度索引,提供弹性的数据分析,目前只是处于试水阶段。
数据分析存储层
数据分析存储层存储数据分析结果或者中间结果,由后续数据服务提供简单聚合等计算。目前,Redis负责实时数据的结果存储(过期失效),以及调度状态、任务成功失败标记等。MySQL主要负责时效性较长、数据量不大的计算结果,目前存储全站加速、网络加速、图片加速的报表数据,会对冷热数据(根据用户的查询频率)进行分离,对历史数据存入HBase,较新的数据存入MySQL。Hive和HBase主要负责时效性长、数据量大的计算结果,比如存入各种预计算的结果、中间表、长期保存的数据,包括监控数据、报表数据等。
数据服务层
数据服务层主要负责应用层的服务请求,由go语言开发,采用微服务的架构体系,Docker部署,服务不相互依赖或简单依赖,提供各种监控数据、报表服务。由于本文只注重对于平台的构建,对服务治理、服务监控等就不做过多赘述。
总结
本文详细介绍了mmTrix大数据分析平台的基本架构构建过程,基于Hadoop的大数据分析平台逐步实现mmTrix APM后端数据的存储、分析、挖掘,同时随着业务的更迭也加速驱动数据的平台化。
相关推荐
- 土豪农村建个别墅不新鲜 建个车库都用框架结构?
-
农村建房子过去都是没车库,也没有那么多豪车,一般直接停在路边或者院子里。现在很多人都会在建房子的时候留一个车库,通过车库可以直接进入客厅,省得雨雪天气折腾。农村土豪都是有钱任性,建房子跟我们普通人不一...
- 自建框架结构出现裂缝怎么回事?
-
三层自建房梁底与墙体连接处裂缝是结构问题吗?去前帮我姑画了一份三层自建房的图纸,前天他们全部装修好了。我姑丈突然打电话给我说他发现二层的梁底与墙分离了,有裂缝。也就是图纸中前面8.3米那跨梁与墙体衔接...
- 钢结构三维图集-框架结构(钢柱对接)
-
1、实腹式钢柱对接说明1:1.上节钢柱的安装吊点设置在钢柱的上部,利用四个吊点进行吊装;2.吊装前,下节钢柱顶面和本节钢柱底面的渣土和浮锈要清除干净,保证上下节钢柱对接面接触顶紧;3.钢柱吊装到位后...
- 三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!
-
绘创意设计乡村好房子设计小编今日头条带来分享一款:三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!本案例设计亮点:这是一款三层新中式框架结构自建房,占地13×12米,户型占地面积...
- 农村自建房新宠!半框架结构凭啥这么火?内行人揭开3个扎心真相
-
回老家闲逛,竟发现个有意思的现象:村里盖新房,十家有八家都选了"半框架结构"。隔壁王叔家那栋刚封顶的二层小楼,外墙红砖还露着糙面没勾缝,里头的水泥柱子倒先支棱得笔直,这到底是啥讲究?蹲...
- 砖混结构与框架结构!究竟有何区别?千万别被坑!
-
农村自建房选结构,砖混省钱但出事真能保命吗?7月建材价格波动期,多地建房户因安全焦虑陷入选择困境——框架结构虽贵30%,却是地震区保命的关键。框架柱和梁组成的承重体系,受力分散得像一张网。砖混靠墙硬扛...
- 砖混结构与框架结构,究竟有何区别?千万别被坑!
-
农村建房选砖混结构还是框架结构?这个问题算是近期留言板里问得最多的问题了。今天咱们说说二者的区别,帮您选个合适的。01成本区别假如盖一栋砖混结构的房子需要30万,那么换成框架结构,一般要多掏30%的费...
- 6个小众却逆天的App神器,个个都是黑科技的代表
-
你的手机上有哪些好用的软件?今天我就给大家分享6个小众却逆天的App神器,个个都是黑科技的代表!01*Via浏览器推荐理由:体积极小的浏览器,没有任何广告。使用感受:它的体量真的很小,只有702KB,...
- 合肥App开发做一个app需要多少钱?制作周期有多久?
-
在移动互联网时代,开发一款APP已成为企业数字化转型与个人创业的重要途径。然而,APP的开发成本与制作周期受功能复杂度、技术架构、团队类型等多重因素影响,差异极大。好牛软件将从这两个维度展开分析,帮助...
- 详解应对App臃肿化的五大法则
-
编者注:本文转自腾讯ISUX。先来看一张图:图上看到,所有平台上用户花费时间都在减少,除了移动端。观察身边也是如此,回家不开电脑的小伙伴越来越多。手机平板加电视,下班场景全搞定。连那些以前电脑苦手的...
- 实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统
-
需求背景春节活动中,多个业务方都有发放优惠券的需求,且对发券的QPS量级有明确的需求。所有的优惠券发放、核销、查询都需要一个新系统来承载。因此,我们需要设计、开发一个能够支持十万级QPS的券系...
- 8种移动APP导航设计模式大对比
-
当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦。这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来?也许我们对比和了解了其他一些...
- 数字资产支付 App 的技术框架
-
开发一款功能强大、安全可靠的数字资产支付App需要一个整合了区块链技术、后端服务、前端应用以及第三方集成的全栈技术框架。这个框架的核心在于保障数字资产的安全流通,并将其高效地桥接到传统的法币支付场...
- 从MyBatis到App架构:设计模式全景应用指南
-
从MyBatis到App架构:设计模式全景应用指南引言在企业级应用和服务端开发领域,MyBatis凭借其灵活、简洁、强大的ORM映射能力被广泛应用。而它之所以能拥有如此优秀的可扩展性和工程可维护性,正...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)