Hadoop中Edge node与Local file system关联及文件传输疑问
Hadoop Edge Node与本地文件系统的关联及传输操作问题解答
二者的核心关联
- Edge Node(边缘节点)本质是部署了完整Hadoop客户端配置、网络层面可连通HDFS集群内部节点的服务器,是集群对外暴露的唯一访问入口,外部用户/应用不会被允许直连NameNode或DataNode。
- Edge Node自带的本地文件系统,就是用户在该节点上执行HDFS操作命令时默认对接的本地存储,二者是直接绑定的关系,不存在脱离本地文件系统的Edge Node使用场景。
执行put/get命令时感知不到Edge Node的原因
你觉得文件传输流程没有涉及Edge Node,核心原因是你执行hdfs dfs命令的那台机器,本身就是Edge Node:
- 日常使用中,用户通常会先通过SSH登录到运维提前配置好的Hadoop操作跳板机,这台机器预安装了Hadoop客户端、配置好了
core-site.xml、hdfs-site.xml等集群连接配置,能够正常解析HDFS服务地址、和集群节点通信,这就是标准的Edge Node。 - 你在这台机器上执行
put/get命令时,命令读取/写入的本地文件,就是这台Edge Node本地磁盘上的文件,整个请求从发起、到和NameNode交互获取元数据、再到和DataNode传输数据,全都是由这台Edge Node完成的。你感知不到“经过网关”的过程,本质是因为你自己就在网关节点上操作。 - 如果你尝试在没有配置Hadoop客户端、不在集群可信网络内的个人电脑上直接执行HDFS命令,会直接报连接失败——你必须先SSH登录到Edge Node,才能执行后续的文件操作,这时候就能明确感知到Edge Node的网关作用。
注意不要把Edge Node误解成什么特殊的转发硬件,它就是一台权限放通、配置齐全的普通服务器。你在Edge Node上写本地路径
./data.csv,指代的就是这台服务器本地磁盘里的文件;写HDFS路径/user/your_name/data.csv,指代的才是集群分布式存储里的文件。
举个最常见的操作场景,当你登录到Edge Node后执行命令:hdfs dfs -put ./local_access_log.parquet /user/etl/input/
背后的执行逻辑完全在Edge Node上完成:
- 命令进程在Edge Node本地启动,读取Edge Node本地文件系统当前目录下的
local_access_log.parquet - Edge Node向NameNode发起写入请求,拿到当前文件需要写入的DataNode地址列表
- Edge Node直接把文件拆分成对应的数据块,依次传输给目标DataNode完成写入
整个流程不需要额外做任何“跳转到Edge Node”的操作,自然不会有明显的感知。
内容的提问来源于stack exchange,提问作者Ramteja Guthikonda
相关产品推荐
相关产品推荐

