云服務器搭建Hadoop分布式的過程詳解
1.服務器配置
服務器 | 主機名 | 配置 |
---|---|---|
115.157.197.82 | s1 | 10核 |
115.157.197.84 | s2 | 10核 |
115.157.197.109 | s3 | 10核 |
115.157.197.31 | s4 | 10核 |
115.157.197.60 | gracal | 10核 |
所有的軟件安裝在/opt/module下,軟件安裝包在/opt/softs下
2.Java環(huán)境
所有的服務器的java統(tǒng)一1.8版本,查看java版本
java --version
? 若存在java環(huán)境不統(tǒng)一,或者沒有1.8版本的jdk
無1.8版本的java
yum install -y java-1.8.0-openjdk*
環(huán)境不統(tǒng)一
#查看java版本 alternates --config java #選擇1.8版本的數字
相關的JAVA_HOME、Hadoop_HOME環(huán)境變量都保存在
/etc/profile.d/my_env.sh
中
3. 安裝Hadoop
- 確保Hadoop統(tǒng)一版本:hadoop3.1.3
- 編寫文件分發(fā)腳本,可以在一臺服務器分發(fā)到其他服務器:xsync腳本,在
/home/gaochuchu/bin
目錄下
4. 集群配置
各個組件的分布情況
s1 | s2 | s3 | s4 | gracal | |
---|---|---|---|---|---|
HDFS | NameNode DataNameNode | DataNameNode | SecondaryNameNode DataNameNode | DataNameNode | DataNameNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager | NodeManager | NodeManager |
常用端口配置 (分Hadoop2.x和Hadoop3.x的區(qū)別)
端口名稱 | Hadoop2.x | Hadoop3.x |
---|---|---|
NameNode內部通信端口 | 8020/9000 | 8020/ |
NameNode HTTP UI | 50070 | 9870 |
MapReduce查看執(zhí)行任務端口 | 8088 | 8088(容易和框架端口沖突,本文配置的7666) |
歷史服務器通信端口 | 19888 | 19888 |
- 在客戶端機器(筆記本)配置ip和服務器主機名的映射,希望能通過主機名+端口號在瀏覽器訪問各個Web頁面
- 問題:通過s2:7666無法訪問ResourceManger的web UI,而通過直接的ip:7666又可以訪問其webUI
- 遇到這個問題我無法理解為什么會出問題
- 漫長的排錯過程:
- 1.檢查了服務器之間的ip和主機名的映射,各個服務器主機之間通過主機名可以ping通,說明映射沒有問題
- 2.檢查客戶端mac本機的hosts文件映射未發(fā)現問題,并且在客戶端的終端也能ping通各個主機名,說明映射沒有問題
- 3.且查看各個服務器的防火墻也處于關閉狀態(tài)
- 4.通過
netstat -nltp|grep 7666
查看端口的監(jiān)聽情況,也是正常監(jiān)聽狀態(tài) - 5.在網上搜索很多相關解決方案:關閉防火墻,設置etc/sysconfig/selinux的級別為disable,都沒有結果
- 因此,我認為應該在客戶端本機出現問題,驗證問題過程
- 問題:通過s2:7666無法訪問ResourceManger的web UI,而通過直接的ip:7666又可以訪問其webUI
6.1 發(fā)現在本地主機telnet s2 7666
可以成功訪問,但是curl s2:7666
沒有輸出頁面的任何信息
6.2 使用cur -v s2:7666查看相關信息
- 發(fā)生地址的重定位,然后使用命令
curl -v http://s2:7666/cluser
成功返回了相關的html信息,說明頁面其實是可以訪問的
6.3 但是瀏覽器端還是無法訪問:后查詢到瀏覽器可能配置了代理服務器,而’curl’命令未配置代理。代理服務器會煩擾瀏覽器的訪問。
因此我關閉了VPN代理,成功訪問到s2:7666頁面!!
以后VPN代理一定要慎用!?。∨挪榱诉@么久發(fā)現最后居然是代理問題
- 啟動集群測試
- 啟動HDFS
[gaochuchu@s1 hadoop-3.1.3]$ sbin/start-dfs.sh
- 啟動YARN
[gaochuchu@s1 hadoop-3.1.3]$ sbin/start-yarn.sh
問題:
解決:
- 這里的hadoop配置的是root用戶創(chuàng)建的hadoop環(huán)境,本地用戶無權限
- 修改環(huán)境變量/etc/profile,注釋配置的HADOOP_HOME,重新source
運行hadoop自帶的wordcount示例程序報錯,并且一直卡在Running Job位置,報錯信息如下:
java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as [某ip]:9866
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:134)
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:110)
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1778)
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1679)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:716)
......
Caused by: java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:700)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:804)
at org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:421)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1606)
at org.apache.hadoop.ipc.Client.call(Client.java:1435)
... 19 more
如何解決這種問題?
- 注意報錯信息:No route to host ,說明沒有到host的路由,排查思路,確定與對應服務器端口是否聯通
- 首先測試某ip自身9866端口是否聯通,說明聯通
說明s1服務器和…31:9866可能是不連通的
經查找相關資料說明是…31服務器的icmp(Internet Control Message Protocol)被禁用導致。
命令查看iptable是否有防火墻設置:
iptables -L INPUT --line-numbers
發(fā)現:
命令刪除這條記錄:
iptables -D INPUT 28
5. 編寫集群的啟動腳本
因為每次集群啟動需要在NameNode節(jié)點的HADOOPHOME目錄下使用命令啟動HDFS
sbin/start-dfs.sh
在Yarn節(jié)點上通過命令啟動Yarn(ResourceManager)
sbin/start-yarn.sh
配置了歷史服務器,還需要在歷史服務器的節(jié)點上使用命令啟動歷史服務器
mapred --daemon start historyserver
相應的停止集群也需要通過以下三個命令來停止集群
sbin/stop-dfs.sh sbin/stop-yarn.sh mapred --daemon stop historyserver
因此,可以編寫相關的腳本啟停(HDFS Yarn Historyserver)
- 在
/home/gaochuchu/bin
目錄下編寫myhadoop.sh腳本啟停Hadoop集群
#啟動Hadoop集群 myhadoop.sh start #停止Hadoop集群 myhadoop.sh stop
服務器各節(jié)點的狀態(tài)都需要通過在筆不同服務器上通過jps
命令查看,比較麻煩
- 在
/home/gaochuchu/bin
目錄下編寫jpsall
腳本,可以查看所有服務器上的節(jié)點狀態(tài)
到此這篇關于云服務器搭建Hadoop分布式的過程詳解的文章就介紹到這了,更多相關云服務器搭建Hadoop內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
dell r710 服務器配置RAID5(3塊硬盤做RAID5)
這篇文章主要介紹了dell r710 服務器配置RAID5圖文教程,需要的朋友可以參考下2014-08-08ubuntu20.04部署ntp服務器ntpd(ntpdate?)的詳細過程
這篇文章主要介紹了ubuntu20.04部署ntp服務器ntpd(ntpdate?)的詳細過程,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09Ubuntu Server Rsync服務端與Windows cwRsync客戶端數據同步配置方法
這篇文章主要介紹了Ubuntu Server Rsync服務端與Windows cwRsync客戶端數據同步配置方法,需要的朋友可以參考下2015-07-07HTTP常見的狀態(tài)碼HTTP Status Code
這篇文章主要介紹了HTTP常見的狀態(tài)碼HTTP Status Code2017-01-01