文章目錄
- 一. 問題描述
- 二. 問題分析
- 1. 排查機器性能
- 2. DNS的問題
- 三. 問題解決
一句話:因為dns的問題導致journalnode啟動時很慢,通過修復dns對0.0.0.0域名解析,修復此問題。
一. 問題描述
從journalnode啟動到服務可用,完成RPC Listen,需要花費大概1分多鐘的問題,而這不符合安裝預期。
二. 問題分析
1. 排查機器性能
簡單查看cpu、內存、磁盤、網絡等是否存在問題
# top 資源占用
top# 內存
free -h
# 磁盤占用
df -h# 網絡延遲
ping hostname
發現都正常。
?
2. DNS的問題
查看了資源都正常,此時有些迷茫,打開chat-gpt問問:
其中第一點提到了DNS的問題,而日志中看到:
在啟動journalnode過程中會啟動8480、和8485端口,而這兩個端口使用的ip都是0.0.0.0。
0.0.0.0意味著journalnode將監聽所有可用ip地址,這里的ip地址指的是journalnode所在節點的所有地址。
好處是內網ip和外網ip都能被訪問ing?
?
執行:nmap -v 0.0.0.0
nmap -v 0.0.0.0。。。
Initiating Parallel DNS resolution of 1 host. at 18:00
Completed Parallel DNS resolution of 1 host. at 18:00, 13.00s elapsed
。。。
大概意思是0.0.0.0的DNS解析花費了13秒。
另外一臺機同樣執行:
nmap -v 0.0.0.0。。。
Initiating Parallel DNS resolution of 1 host. at 18:17
Completed Parallel DNS resolution of 1 host. at 18:17, 0.03s elapsed
。。。
只花了0.03秒,說明此節點的DNS解析確實有問題。
?
再觀察個有意思的現象:
nmap -v hostname1Starting Nmap 6.40 ( http://nmap.org ) at 2023-11-23 18:20 CST
Initiating Ping Scan at 18:20
Scanning xxx [2 ports]
Completed Ping Scan at 18:20, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 18:20
。。。。
Completed Connect Scan at 18:20, 0.03s elapsed (1000 total ports)
。。。
Host is up (0.00038s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
8899/tcp open ospf-lite
9000/tcp open cslistener
9010/tcp open sdrRead data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
當我對具體hostname執行這個命令時,發現沒有DNS解析,這里是hosts文件起了作用,繞開了DNS。
Hosts文件是一種本地的文本文件,位于計算機的文件系統中。它用于將特定的主機名映射到相應的IP地址,充當本地的靜態映射表。
?
當系統嘗試訪問某個主機名時,它首先會查找本地hosts文件,如果找到對應的映射,就直接使用這個映射而不進行DNS查詢。這可以提高訪問速度,并且可以在本地定義自定義的主機名到IP地址的映射。
?
那既然能繞過DNS,我將journalnode的配置改成具體hostname,如下:hdfs-site.xml
<property><name>dfs.journalnode.rpc-address</name><value>hostname1:8485</value><description>Address for JournalNode RPC (e.g., "hostname:8485")</description></property><property><name>dfs.journalnode.http-address</name><value>hostname1:8480</value><description>Address for JournalNode HTTP (e.g., "hostname:8480")</description></property>
重新啟動journalnode:
發現啟動速度果然上來了。那基本上可以確定是因為DNS解析慢導致了hadoop組件啟動慢。
?
三. 問題解決
修改DNS配置
去掉無法連接的DNS地址后,測試journalNode服務在0.0.0.0地址監聽,啟動過程無延遲。