大数据处理:百分点实时计算架构和算法

大数据处理:百分点实时计算架构和算法

a)实时计算架构

工欲善其事,必先利其器。一个稳定可靠且高效的底层架构是实时计算的必要基础。图1给出了百分点数据大平台的总体框架,如图所示,大数据平台包含数据存储和数据处理两个层次。

数据处理层由四个部分组成。其中Web应用云包含了所有直接面对用户的Web服务,每个Web应用都会产生Web日志以及其他实时数据,这些数据一方面会及时交由实时计算框架进行处理,另一方面也会定期同步至离线计算框架;实时计算框架会处理接收到的实时数据,并将处理结果输出到数据查询框架或者离线计算框架;离线计算框架则定期对数据进行处理,并将处理结果输出至数据查询框架;数据查询框架提供了一系列应用接口供程序调取需要的各项数据,同时提供了一些Web工具帮助业务人员对海量数据进行统计、汇总和分析。

百分点公司的主要服务都是运行在这套架构上的,它拥有良好的稳定性和扩展性,一般来说只需要增加水平扩展结点即可提高数据处理能力,这为百分点业务的稳定发展奠定了技术基础。

b)实时计算算法

c)简单方案

看到这个问题时,大部分读者会很快想到如图3所示的算法方案。图中红色、蓝色和绿色的方块分别表示不同的单品。在这个方案中,我们为每个单品保存一份浏览信息,它包含两个数据结构:

e)累计浏览量(简称累计量),一个整数,代表截止到最后一次访问时的浏览量。

如图所示,假设蓝色单品对应的数据是[(t1,a1),(t2,a2),…,(tn,an)]和A。这表示t1时刻的该单品浏览量是a1,t2时刻是a2,tn是最后一次记录到浏览该单品的时刻,浏览量是an。截止到tn,该单品的总浏览量是A。

当单品浏览源源不断进入到消息队列时,处理进程(或线程)P1,P2…会实时读取到这些信息,并修改对应单品的数据信息。例如,P1读取到t时刻对蓝色单品的浏览记录时,会进行下面的操作:

f)得到当前时刻ct;

g)对数据库中蓝色单品数据加锁,加锁成功后读取出数据,假设历史是[(t1,a1),(t2,a2),…,(tn,an)],累计量是A;

h)累计量递增,即从A修改为A+1

j)将新的历史和累计量输出至数据库,释放锁。

不难验证这个方案是可以正确得出每个单品24小时内的浏览量的,并且只要在资源(计算、存储和网络)充足的情况下,数据库中单品的浏览量是实时更新的。这个方案也是分布式实时计算中最简单最常见的一种模式。

k)避免锁

要想提高实时处理效率,避免锁是非常重要的。一种常见的做法是将并行操作串行化,就像MapReduce中的Reduce阶段一样,将key相同的数据交由同一个reducer处理。基于这个原理,我们可以将方案改造为如图4所示,我们新增一个数据分发处理过程,它的作用是保证同一个单品的所有数据都会发送给同一个处理程序。例如将蓝色单品交由P1处理,红色交由P2处理,绿色交由P3处理。这样P1在处理过程中不需要对数据库加锁,因为不存在资源竞争。这样可以极大的提高计算效率,于是整个计算过程变为:

l)得到当前时刻ct;

m)读取数据库中蓝色单品信息,假设历史是[(t1,a1),(t2,a2),…,(tn,an)],累计量是A;

n)累计递增,即从A修改为A+1

p)将新的历史和累计量输出至数据库。

步骤b)和e)省去了锁操作,整个系统的并发性和吞吐量会得到大大提高。当然,没有免费的午餐,这种方案的缺点在于存在单点隐患,例如一旦P1由于某些原因挂掉了,那么蓝色单品的数据将得不到及时处理,计数结果将无法保证实时。这种计算过程对系统监控和故障转移会有很高的要求。

q)数据分层

方案二已经可以大大提高计算效率,但这还不够,我们可以看到在计算步骤b)和e)中总是要把历史和累计量同时从数据库中读出或写入,实际上这是没有必要的,因为只有累计量才是外部必须使用的数据,而历史只是算法的中间数据。这样,我们可以区别对待历史和累计量,我们将历史和累计量都缓存在计算进程中,定期更新历史至数据库,而累计量则实时更新。新的方案如图5所示,计算过程变为:

r)得到当前时刻ct;

