首先是大部分人通常碰到這個問題的緣由:hive沒有啓動,若是再三確認了這一點以後,仍舊沒法鏈接,能夠接着往下看。
問題是這樣的:
在對127.0.0.1綁定存在端口衝突時,hive可以啓動,可是沒法經過localhost訪問服務,只能使用0.0.0.0:10000來訪問。
發現此問題時個人hive-site.xml 配置:
緣由是:WSL2沒法真正綁定到127.0.0.1 ,在配置中任何對127.0.0.1 的綁定都會轉向綁定0.0.0.0
除開Spark(多是其netty的綁定有些特殊,考慮到WSL2 使用hyper-V虛擬機「寄生」在windows中,因此多是API走不走內核態調用的緣由,暫不深究)。windows
因此在WSL2中,不存在ip綁定到127.0.0.1的操做。 瀏覽器
那麼,理論上綁定127.0.0.1 不走網口,只能經過localhost訪問;可是0.0.0.0是走網口的,因此能夠經過對自身ip訪問到。curl
可是又有個奇怪的點。curl 和瀏覽器的方式始終能夠。
這邊給出一個結論:轉向綁定0.0.0.0以後,若是經過tcp/ip 進行訪問,則須要訪問0.0.0.0,不能使用localhost。
但http則不行,須要localhost,究其緣由,當使用http服務時,0.0.0.0被指向不可達IP(在server端監聽時,0.0.0.0表示全部可達IP,在客戶端也即瀏覽器,全部可達IP==沒有指定確切IP)。