当前位置: 首页 > news >正文

吃透大数据算法-算法地图(备用)

在大数据架构组件中,算法的核心作用是解决 “大规模数据处理的效率、精度、资源平衡” 问题,除动态规划、贪心算法外,更多算法聚焦于 “分布式计算、数据存储优化、近似统计、流处理、图分析” 等场景。以下按核心场景分类,以表格形式梳理常用算法及实际应用:

大数据架构组件常用算法分类表

核心场景算法名称核心逻辑大数据组件应用实例
一、分布式计算与数据分片1. 分治算法(Divide and Conquer)将大规模任务拆分为多个独立子任务,并行计算后合并结果,降低单节点压力。- MapReduce:将计算拆分为 Map(分片处理)和 Reduce(结果合并);- Spark Shuffle:按 Key 哈希分片,实现分布式聚合。
2. 哈希分区算法(Hash Partitioning)基于数据的 Key 哈希值分配到不同节点 / 分区,确保相同 Key 的数据集中存储,减少跨节点传输。- Kafka:按 Topic 的 Key 哈希分配分区,保证同 Key 消息有序;- Spark:Shuffle 阶段默认 Hash 分区,HBase 按 RowKey 哈希分配 Region。
3. 一致性哈希算法(Consistent Hashing)将节点 / 数据映射到环形哈希空间,节点新增 / 下线时仅影响少量数据迁移,避免全量重分布。- Redis Cluster:用于节点负载均衡,减少槽位迁移;- HBase:RegionServer 扩容时的 Region 分配,降低数据迁移开销。
二、数据存储与索引优化1. LSM 树算法(Log-Structured Merge Tree)写操作先存内存(MemTable),满后异步合并到磁盘(SSTable),通过多阶合并优化读写性能。- HBase/RocksDB:底层存储引擎,支持高写入吞吐量;- Hudi/Milvus:用于增量数据存储与索引维护。
2. 布隆过滤器算法(Bloom Filter)用多个哈希函数映射数据到位数组,快速判断 “数据是否可能存在”(允许低误判率),避免无效磁盘 IO。- HBase:用于 RowKey 过滤,减少不存在数据的磁盘查询;- Spark:Join 操作前过滤不存在的 Key,减少 Shuffle 数据量。
3. Z-Order / 希尔伯特曲线(空间填充曲线)将多维数据(如经纬度、时间 + ID)编码为一维序列,保持空间局部性,优化多维范围查询。- Hudi/Iceberg:用于多维数据重排序(如时间 + 用户 ID),加速跨维度查询;- ClickHouse:用于地理空间数据存储,提升区域查询效率。
三、近似统计与精准度平衡1. HyperLogLog(HLL)通过 “概率性计数” 估算数据基数(唯一值数量),用少量内存(如 12KB)处理亿级数据,误差可控制在 2% 以内。- Spark SQL:approx_count_distinct函数,用于 UV 统计;- Flink:流处理中实时估算用户活跃度(DAU/MAU)。
2. Count-Min Sketch(CMS)用多个哈希函数映射数据到二维计数器数组,估算数据出现频率,支持流数据热点统计(允许低误差)。- Flink:实时检测热门商品 / 高频日志(如 “10 万 / 秒弹幕中的高频关键词”);- Redis:用于限流算法(如滑动窗口限流中的频率估算)。
3. 抽样算法(Reservoir Sampling)从动态流数据中随机抽取固定大小的样本(如 1000 条),无需存储全量数据,保证样本随机性。- Spark:sample算子,用于大表数据探索性分析;- Flink:流处理中实时抽取样本,用于异常检测模型训练。
四、流处理与实时计算1. 窗口算法(滑动 / 滚动 / 会话窗口)按时间(如每 5 分钟)或数据量(如每 1000 条)划分 “窗口”,对窗口内数据批量计算,支持乱序数据处理。- Flink:支持基于 Watermark 的事件时间窗口,处理实时订单聚合(如 “每 1 分钟更新的 5 分钟销量”);- Kafka Streams:滚动窗口统计 Topic 消息频次。
2. Watermark 算法生成 “事件时间戳的延迟阈值”(如允许 3 秒延迟),标记窗口内数据是否完整,解决流数据乱序问题。- Flink:核心乱序处理机制,确保窗口计算不丢数据、不重复计算;- Spark Streaming:Structured Streaming 的事件时间对齐依赖 Watermark。
3. Space-Saving 算法流数据中实时维护 “TopK 高频项”,用有限内存记录候选高频项及其计数,无需存储全量数据,精度接近精确值。- Flink:实时 TopK 统计(如 “实时热搜榜 Top10”);- 日志系统:检测高频错误日志类型,用于运维告警。
五、图计算与关联分析1. PageRank 算法通过 “节点的入链权重” 迭代计算节点重要性(如网页排名),支持分布式迭代计算,处理亿级边的图数据。- Spark GraphX:用于社交网络中 “用户影响力排名”;- Neo4j(分布式版):知识图谱中实体重要性评估。
2. Dijkstra 算法基于 “贪心策略” 寻找图中两点间的最短路径(适用于非负权边),支持分布式并行计算,优化大规模图路径查询。- Spark GraphX:物流系统中 “仓库到网点的最短运输路径”;- HBase:地理信息系统(GIS)中两点间最优路线规划。
3. 连通分量算法(Union-Find)又称 “并查集”,快速判断图中节点是否属于同一连通分量,支持动态合并集合,用于图聚类与关联分析。- Spark GraphX:社交网络中 “用户社群划分”;- 风控系统:识别 “关联欺诈账号组”(同一连通分量的账号视为关联)。
六、查询优化与执行1. 哈希连接(Hash Join)将小表构建哈希表(内存中),遍历大表时通过哈希表快速匹配关联 Key,避免大表排序,适合大表 Join。- Spark SQL:小表(<10GB)与大表 Join 的默认算法;- ClickHouse:分布式 Join 中 “小表广播 + 大表哈希匹配”。
2. 排序合并连接(Sort Merge Join)先将两张表按 Join Key 排序,再并行遍历两张表合并结果,适合两张均为大表的 Join 场景,避免内存溢出。- Spark SQL:大表 Join(如 100GB + 表)的优化算法;- Hive:Tez 执行引擎中多表关联的默认 Join 方式。
3. 基于成本的优化(CBO)统计算法收集表的统计信息(如行数、列值分布、NDV),估算不同执行计划的 “CPU/IO 成本”,选择最优计划。- Spark SQL:优化 Join 顺序、索引选择(如是否用 Bloom Filter);- StarRocks:多列联合统计信息用于选择最优扫描算子。

