Hadoop
-
浅谈 HDFS 慢节点的解决方案
这篇文章围绕 HDFS 慢节点导致 OLAP 查询忽快忽慢的问题,梳理了问题成因和几种常见缓解手段。正文先区分数据多读、IO 次数过多、跨多个 HDFS Block 读取以及纯粹运气不好连到慢 DataNode 等不同来源,再分别讨论 Hedged Read 在解决慢节点时的原理、线程池规划和额外内存成本,以及通过缩短 HDFS 客户端 IO timeout 来尽快放弃慢请求的思路,最后结合 Trino 的历史经验说明这类配置本质上只是补救措施,真正的关键仍然是减少不必要的 IO。
-
HDFS Hedged Read 的利弊分析
这篇文章重新审视了 HDFS Hedged Read 的实际收益与代价,重点说明它虽然能缓解慢节点问题,但会显著放大内存开销。正文先回顾 Hedged Read 在超时后向其它副本发起并行读取的工作方式,再结合线上因频繁 OOM 触发查询失败的案例,分析 HDFS 客户端在开启该功能后会额外申请一个甚至两个 ByteBuffer,导致读取同一批数据时内存占用从原本的 1 倍上升到 2 到 3 倍,最后解释了为什么 HDFS 默认关闭这一功能。
-
StarRocks 中关于 Hadoop Hedged Read 性能测试
这篇文章围绕 StarRocks 接入 HDFS 后启用 Hadoop Hedged Read 的效果做了一轮系统性能测试,重点观察不同线程池大小和超时阈值对查询耗时的影响。正文先介绍 Hedged Read 的工作机制和实验环境,再分别在单线程、慢节点和高并发 CPU 打满等场景下比较多组配置结果,最后结合 DFSClient 的线程池实现分析其共享方式和扩缩容行为,并给出较大的超时阈值配合较宽线程池的推荐配置。
-
解决 IDEA 阅读 Hadoop 源码报错问题
这篇文章记录了在 IDEA 中阅读 Hadoop 3.3.0 源码时,因缺失 protobuf 生成类而出现大量报错的排查过程和最终解决方案。正文先分析 proto 相关类缺失的原因,再依次尝试手动用 protoc 编译、在本地按官方文档直接用 Maven 构建、以及基于 IDEA 或 VS Code 的远程开发方案,并说明这些方法各自遇到的问题。最后文章给出一条可行路径:在远程 Linux、虚拟机或 Docker 环境中完成 Hadoop 编译,再将 target/generated-sources/java 中生成的源码拖回项目中供 IDEA 正常索引和阅读。
-
Hadoop 完全分布式(Fully Distributed)安装
这篇文章记录了一个基于三台 CentOS 8 主机搭建 Hadoop 完全分布式集群的完整过程,内容从基础环境准备、主机通信、静态 IP、hadoop 用户和 SSH 免密登录开始,随后逐步配置 Hadoop 3.2.1 的 JAVA_HOME、HDFS、YARN 与 workers 节点,并将配置同步到各个从节点。最后文章通过格式化 NameNode、启动 HDFS 和 YARN、查看 jps 进程以及访问 Web 控制台的方式验证集群是否正常运行。