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

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

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

核心场景 算法名称 核心逻辑 大数据组件应用实例
一、分布式计算与数据分片 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)实现。

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

相关推荐
wangjialelele1 分钟前
mysql库操作二
数据库·mysql
Chloeis Syntax4 分钟前
MySQL初阶学习日记(1)--- 数据库的基本操作
数据库·学习·mysql
workflower1 小时前
FDD(Feature Driven Development)特征驱动开发
大数据·数据库·驱动开发·需求分析·个人开发
韩立学长1 小时前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
苦学编程的谢2 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小光学长2 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
小光学长2 小时前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Yeats_Liao3 小时前
时序数据库系列(二):InfluxDB安装配置从零搭建
数据库·后端·时序数据库
Yeats_Liao3 小时前
时序数据库系列(一):InfluxDB入门指南核心概念详解
数据库·后端·时序数据库·db