总结:算法选择逻辑

  1. 写入密集场景(如日志存储):优先选 LSM 树(优化写入)、一致性哈希(减少节点迁移);
  2. 实时统计场景(如 UV/TopK):优先选 HLL(基数估计)、Space-Saving(实时 TopK),平衡精度与性能;
  3. 大规模 Join / 聚合:小表用 Hash Join,大表用 Sort Merge Join,配合 Bloom Filter 过滤无效数据;
  4. 图 / 关联分析:用 PageRank(节点重要性)、Union-Find(连通分量),依托分布式图计算框架(如 Spark GraphX)实现。

(欢迎关注。欢迎订阅 本专栏 )

http://www.dtcms.com/a/485889.html

相关文章:

  • 前端性能优化实战:从指标到落地的全流程指南
  • 120html
  • 四川建设人才官方网站制作app需要学哪些东西专业知识
  • 二叉搜索树 --- 概念 + 模拟
  • 系统安全-主流密码加密算法BCrypt 和PBKDF2详解
  • 【具身智能】具身机器人VLA算法入门及实战(一):具身智能系统及VLA
  • 网站设计_网站建设_手机网站建设免费申请域名的网站
  • (1)认识测试
  • 2025年--Lc188--221. 最大正方形(多维动态规划,矩阵)--Java版
  • 【Redis】缓存读/写操作流程
  • 网站开发的网页模板移动网站建设价格便宜
  • Grafana 数据展示全流程指南:从安装到高级可视化实践
  • 电脑没法ping通某个网段的ip
  • ​rxnfp 仓库介绍(https://rxn4chemistry.github.io/rxnfp)​
  • iOS 26 文件管理实战,多工具组合下的 App 数据访问与系统日志调试方案
  • 工信部网站找回不了密码网站用什么做
  • MaxScale:MySQL读写分离实战指南
  • 基于Vue的体检中心管理系统的开发bk1825s9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • RabbitMQ的概述
  • 使用PyTorch实现图像分类任务的全流程详解
  • JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
  • 吃谷机主题商城小程序的界面功能设计
  • 创建网站超市网络免费推广平台
  • 【征文计划】码上分享:基于 Rokid CXR-M SDK 构建「AI远程协作助手」实战全记录
  • PortSwigger靶场之CSRF where token is tied to non-session cookie通关秘籍
  • laya报错:GET http://xxx/bin/%22%22 404(Not Found)
  • 兴义市住房和城乡建设局网站莲花网站
  • 标题:Linux 系统中的“保险库管理员”:深入浅出理解 /etc/shadow 文件
  • CSS3》》 transform、transition、translate、animation 区别
  • HTML实现流星雨