ARTICLE · 1097787
Hadoop 源码学习手册 08 · HDFS 客户端扩展
Hadoop 源码学习手册 08 · HDFS 客户端扩展
以前写个读文件的小程序,得拖上整个 NameNode 实现。后来把 jar 拆了,客户端只留个轻量包,不用再背几 MB 的服务端代码。
真正干活的是 DFSClient。读文件时先问 NameNode 要 block 位置,拿到后直接连 DataNode 拉数据。NameNode 只负责指路,不碰实际数据。
写入更精妙,靠两个队列解耦发送和确认。packet 发出去就放进 ackQueue,等确认才删。万一某个 DataNode 宕机没回音,就把坏节点踢掉,找 NameNode 补个新节点,重发没确认的 packet。整个过程对上层完全透明。
要是非 Java 程序想访问,也有路子。浏览器能调的 HttpFS 把操作翻译成 HTTP;NFS 网关能把 HDFS 挂成本地目录,不过得先把乱序写排好序再落盘。还有纯 C++ 写的 libhdfs++,不依赖 JVM,特别适合机器学习这种高频读样本的场景。
原文Hadoop 源码学习手册 08 · HDFS 客户端扩展|口袋通识馆
山西,2小时前,