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

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

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.大数据的预处理离散化要点罗列大数据的预处理、离散化要点罗列 大数据预处理技术 1.目前存在四种主流的数据预处理技术:数据清理、数据集成、数据规约和数据变换。2.数据处理的主要任务 (1)数据处理的主要步骤:数据清理、数据集成、数据规约和数据变换。(2)数据清理例程通过填写缺失值、光滑噪声数据、识别或者删除离群点并且解决不一致性来“清理https://baijiahao.baidu.com/s?id=1610304099527487857&wfr=spider&for=pc
2.大数据算法:分类算法但是不管特征值n是多少,两个数据之间的空间距离的计算公式还是这个欧氏计算公式。大多数机器学习算法都需要计算数据之间的距离,因此掌握数据的距离计算公式是掌握机器学习算法的基础。 欧氏距离是最常用的数据计算公式,但是在文本数据以及用户评价数据的机器学习中,更常用的距离计算方法是余弦相似度。https://www.jianshu.com/p/3bd03e33d760
3.大数据算法课件.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
4.零基础学大数据算法零基础学大数据算法文档介绍内容阿里云为您提供零基础学大数据算法相关的67114条产品文档内容及常见问题解答内容,还有等云计算产品文档及常见问题解答。如果您想了解更多云计算产品,就来阿里云帮助文档查看吧,阿里云帮助文档地址https://help.aliyun.com/。https://help.aliyun.com/wordpower/397858-1.html
5.大数据分析计算法公式是什么帆软数字化转型知识库大数据分析计算法公式涉及多种技术和方法,包括数据预处理、数据挖掘、机器学习和统计分析等。常用的大数据分析计算法公式包括:均值公式、方差公式、回归分析公式、聚类算法、分类算法。例如,均值公式是大数据分析中最基本的统计量之一,通过计算数据集中的所有值的平均值来概括数据的中心趋势。均值的计算公式为:(\bar{x}https://www.fanruan.com/blog/article/72545/
6.大数据开发常用算法(转)wxxwxx3.大数据开发常用算法 无论是机器学习,模式识别,数据挖掘,统计学习,计算机视觉,语音识别,自然语言处理都涉及到算法。 1.树:决策树(决策树)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种https://www.cnblogs.com/wxx-wxx/p/9782994.html
7.算法歧视:来自智能时代的消费歧视界面·财经号大数据算法不再是论坛专家口中神秘的理论公式,如今算法的应用随时出现在我们的身边。 8月18日,在世界机器人大会的分论坛中,多位法学界、人工智能界的专家学者对大数据算法的实践和监管进行了探讨。 “无所不能”的算法 无处不在的摄像头、传感器、人脸识别……AI已经成为我们生活中的一部分。 https://m.jiemian.com/article/2412149.html
8.量刑前沿量刑法学网例如,基于量刑自由裁量权这一研究主题,在数据提取过程中,笔者着重关注“案件的审理法官”这一变量,并将其与案件的刑罚裁量结果进行关联,从而为利用大数据展开量刑自由裁量权规制和量刑偏差识别提供了可能。在获得数据后,笔者进一步运用特定算法对数据进行分析,并最终得出了可供决策者参考的结论。https://liangxing.swupl.edu.cn/lxqy/49c4106b72774c88bc0acd75082cfb8c.htm
9.算法工程师软件工程师大数据工程师,傻傻分不清楚在算法工程师眼中,则是完成不一样的。 以导航的例子来说,若出现绝大部分人验证华南快速这条路都和新光快速这条路的通行时间是一样的,那么说明该路路径并不是最节约时间的路径。 高德导航的路径算法工程师,可能需要重新调整其路径规划的算法公式。 这样,才能够更好的为高德用户服务了。 https://maimai.cn/article/detail?fid=845613115&efid=fwunO1cSXu6ZrJpdACNWjA
10.大数据分析各种算法大数据分析常用算法我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。这就是我们今天要讲的时间、空间复杂度分析方法。 一、大 O 复杂度表示法 对于大O复杂度表示法,我们可以把它总结成一个公式: 其中,T(n) 表示代码执行的时间,即我们平时所说的时间复杂度;n 表示数据规模的大小;f(n) 表示每行代https://blog.51cto.com/u_13633/9262829
11.DizzyK/ustccyber大数据算法 密码工程原理与实践 数据建模与分析基础 网络优化导论 机器学习及其安全应用 网络空间安全数学建模基础 2020级王小谟英才班 专业核心课 编译原理和技术 ( H ) 编译原理和技术的高级课程 2020级第二学士 必修课 网络算法学 数字图像处理与分析 https://toscode.gitee.com/DizzyK/ustc_cyber_security
12.胡焕庸线存在性的大数据分析——中国人口分布特征的生态学及新通常一个区域的平均人口密度的计算公式如下: (1) 式中:P为人口密度(人/km2);N为区域人口数量(人), M为区域的面积(km2), 图1是2010年中国人口密度的分布情况, 图中白色实线是胡焕庸线。 1.3 生态与地理因子的选择和计算方法 根据数据挖掘原理, 好的大数据分析, 不仅需要数据量大, 而且需要数据特征的https://www.ecologica.cn/stxb/ch/html/2019/14/stxb201812212776.htm
13.26个应该知道的大数据名词术语腾讯云开发者社区5. 算法 可以完成某种数据分析的数学公式 6. 仪表板 使用算法分析数据,并将结果用图表方式显示于仪表板中 7.数据库 一个以某种特定的技术来存储数据集合的仓库 8.数据清洗 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性 https://cloud.tencent.com/developer/article/1867429
14.算法工程师软件工程师大数据工程师,傻傻分不清楚跟大数据有关的职位主要分成2大类:一类是应用类、一类是系统类。 应用类 偏向于数据分析、数据应用,比如我们经常讲到的数据分析、数据挖掘,均属于这个类别。这类职位主要的功能是提取数据、挖掘数据中隐含的业务信息,支撑企业决策。 这个类别中的大数据算法,其实我们基本上可以理解算法工程师。 https://blog.csdn.net/weixin_42462804/article/details/104369625
15.大数据算法(王宏志著)完整pdf扫描版[101MB]电子书下载大数据算法是国内系统介绍大数据算法设计与分析技术的教材,内容丰富,结构合理,旨在讲述和解决大数据处理和应用中相关算法设计与分析的理论和方法,切实培养读者设计、分析与应用算法解决大数据问题的能力。不仅适合计算机科学、软件工程、大数据、物联网等学科的本科生和研究生使用,而且可供其他相近学科的本科生和研究生使用。https://www.jb51.net/books/583619.html
16.海量大数据处理面试题和思路总结【大数据学习与分享】技术干货合集?mp.weixin.qq.com/s/iErdnCu3Li-1inf6VKr5Tg 何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。那解决办法呢? 针对时间,我们可以采用巧https://zhuanlan.zhihu.com/p/356396163