一.使用VMvare創建兩個虛擬機,我使用的是ubuntu17版本的,並關閉全部虛擬機的防火牆
1.我們把用於主節點的虛擬機名稱設為master(按自己的喜好創建),把用於從節點的虛擬機名稱設為slave1
- 修改主機名的命令:sudo vim /etc/hostname
- 把原主機名ubuntu改為master(在從主機上則改為slave1)
2.為了虛擬機之間能ping通,需要修改虛擬機的ip地址(這里以在master機器操作為例子,從節點的虛擬機也要進行一致的操作)
- 命令:sudo vim /etc/hosts
把/etc/hosts中yangcx-virtual-machine修改為剛剛改過的主機名master,同時將前面的ip地址改為實際的ip地址
怎么知道自己虛擬機的ip地址?
命令:ifconfig -a
slave1的ip地址就是從虛擬機slave1的真實ip地址。同樣,我們在slave1虛擬機上也要進行這一步操作。
二、建立ssh無密碼登錄本機
1、創建ssh-key,,這里我們采用rsa方式
- ssh-keygen -t rsa -P "" //(P是要大寫的,后面跟"")(注:回車后會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)
2. 進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權文件中,開始是沒有authorized_keys文件的
-
- cd ~/.ssh
- cat id_rsa.pub >> authorized_keys
完成后就可以無密碼登錄本機了。
3、登錄localhost
ssh localhost ( 注:當ssh遠程登錄到其它機器后,現在你控制的是遠程的機器,需要執行退出命令才能重新控制本地主機。)
4、執行退出命令
-
- exit
1~4步在master和slave1兩台虛擬機上都要配置
5.配置master無密碼登陸slave1
mater主機中輸入命令復制一份公鑰到home中:
cp .ssh/id_rsa.pub ~/id_rsa_master.pub
把master的home目錄下的id_rsa_master.pub拷到slave1的home下(我的做法是先拖到windows桌面上,在拖進slave1虛擬機中)
slave1的home目錄下分別輸入命令
cat id_rsa_master.pub >> .ssh/authorized_keys
至此實現了mater對slave1的無密碼登陸
三. 配置 hadoop的配置文件
以下的步驟只在master上進行(除了hadoop的環境變量配置在slave1上也要進行之外)
1.core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/zjp/hadoop-2.7.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
2.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/zjp/hadoop-2.7.7/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/zjp/hadoop-2.7.7/tmp/dfs/data</value>
</property>
</configuration>
3.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
4.yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<!-- 會遇到資源不足的問題。出於測試目的,禁用內存檢查如下兩條配置語句-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
5.配置slaves 文件
sudo vim slaves
把原本的localhost刪掉,改為slave1
6.接下來,將hadoop傳到slave1虛擬機上面去:
scp -r hadoop-2.7.7 zjp@slave1:~/
注意:hadoop是虛擬機的用戶名,創建slave1時設定的
7.初始化hadoop
bin/hdfs namenode -format
8.開啟hadoop
兩種方法:
- sbin/start-all.sh
- 先start-dfs.sh,再start-yarn.sh
如果在mater上面鍵入jps后看到
在slave1上鍵入jps后看到
則說明集群搭建成功
四.最后用自帶的樣例測試hadoop集群能不能正常跑任務
使用命令
bin/hadoop jar /home/zjp/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10
最后看到結果:

參考:https://blog.csdn.net/fanxin_i/article/details/80425461