s)如果本地没有蓝色单品的信息,则从数据库中读取蓝色单品信息;否则直接使用本地缓存的信息。假设历史是[(t1,a1),(t2,a2),…,(tn,an)],累计量是A;

t)累计量递增,即从A修改为A+1

这种方案可以大大降低数据库压力、数据IO和序列化反序列化次数,从而提高整个系统的处理效率。数据分层实际上是计算机中一种常用的路数,例如硬件中的高速缓存/内存/磁盘,系统IO中的缓冲区/磁盘文件,数据库的内存索引、系统DNS缓存等等。我们使用的开源搜索引擎Solr就使用了同样的思路达到近实时索引。Solr包含磁盘全量索引和实时增加的内存增量索引,并引入了“soft提交”的方式更新新索引。新数据到达后,Solr会使用“soft”提交的方式更新内存增量索引,在检索的时候通过同时请求全量索引和增量索引并合并的方式获得到最新的数据。之后会在服务器空闲的时候,Solr会把内存增量索引合并到磁盘全量索引中保证数据完整。

w)模糊化

x)得到当前时刻精确到小时的部分ct;

y)如果本地没有蓝色单品的信息,则从数据库中读取蓝色单品信息;否则直接使用本地缓存的信息。假设历史是[(t1,a1),(t2,a2),…,(tn,an)],累计量是A;

z)累计量递增,即从A修改为A+1

aa)如果ct=tn,则更新历史为[(t1,a1),(t2,a2),…,(tn,an+1)],否则更新为[(t1,a1),(t2,a2),…,(tn,an),(ct,1)];最后删除小时数小于ct-24的列表元素,删除的同时从累计量中减去对应时刻的浏览量;

ab)将新的浏览量输出至数据库;如果满足一定的条件,则将历史输出至数据库。

在这种方案下,数据库中存储的并不是过去24小时内的浏览量,而是过去23小时多一点内的。例如在1月2日12:15时数据库中的浏览量实际上是1月1日13:00到1月2日12:15的浏览量!

这种降低数据精度的方法我们可以称之为模糊化,它是用资源换效率的一种方法。在对数据精确性不是特别敏感的领域,这种方法可以大大降低系统资源使用量、提高系统的处理效率。利用模糊化的实时算法快速得到近似结果,而后用离线算法慢慢修正结果的精确度,是百分点在大数据处理中经常使用的招数。

ac)局部精化

这种方案会增加系统的设计和开发难度,而且必须有灵活的配置才能满足多变的业务需求。

[a0+(a1-a0)×(60-15)/60]+a1+…+a24

其中a0代表1月1日12:00到13:00之间的浏览量,依次类推,a24代表1月2日12:00到12:15之间的浏览量。公式中的a0+(a1-a0)×(60-15)/60估计了1月1日12:15-13:00之间的浏览量,这样就得出了从1月1日12:15到1月2日12:15之间24小时内的浏览量。

当然,模型也不是万能的,模型本身的建立和更新也是有代价的,如果建模方法不恰当或者模型更新不及时,很有可能得出的结果会很差。

