50010 端口是什么
50010 是 Hadoop 2.x 中 HDFS DataNode 的默认数据传输端口,块数据的读写流水线走这里。配套的 50020 是 DataNode 与 NameNode 之间的控制面端口,50075 是它的 Web 页面。Hadoop 3 之后数据口改为 9866,新旧文档对不上是排障时最常见的混乱来源之一。
基本信息
| 服务 | HDFS DataNode 数据口(Hadoop 2 默认 50010,Hadoop 3 改为 9866) |
|---|---|
| 协议 | TCP(DataTransferProtocol) |
| 用途 | 块数据读写与副本流水线 |
| 相关端口 | 50020 控制面、50075 节点页面 |
| 配置项 | dfs.datanode.address |
| 安全等级 | 仅集群内网 |
流水线是怎么工作的
客户端写入一个块时,先与第一个 DataNode 建立连接,由它再转发给下一个副本节点,形成一条流水线,确认全部写完后才向客户端返回成功。因此链路上任何一个节点的 50010 不通,都会导致整块写入失败或副本数不足,日志里的典型字样是流水线建立失败。
典型使用场景
- 写入变慢或失败排查:日志出现流水线异常时,先核对节点之间 50010 的连通性。
- 版本混布核对:集群里同时存在 Hadoop 2 与 3 的节点时,先对齐端口表再排查其它问题。
- 扩容与网络变更:新增节点或调整策略后,确认节点之间的数据口未被拦截。
- 热点定位:结合节点页面确认某些节点连接数异常,判断是否存在数据热点。
- 集群巡检:把关键端口连通性写入巡检脚本,缩短故障定位时间。
核对与排查
核对与排查
ss -lntp | grep 50010 # 确认本机是否监听
# hdfs-site.xml 关键配置:dfs.datanode.address 默认 0.0.0.0:50010
for h in dn01 dn02 dn03; do nc -zv $h 50010; done # 批量核对连通性
hdfs dfsadmin -report | head -20 # 查看节点与容量概要
tail -n 200 /var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log | grep -i pipeline # 找流水线报错输出逐列读法
| 列 | 含义 | 判读 |
|---|---|---|
| State | 套接字状态 | 监听属正常;出现大量已建立连接说明正在读写数据 |
| Recv-Q 与 Send-Q | 收发队列长度 | 持续非零说明数据积压,可能伴随磁盘慢或网络拥塞 |
| Local Address:Port | 监听地址与端口 | 绑定具体内网地址比通配地址更安全,便于按网段限制 |
| 日志关键字 | 排查线索 | 流水线建立失败通常指向节点间数据口不通或磁盘异常 |
Hadoop 3 把数据口改为 9866、节点页面改为 9864、控制面改为 9867。跨版本排障要先确认版本再确认端口,顺序反了会得出完全错误的结论。
数据口面向集群内部,不应暴露到集群网段之外。开放给办公网既无业务必要,也等于把块数据读写接口直接摆在外面。