Linux 环境下 HDFS 访问缓慢通常由多个层面引起,可以从网络、集群配置、客户端、磁盘、元数据等角度排查。下面按常见原因 + 排查思路给你一个系统总结。
排查:
sar -n DEV 1
iftop
ping <datanode_ip>
建议:
排查:
time nslookup <datanode>
getent hosts <datanode>
建议:
/etc/hosts 中配置 HDFS 节点dfs.datanode.use.datanode.hostname=falsedfs.replication=3
建议:
建议:
dfs.blocksize=128M~256M
现象:
hdfs dfs -ls 很慢排查:
hdfs dfsadmin -report
jstat -gc <nn_pid>
建议:
开启短路读:
dfs.client.read.shortcircuit=true
dfs.domain.socket.path=/var/lib/hadoop-hdfs/dn_socket
建议:
dfs.client.read.parallelism=8~16
排查:
iostat -x 1
dmesg | grep error
建议:
建议:
建议:
慢:
hdfs dfs -cat /file | wc -l
快:
hdfs dfs -text /file | wc -l
或:
hadoop jar xxx.jar
# 1. 网络
ping datanode
iftop
# 2. NameNode
hdfs dfsadmin -report
# 3. 配置
grep dfs.blocksize hdfs-site.xml
grep shortcircuit hdfs-site.xml
# 4. 磁盘
iostat -x 1
# 5. 小文件
hdfs dfs -count /path
如果你愿意,可以告诉我:
我可以直接帮你定位到具体参数或架构问题。