THE END
1.数据分析中常用的9大算法原理数据分析数据算法实现原理: 决策树是一种监督学习算法,用于分类和回归任务。它模拟了人类决策过程,通过一系列规则对数据进行分类或预测。决策树的构建过程包括特征选择、树的生成和剪枝。 特征选择:选择最佳的特征进行分割,常用的方法有信息增益(ID3算法)和基尼不纯度(CART算法)。 https://blog.csdn.net/qq_30776829/article/details/137051717
2.大数据推荐算法的原理是最后,大数据推荐算法会不断学习和优化。推荐算法会根据用户的反馈和新的行为数据进行模型的更新和优化。通过不断迭代优化,推荐算法可以逐渐提高准确性和个性化程度。 大数据推荐算法的原理主要包括行为分析、兴趣挖掘和个性化推荐。它通过对大数据的分析和挖掘,发现用户的兴趣和需求,并给出符合用户兴趣的个性化推荐。这一算https://wenku.baidu.com/view/51e3f5f280d049649b6648d7c1c708a1294a0a38.html
3.ai大数据分析原理是什么帆软数字化转型知识库AI大数据分析的原理是基于大规模数据集的收集、存储和处理,通过机器学习算法和统计模型进行数据挖掘、模式识别和预测,从而实现数据驱动的决策。在这些原理中,数据收集是最基础的一步,通常包括从各种来源如传感器、日志文件、社交媒体等收集大量的原始数据。数据存储则需要高效的数据库和分布式存储系统来管理这些庞大的数据集https://www.fanruan.com/blog/article/40845/
4.大数据推送算法导读:一、什么是大数据推送算法大数据推送算法是一种基于大数据技术和机器学习算法的推送策略,它通过分析用户的行为数据和个人偏好,将合适的信息、广告或推荐内容推送给用户。这种算法可 本文目录一览 1、大数据推送算法原理 2、大数据推送算法优化 一、什么是大数据推送算法 http://chatgpt.cmpy.cn/article/4911796.html
5.大数据:分类算法深度解析大数据分类算法深度解析 在大数据时代,处理海量数据并从中提取有用信息变得至关重要。分类算法是机器学习领域的核心,它们在大数据分析、模式识别和决策支持等方面发挥着关键作用。本文将深度解析大数据分类算法,包括其基本原理、常见算法、应用场景以及未来发展方向。 http://www.360doc.com/content/24/0112/20/78411425_1110858832.shtml
6.DizzyK/ustccyber计算机原理与嵌入式系统 微机原理与嵌入式系统的等效课程 专业核心课 信号与系统B 信号与系统的低级课程 专业选修课 大数据算法 密码工程原理与实践 数据建模与分析基础 网络优化导论 机器学习及其安全应用 网络空间安全数学建模基础 2020级王小谟英才班 专业核心课 https://toscode.gitee.com/DizzyK/ustc_cyber_security
7.大数据分析常用算法及原理大数据分析常用算法及原理 大数据分析各种算法大数据分析常用算法 相对于复杂度分析,还有一个对立的分析方法,叫做事后统计法,但它有两个缺点:测试结果非常依赖测试环境测试结果受数据规模的影响很大我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。这就是我们今天要讲的时间、空间复杂度分析https://blog.51cto.com/topic/dashujufenxichangyongsuanfajiyuanli.html
8.转载10大大数据处理算法搬砖吊死【转载】10大大数据处理算法 一、Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将 hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也https://www.cnblogs.com/chenweian/articles/4008780.html
9.大数据算法课件.pdf大数据算法课件.pdf 158页VIP内容提供方:浙江工程信息通 大小:7.79 MB 字数:约7.53万字 发布时间:2024-01-05发布于浙江 浏览人气:12 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)大数据算法课件.pdf关闭预览 https://max.book118.com/html/2024/0104/6044220112010031.shtm
10.大数据算法(王宏志著)完整pdf扫描版[101MB]电子书下载前沿、实用的内容。总结了大数据算法设计与分析的新技术和新理念,梳理了当前大数据相关应用中所需要的算法设计与分析的方法。书中的部分内容代表了学术界全新的前沿技术,首次出现在国内外的教科书上。 清晰、严谨的叙述。针对大数据算法设计与分析中的主要方法,通过介绍原理、举例说明、算法分析等多个角度进行阐述,清晰地https://www.jb51.net/books/583619.html
11.生成对抗网络(GAN)算法原理简述腾讯云开发者社区生成对抗网络(GAN)算法原理简述 前言 2014年Ian Goodfellow在研究使用生成模型自动生成图片的过程中,发现传统神经网络方法效果并不理想,随后缘于一个偶然的灵感,发明了生成对抗网络(GAN),在其实验数据的图片生成上取得了非常理想的效果。从此,这种全新的技术作为训练生成模型的新框架,迅速风靡人工智能各个领域并取得不少https://cloud.tencent.com/developer/article/1698281
12.专业系近五年来,主持国家自然科学基金项目12项,发表SCI、SSCI检索论文100余篇并被SCI、SSCI论文他引700余次,其中基于视觉原理的聚类方法单篇他引90余次。2017年,学院作为主要承担单位获批大数据算法与分析技术国家工程实验室,其中统计学科作为主要力量承担实验室工作。http://math.xjtu.edu.cn/jzlm/xygk/jgsz1/zyx.htm
13.大数据算法:分类算法大数据算法:分类算法 KNN分类算法 KNN算法,即K近邻(K Nearest Neighbour)算法,是一种基本的分类算法。其主要原理是:对于一个需要分类的数据,将其和一组已经分类标注好的样本集合进行比较,得到距离最近的K个样本,K个样本最多归属的类别,就是这个需要分类数据的类别。下面我给你画了一个KNN算法的原理图。https://www.jianshu.com/p/3bd03e33d760