適合小白的 Hadoop 叢集配置搭建,非常詳細
準備工作:
1。VMware Workstation 14 中安裝虛擬機器 ,版本為 CentOS7(我搭建的叢集為三臺,安裝一臺克隆兩臺,這裡不做解釋,可自行百度)
2。JDK1.8 ,下載地址為 https://pan.baidu.com/s/15YA23CYnT3L-9f6Ao-gzrw
3。hadoop2.7.5 下載地址為 https://pan.baidu.com/s/1Fyfb77R6Tl1ct3pm_yaLdA
新建使用者
每個虛擬機器建立一個hadoop使用者並加入到root組中
#新增使用者hadoop到root組中
useradd -m hadoop -G root -s /bin/bash
#修改使用者密碼--輸入密碼,再次輸入密碼 (建議密碼也設定為hadoop)
passwd hadoop
修改ip為靜態ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
注意: 最後末尾處新增的ip地址網段要和虛擬機器中的網段保持一致,(Ip自定義但是不能超過255)
其中這兩個中的第三位數字要和VMware Workstation中的網段一致,檢視網段看第二張圖
開啟的位置是 :編輯 ->虛擬網路編輯器
IPADDR=192.168.255.131
GATEWAY=192.168.255.2
修改完成後 ,重啟網管
[root@dnn1 ~]systemctl restart network
然後修改主機名方便以後訪問(不需要在輸入ip那麼麻煩了以後)
[root@dnn1 ~]# echo nnn > /etc/hostname
修改對映
vim /etc/hosts
向這個hosts檔案追加三行 ,格式為 Ip地址 主機名 ,一會方便linux 系統之間進行通訊
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain 6
192.168.255.130 nn
192.168.255.131 dn1
192.168.255.132 dn2
完成之後重啟
[root@dnn1 ~]# reboot
安裝上述的方法將其他兩臺虛擬機器也修改了,保證ip不一樣就可以
root 是超級管理員使用者,所做操作無法更改,我們叢集的搭建是在hadoop 使用者上搭建的,標題即使以後有什麼問題也不會影響到整個系統
用hadoop使用者登入到每臺機器上
[root@dnn1 ~]# sudo hadoop
在使用者根目錄下面配置 SSH 無密碼登入
[hadop@nnn ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[hadop@nnn ~]$ ssh-copy-id dnn1
[hadop@nnn ~]$ ssh-copy-id dnn2
##然後測試是否主機之間登入是否需要密碼
[hadop@nnn ~]$ ssh dnn1
#檢視主機名,列印的是dnn1 ,無密碼登入成功,然後退出
[hadop@dnn1 ~]$ hostname
dnn1
[hadop@dnn1 ~]$ exit
[hadop@nnn ~]$ ssh dnn2
#檢視主機名,列印的是dnn2 ,無密碼登入成功,然後退出
[hadop@dnn2 ~]$ hostname
dnn2
[hadop@dnn1 ~]$ exit
配置Java和Hadoop 的環境變數
新建opt資料夾(用於存放安裝Linux軟體的)
將下載的 jdk 1.8 和hadoop2.7.5的安裝包解壓到opt 資料夾中,然後解壓配置環境變數
[[email protected] ~]$ mkdir opt
[[email protected] ~]$ vi ~/.bashrc
###向檔案中新增如下程式碼(jdk8資料夾和hadoop2 是jdk 和hadoop檔案解壓後更改的名字)
#JAVA_JDK1.8
export JAVA_HOME=/home/hadoop/opt/jdk8
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP
export HADOOP_HOME=/home/hadoop/opt/hadoop2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
使環境變數生效(每臺機子)
[hadop@nnn ~]$ source ~/.bashrc
叢集搭建開始了
搭建hadoop全分散式叢集
進入hadoop解壓目錄
在/home/hadoop/opt/hadoop2/etc/hadoop/資料夾下面修改以下 5個檔案
1 core-site.xml
2 hdfs-site.xml
3 mapred-site.xml
4 yarn-site.xml
5 slaves
1.core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nnn:9000</value>
<!-- nnn是master 的 主機名, 9000不固定,只要埠沒有被佔用就可以 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/opt/hadoop2/tmp</value>
</property>
</configuration>
2.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<!-- 這個數字2 代表你有幾臺子節點,這個不要錯 -->
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>nnn:50090</value>
<!-- nnn是master 的 主機名 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/opt/hadoop2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/opt/hadoop2/tmp/dfs/data</value>
</property>
</configuration>
3.mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
</configuration>
4.yarn-site.xml 配置yarn的主機地址洗牌的預設框架
<property>
<name>yarn.resourcemanager.hostname</name>
<value>nnn</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5.slaves #配置所有dn的主機名稱
dn1
dn2
進入hadoop的安裝目錄,遠端分發到伺服器上
[[email protected] ~]$ cd /home/hadoop/opt/
#將整個hadoop2 複製到 其他兩臺機器上 $PWD 是當前的目錄,意思是將 hadoop2 整個資料夾複製到dnn1和dnn2 的這個相同路徑下
scp -r hadoop2/ dnn1:$PWD
scp -r hadoop2/ dnn2:$PWD
啟動叢集
一、格式化hdfs 檔案系統(只需要這第一次,以後啟動不需要了,只在nnn(master節點上啟動,其他的節點不需要啟動) )
[hadop@nnn ~]$ hadoop namenode -format
二、啟動dfs 服務和yarn 服務
[hadop@nnn ~]$ start-dfs.sh
[hadop@nnn ~]$ start-yarn.sh
三、驗證是否有開啟的服務,在nnn(master 機器上) 輸入jps 檢視有程序沒有
然後分別在 dnn1 和dnn2 (slaves 節點) 輸入jps 檢視是否有程序
四、驗證是否能夠在web 端瀏覽頁面,在瀏覽器中輸入 nnn:50070
注意: 如果你的頁面打不開,有兩種可能,
1.你在windows 上的ip 對映沒有配置,
2 Linux 的防火牆沒有關
1修改windows ip 對映
C:\Windows\System32\drivers\etc\hosts
將這個檔案拷貝到桌面上,修改後 覆蓋(管理員許可權,無法直接開啟修改,只能替換)
末尾新增
2修改防火牆
`
禁止開機啟動
[[email protected] ~]# systemctl disable firewalld
修改裡面的引數 SELINUX=disabled
[[email protected] ~]# vim /etc/selinux/config
以後開機就永遠都是關閉防火牆了
`
再次測試訪問hadoop web 頁面
訪問nnn:50070
檢視活著的子節點是否為2 (即子節點的數量)
因為我的叢集有三臺,master 一臺,slave為兩臺,所以活著的節點資訊是2
到此叢集就啟動成功了~
哈哈!!! 恭喜你,叢集搭建成功,若有什麼問題,歡迎留言!我會給大家回覆的