设置Apache Hadoop多节点集群
我們正在分享有關(guān)在基于Linux的機(jī)器(多節(jié)點(diǎn))上安裝Apache Hadoop的經(jīng)驗(yàn)。 在這里,我們還將分享我們在各種故障排除方面的經(jīng)驗(yàn),并在將來進(jìn)行更新。
用戶創(chuàng)建和其他配置步驟–
- 我們首先在每個(gè)集群中添加一個(gè)專用的Hadoop系統(tǒng)用戶。
- 接下來,我們在所有群集上配置SSH(安全外殼)以啟用安全的數(shù)據(jù)通信。
輸出將類似于以下內(nèi)容:
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 .....- 接下來,我們需要使用此新創(chuàng)建的密鑰啟用對本地計(jì)算機(jī)的SSH訪問:
在所有群集節(jié)點(diǎn)中重復(fù)上述步驟,并通過執(zhí)行以下語句進(jìn)行測試
hduser@node1:~$ ssh localhost還需要執(zhí)行此步驟,以將本地計(jì)算機(jī)的主機(jī)密鑰指紋保存到hduser用戶的known_hosts文件中。
接下來,我們需要編輯/ etc / hosts文件,在其中將集群中每個(gè)系統(tǒng)的IP和名稱放入其中。
在我們的方案中,我們有一個(gè)主機(jī)(IP 192.168.0.100)和一個(gè)從機(jī)(IP 192.168.0.101)
$ sudo vi /etc/hosts然后將這些值作為鍵值對放入主機(jī)文件中。
192.168.0.100 master 192.168.0.101 slave- 提供SSH訪問
主節(jié)點(diǎn)上的hduser用戶必須能夠連接
因此,我們將hduser @ master的SSH公鑰分配給它的所有從屬(在我們的情況下,我們只有一個(gè)從屬。如果您有更多從屬,請執(zhí)行以下語句更改計(jì)算機(jī)名稱,即slave,slave1,slave2)。
hduser@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave嘗試通過將主機(jī)連接到主機(jī),將主機(jī)連接到從機(jī),然后檢查是否一切正常。
配置Hadoop
- 讓我們編輯conf / masters (僅在masters節(jié)點(diǎn)中)
然后我們在文件中輸入master
為此,我們告訴Hadoop在此計(jì)算機(jī)的多節(jié)點(diǎn)集群中啟動(dòng)Namenode和secondary NameNodes 。
主NameNode和JobTracker將始終在我們運(yùn)行bin / start-dfs.sh和bin / start-mapred.sh的計(jì)算機(jī)上 。
- 現(xiàn)在讓我們使用以下命令編輯conf / slaves (僅在masters節(jié)點(diǎn)中)
這意味著,我們也嘗試在主機(jī)上運(yùn)行datanode進(jìn)程-namenode也在其中運(yùn)行。 如果我們擁有更多的機(jī)器作為數(shù)據(jù)節(jié)點(diǎn),我們可以讓主服務(wù)器充當(dāng)從服務(wù)器。
如果我們有更多的奴隸,那么每行添加一個(gè)主機(jī),如下所示:
master slave slave2 slave3等等…。
現(xiàn)在,讓我們編輯兩個(gè)重要文件( 在集群的所有節(jié)點(diǎn)中):
1)conf / core-site.xml
我們必須更改指定NameNode主機(jī)和端口的fs.default.parameter 。 (在我們的例子中,這是主機(jī))
<property><name>fs.default.name</name> <value>hdfs://master:54310</value>…..[Other XML Values]</property>創(chuàng)建一個(gè)目錄,Hadoop將在其中存儲(chǔ)其數(shù)據(jù)–
$ 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參數(shù),該參數(shù)指定默認(rèn)的塊復(fù)制。 它定義了單個(gè)文件可用之前應(yīng)復(fù)制到多少臺(tái)計(jì)算機(jī)。 如果將其設(shè)置為大于可用從屬節(jié)點(diǎn)數(shù)(更確切地說是DataNode數(shù))的值,則將開始在日志中看到很多“(找到零目標(biāo),forbidden1.size = 1)”類型錯(cuò)誤文件。
dfs.replication的默認(rèn)值為3。但是,由于(在我們的方案中)只有兩個(gè)節(jié)點(diǎn)可用,因此我們將dfs.replication設(shè)置為2。
<property> <name>dfs.replication</name> <value>2</value> …..[Other XML Values] </property>- 讓我們通過NameNode 格式化 HDFS文件系統(tǒng)。
在master上運(yùn)行以下命令
bin/hadoop namenode -format- 讓我們啟動(dòng)多節(jié)點(diǎn)集群:
運(yùn)行命令:(在本例中,我們將在名為master的機(jī)器上運(yùn)行)
bin/start-dfs.sh檢查Hadoop狀態(tài)–
一切開始后,在所有節(jié)點(diǎn)上運(yùn)行jps命令以查看一切運(yùn)行良好與否。
在主節(jié)點(diǎn)上,所需的輸出將是–
$ jps14799 NameNode 15314 Jps 14880 DataNode 14977 SecondaryNameNode在從站中:
$ jps 15314 Jps 14880 DataNode當(dāng)然,進(jìn)程ID會(huì)因計(jì)算機(jī)而異。
故障排除
Datanode可能無法在我們所有的節(jié)點(diǎn)中啟動(dòng)。 在這一點(diǎn)上,如果我們看到
logs/hadoop-hduser-datanode-.log在受影響的節(jié)點(diǎn)上,以下情況除外:
java.io.IOException: Incompatible namespaceIDs在這種情況下,我們需要執(zhí)行以下操作–
要么
我們可以手動(dòng)更新有問題的DataNode的namespaceID:
在Apache Hadoop(多節(jié)點(diǎn)群集)中運(yùn)行Map-Reduce作業(yè)中 ,我們將按照apache hadoop示例分享有關(guān)Map Reduce Job Running的經(jīng)驗(yàn)。
資源資源
- 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
總結(jié)
以上是生活随笔為你收集整理的设置Apache Hadoop多节点集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝马CEO直言:欧洲车企和中国车企打价格
- 下一篇: 番石榴的EventBus –简单的发布者