1、環境
操作系統:ubuntu16
jdk:1.8
hadoop:2.9.1
機器:3台,master:192.168.199.88,node1:192.168.199.89,node2:192.168.199.90
2、搭建步驟
2.1 修改主機名hostname,三台機器分別執行如下命令,依次填入master,node1,node2
sudo vim /etc/hostname

2.2 修改hosts文件,三台機器依次執行
sudo vim /etc/hosts

2.3 修改環境變量,三台依次執行
vim /etc/profile,然后source /etc/profile使之生效

JAVA_HOME是java的安裝路徑,如果不知道自己的java安裝路徑,請參考如下操作:

which java定位到的是java程序的執行路徑,而不是安裝路徑,經過兩次-lrt最后的輸出才是安裝路徑
2.3 配置master對node1和node2的免密登陸
效果就是在master上輸入ssh node1即可登陸node1,否則開啟集群服務時,master與node無法連接,會報出connection refused
2.3.1 配置前,先確保安裝了openssh-server,默認是不安裝的
輸入dpkg --list | grep ssh,如果沒有openssh-server,執行以下命令安裝:
sudo apt-get install openssh-server
2.3.2 每台機器執行ssh-keygen -t rsa,然后回車

生成的公鑰私鑰都保存在~/.ssh下
2.3.3、在master上將公鑰放入authorized_keys,命令如下:
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
2.3.4、將master上的authorized_keys放到其它機器上
scp ~/.ssh/authorized_keys root@node1:~/.ssh/
scp ~/.ssh/authorized_keys root@node2:~/.ssh
2.3.5、測試是否成功

2.4 下載hadoop及修改配置文件在master上執行即可,修改完再復制到其他機器上
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-2.9.1.tar.gz (我下載時這里的穩定版是2.9.1,如果更新了,下載相應的tar.gz包即可)
解壓:tar zxf hadoop-2.9.1.tar.gz
2.5 創建HDFS存儲目錄
進入解壓后的文件夾: cd hadoop2.9.1
mkdir hdfs
cd hdfs
mkdir name data tmp
./hdfs/name --存儲namenode文件
./hdfs/data --存儲數據
./hdfs/tmp --存儲臨時文件
2.6 修改xml配置文件
需要修改的xml文件在hadoop2.9.1/etc/hadoop/下
主要有5個文件要修改:
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
2.6.1、vim hadoop-env.sh,填寫的是java的安裝路徑
![]()
2.6.2、vim core-site.xml,configuration標簽中插入如下內容

2.6.3、vim hdfs-site.xml

2.6.4、vim mapred-site.xml

2.6.5、vim yarn-site.xml

2.6.6、vim slaves,將里面的localhost刪掉,寫入從節點主機名

2.7 將hadoop文件夾遠程拷貝到node節點上
scp -r hadoop-2.9.1 wang@node1:/home/wang/
scp -r hadoop-2.9.1 wang@node2:/home/wang/
2.8 啟動hadoop
2.8.1 啟動之前要先格式化,格式化命令:hadoop namenode -format
因為master是namenode,node1和node2都是datanode,所以只在master上執行

如果出現successfully formatted,即表示格式化成功,會看到name下多出current文件夾

2.8.2 格式化成功后,在master上執行命令:start-all.sh,啟動后可用jps命令查看開啟的進程,master上有四個進程,node上是三個


如果不是,請從頭到尾再檢查一下配置文件,看是否有拼錯的地方
另外還可以在瀏覽器查看:192.168.199.88:50070
(masterIP,50070固定端口)
