设置Apache Hadoop多节点集群
我們正在分享有關在基于Linux的機器(多節點)上安裝Apache Hadoop的經驗。 在這里,我們還將分享我們在各種故障排除方面的經驗,并在將來進行更新。
用戶創建和其他配置步驟–
- 我們首先在每個集群中添加一個專用的Hadoop系統用戶。
- 接下來,我們在所有群集上配置SSH(安全外殼)以啟用安全的數據通信。
輸出將類似于以下內容:
Generating public/private rsa key pair. Enter file in which to save the key (/home/hduser/.ssh/id_rsa): Created directory '/home/hduser/.ssh'. Your identification has been saved in /home/hduser/.ssh/id_rsa. Your public key has been saved in /home/hduser/.ssh/id_rsa.pub. The key fingerprint is: 9b:82:ea:58:b4:e0:35:d7:ff:19:66:a6:ef:ae:0e:d2 hduser@ubuntu .....- 接下來,我們需要使用此新創建的密鑰啟用對本地計算機的SSH訪問:
在所有群集節點中重復上述步驟,并通過執行以下語句進行測試
hduser@node1:~$ ssh localhost還需要執行此步驟,以將本地計算機的主機密鑰指紋保存到hduser用戶的known_hosts文件中。
接下來,我們需要編輯/ etc / hosts文件,在其中將集群中每個系統的IP和名稱放入其中。
在我們的方案中,我們有一個主機(IP 192.168.0.100)和一個從機(IP 192.168.0.101)
$ sudo vi /etc/hosts然后將這些值作為鍵值對放入主機文件中。
192.168.0.100 master 192.168.0.101 slave- 提供SSH訪問
主節點上的hduser用戶必須能夠連接
因此,我們將hduser @ master的SSH公鑰分配給它的所有從屬(在我們的情況下,我們只有一個從屬。如果您有更多從屬,請執行以下語句更改計算機名稱,即slave,slave1,slave2)。
hduser@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave嘗試通過將主機連接到主機,將主機連接到從機,然后檢查是否一切正常。
配置Hadoop
- 讓我們編輯conf / masters (僅在masters節點中)
然后我們在文件中輸入master
為此,我們告訴Hadoop在此計算機的多節點集群中啟動Namenode和secondary NameNodes 。
主NameNode和JobTracker將始終在我們運行bin / start-dfs.sh和bin / start-mapred.sh的計算機上 。
- 現在讓我們使用以下命令編輯conf / slaves (僅在masters節點中)
這意味著,我們也嘗試在主機上運行datanode進程-namenode也在其中運行。 如果我們擁有更多的機器作為數據節點,我們可以讓主服務器充當從服務器。
如果我們有更多的奴隸,那么每行添加一個主機,如下所示:
master slave slave2 slave3等等…。
現在,讓我們編輯兩個重要文件( 在集群的所有節點中):
1)conf / core-site.xml
我們必須更改指定NameNode主機和端口的fs.default.parameter 。 (在我們的例子中,這是主機)
<property><name>fs.default.name</name> <value>hdfs://master:54310</value>…..[Other XML Values]</property>創建一個目錄,Hadoop將在其中存儲其數據–
$ mkdir /app/hadoop我們必須確保該目錄可由任何用戶寫入:
$ chmod 777?/app/hadoop再次修改core-site.xml以添加以下屬性:
<property> <name>hadoop.tmp.dir</name> <value>/app/hadoop</value> </property>2)conf / core-hdfs.xml
我們必須更改dfs.replication參數,該參數指定默認的塊復制。 它定義了單個文件可用之前應復制到多少臺計算機。 如果將其設置為大于可用從屬節點數(更確切地說是DataNode數)的值,則將開始在日志中看到很多“(找到零目標,forbidden1.size = 1)”類型錯誤文件。
dfs.replication的默認值為3。但是,由于(在我們的方案中)只有兩個節點可用,因此我們將dfs.replication設置為2。
<property> <name>dfs.replication</name> <value>2</value> …..[Other XML Values] </property>- 讓我們通過NameNode 格式化 HDFS文件系統。
在master上運行以下命令
bin/hadoop namenode -format- 讓我們啟動多節點集群:
運行命令:(在本例中,我們將在名為master的機器上運行)
bin/start-dfs.sh檢查Hadoop狀態–
一切開始后,在所有節點上運行jps命令以查看一切運行良好與否。
在主節點上,所需的輸出將是–
$ jps14799 NameNode 15314 Jps 14880 DataNode 14977 SecondaryNameNode在從站中:
$ jps 15314 Jps 14880 DataNode當然,進程ID會因計算機而異。
故障排除
Datanode可能無法在我們所有的節點中啟動。 在這一點上,如果我們看到
logs/hadoop-hduser-datanode-.log在受影響的節點上,以下情況除外:
java.io.IOException: Incompatible namespaceIDs在這種情況下,我們需要執行以下操作–
要么
我們可以手動更新有問題的DataNode的namespaceID:
在Apache Hadoop(多節點群集)中運行Map-Reduce作業中 ,我們將按照apache hadoop示例分享有關Map Reduce Job Running的經驗。
資源資源
- http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
- http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/
- http://hadoop.apache.org/docs/current/
翻譯自: https://www.javacodegeeks.com/2013/06/setting-up-apache-hadoop-multi-node-cluster.html
總結
以上是生活随笔為你收集整理的设置Apache Hadoop多节点集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝马CEO直言:欧洲车企和中国车企打价格
- 下一篇: 顽皮狗总裁 Neil Druckmann