這里搭建的是3個節點的完全分布式,即1個nameNode,2個dataNode,分別如下:
CentOS-master nameNode 192.168.11.128
CentOS-node1 dataNode 192.168.11.131
CentOS-node2 dataNode 192.168..11.132
1.首先創建好一個CentOS虛擬機,將它作為主節點我這里起名為CentOS-master,起什么都行,不固定要求

2.VMware中打開虛擬機,輸入java -version,檢查是否有JDK環境,不要用系統自帶的openJDK版本,要自己安裝的版本

3.輸入 systemctl status firewalld.service ,若如圖,防火牆處於running狀態,則執行第4和第5步,否則直接進入第6步

4.輸入 systemctl stop firewalld.service ,關閉防火牆

5.輸入 systemctl disable firewalld.service ,禁用防火牆

6.輸入 mkdir /usr/local/hadoop 創建一個hadoop的文件夾

7.將hadoop的tar包放到剛創建好的目錄

8.進入hadoop目錄,輸入 tar -zxvf hadoop-2.7.3.tar.gz 解壓tar包

9.輸入 vi /etc/profile ,配置環境變量

10.加入如下內容,保存並退出
HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3/
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

11.輸入 . /etc/profile ,使環境變量生效

12.任意目錄輸入 hado ,然后按Tab,如果自動補全為hadoop,則說明環境變量配的沒問題,否則檢查環境變量哪出錯了

13.創建3個之后要用到的文件夾,分別如下:
mkdir /usr/local/hadoop/tmp

mkdir -p /usr/local/hadoop/hdfs/name

mkdir /usr/local/hadoop/hdfs/data

14.進入hadoop解壓后的 /etc/hadoop 目錄,里面存放的是hadoop的配置文件,接下來要修改這里面一些配置文件

15.有2個.sh文件,需要指定一下JAVA的目錄,首先輸入 vi hadoop-env.sh 修改配置文件

16.將原有的JAVA_HOME注釋掉,根據自己的JDK安裝位置,精確配置JAVA_HOME如下,保存並退出
export JAVA_HOME=/usr/local/java/jdk1.8.0_102/

17.輸入 vi yarn-env.sh 修改配置文件

18.加入如下內容,指定JAVA_HOME,保存並退出
export JAVA_HOME=/usr/local/java/jdk1.8.0_102

19.輸入 vi core-site.xml 修改配置文件

20.在configuration標簽中,添加如下內容,保存並退出,注意這里配置的hdfs:master:9000是不能在瀏覽器訪問的
<property>
<name> fs.default.name </name>
<value>hdfs://master:9000</value>
<description>指定HDFS的默認名稱</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>節點上本地的hadoop臨時文件夾</description>
</property>

21.輸入 vi hdfs-site.xml 修改配置文件

22.在configuration標簽中,添加如下內容,保存並退出
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/name</value>
<description>namenode上存儲hdfs名字空間元數據 </description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/data</value>
<description>datanode上數據塊的物理存儲位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本個數,默認是3,應小於datanode機器數量</description>
</property>

23.輸入 cp mapred-site.xml.template mapred-site.xml 將mapred-site.xml.template文件復制到當前目錄,並重命名為mapred-site.xml

24.輸入 vi mapred-site.xml 修改配置文件

25.在configuration標簽中,添加如下內容,保存並退出
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定mapreduce使用yarn框架</description>
</property>

26.輸入 vi yarn-site.xml 修改配置文件

27.在configuration標簽中,添加如下內容,保存並退出
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>指定resourcemanager所在的hostname</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>
NodeManager上運行的附屬服務。
需配置成mapreduce_shuffle,才可運行MapReduce程序
</description>
</property>

28.輸入 vi slaves 修改配置文件

29.將localhost刪掉,加入如下內容,即dataNode節點的主機名
node1
node2

30.將虛擬機關閉,再復制兩份虛擬機,重命名為如下,注意這里一定要關閉虛擬機,再復制

31.將3台虛擬機都打開,后兩台復制的虛擬機打開時,都選擇“我已復制該虛擬機”

32.在master機器上,輸入 vi /etc/hostname,將localhost改為master,保存並退出

33.在node1機器上,輸入 vi /etc/hostname,將localhost改為node1,保存並退出

34.在node2機器上,輸入 vi /etc/hostname,將localhost改為node2,保存並退出

35.在三台機器分別輸入 vi /etc/hosts 修改文件,其作用是將一些常用的網址域名與其對應的IP地址建立一個關聯,當用戶在訪問網址時,系統會首先自動從Hosts文件中尋找對應的IP地址
36.三個文件中都加入如下內容,保存並退出,注意這里要根據自己實際IP和節點主機名進行更改,IP和主機名中間要有一個空格
192.168.11.128 master
192.168.11.131 node1
192.168.11.132 node2
37.在master機器上輸入 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 創建一個無密碼的公鑰,-t是類型的意思,dsa是生成的密鑰類型,-P是密碼,’’表示無密碼,-f后是秘鑰生成后保存的位置

38.在master機器上輸入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 將公鑰id_dsa.pub添加進keys,這樣就可以實現無密登陸ssh

39.在master機器上輸入 ssh master 測試免密碼登陸

如果有詢問,則輸入 yes ,回車

40.在node1主機上執行 mkdir ~/.ssh

41.在node2主機上執行 mkdir ~/.ssh

42.在master機器上輸入 scp ~/.ssh/authorized_keys root@node1:~/.ssh/authorized_keys 將主節點的公鑰信息導入node1節點,導入時要輸入一下node1機器的登陸密碼

43.在master機器上輸入 scp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys 將主節點的公鑰信息導入node2節點,導入時要輸入一下node2機器的登陸密碼

44.在三台機器上分別執行 chmod 600 ~/.ssh/authorized_keys 賦予密鑰文件權限



45.在master節點上分別輸入 ssh node1 和 ssh node2 測試是否配置ssh成功

46.如果node節點還沒有hadoop,則master機器上分別輸入如下命令將hadoop復制
scp -r /usr/local/hadoop/ root@node1:/usr/local/
scp -r /usr/local/hadoop/ root@node2:/usr/local/
47.在master機器上,任意目錄輸入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果改一些配置文件了,可能還需要再次格式化

48.格式化完成

49.在master機器上,進入hadoop的sbin目錄,輸入 ./start-all.sh 啟動hadoop

50.輸入yes,回車

51.輸入 jps 查看當前java的進程,該命令是JDK1.5開始有的,作用是列出當前java進程的PID和Java主類名,nameNode節點除了JPS,還有3個進程,啟動成功

52.在node1機器和node2機器上分別輸入 jps 查看進程如下,說明配置成功


53.在瀏覽器訪問nameNode節點的8088端口和50070端口可以查看hadoop的運行狀況

54.在master機器上,進入hadoop的sbin目錄,輸入 ./stop-all.sh 關閉hadoop
