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

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

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

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

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

相关推荐
WLJT123123123几秒前
守护自然与滋养民生的绿色之路
大数据·安全
min18112345614 分钟前
PC端零基础跨职能流程图制作教程
大数据·人工智能·信息可视化·架构·流程图
静听松涛13332 分钟前
中文PC端多人协作泳道图制作平台
大数据·论文阅读·人工智能·搜索引擎·架构·流程图·软件工程
kejiayuan37 分钟前
CTE更易懂的SQL风格
数据库·sql
kaico201841 分钟前
MySQL的索引
数据库·mysql
黄焖鸡能干四碗1 小时前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
世岩清上1 小时前
乡村振兴主题展厅本土化材料运用与地域文化施工表达
大数据·人工智能·乡村振兴·展厅
清水白石0081 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
资生算法程序员_畅想家_剑魔1 小时前
Mysql常见报错解决分享-01-Invalid escape character in string.
数据库·mysql
说私域2 小时前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序