虛擬機器裝Hadoop叢集完全分散式

Mr.He XJ發表於2020-12-11

環境

系統:ContOS 8
虛擬機器:VMware 16
hadoop:hadoop-3.3.0.tar.gz
JDK:jdk-8u241-linux-x64.tar.gz
檔案上傳工具 :WinSCP
連線Linux:XShell

可以在官網下載也可以在百度網盤下載:
作業系統:
連結:https://pan.baidu.com/s/1DuzjRqxwvMXjDsBXeXDObQ 
提取碼:kdmn 

虛擬機器:
連結:https://pan.baidu.com/s/1JVjnjvctpR-LaCC-iwRktQ 
提取碼:9cp5 

Hadoop相關:
連結:https://pan.baidu.com/s/1dFLL3PcWsZmGSg1Ex5EzYA 
提取碼:7ony 

要求

安裝虛擬機器時有三種網路模式:Bridged(橋接模式)、NAT(網路地址轉換模式)、 Host-Only(僅主機模式)

安裝橋接或者NAT模式
安裝橋接或者NAT模式
安裝橋接或者NAT模式

網路配置

三種網路模式的網路設定:https://blog.csdn.net/Noob_f/article/details/51099040

我的另一個文章:https://blog.csdn.net/qq_45638264/article/details/111027588
裡面涉及IP、閘道器、掩碼、DSN等的詳細設定

設定域名

用root使用者設定,兩個系統都要弄

命令:vim /etc/hosts
在這裡插入圖片描述
儲存即可

叢集情況

系統名系統域名系統IP使用者名稱
mastermaster192.168.163.10hadoop
worker01worker01192.168.163.11hadoop

上傳檔案

  1. 使用root在根目錄下建一個bigdata目錄:mkdir /bigdata

  2. 給目錄加其它使用者寫的許可權:chmod -R o+w /bigdata

  3. 使用WinScp軟體上傳檔案
    這裡的主機名填Linux系統的IP,使用者名稱:root

在這裡插入圖片描述

建立hadoop使用者

建立組:groupadd -r hadoop
建立使用者:useradd -d /home/hadoop -s /bin/bash -g hadoop  hadoop
設密碼:passwd hadoop

解壓包到bigdata目錄中

切換到hadoop使用者操作

解壓JDK:tar -zxvf jdk-8u241-linux-x64.tar.gz -C /bigdata/
解壓Hadoop:tar -zxvf hadoop-3.3.0.tar.gz -C /bigdata/

重新命名:
cd /bigdata
mv jdk-8u241-linux-x64  jdk
mv hadoop-3.3.0 hadoop

建立新增環境變數

使用root使用者
命令: vim /etc/profile

##JAVA_HOME
export JAVA_HOME=/bigdata/jdk
export PATH=$JAVA_HOME/bin:$PATH

##HADOOP_HOME
export HADOOP_HOME=/bigdata/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

隨後使用命令:source /etc/profile

檢視是否成功:java -verison
在這裡插入圖片描述

免密登入

切換到hadoop使用者

master機器:
S1:使用命令:ssh master
輸入密碼後
要是沒有下面這種出現情況---hadoop@master
重啟系統,切換到使用者hadoop,再使用命令S1
你也可以重啟ssh服務試試:命令:systemctl restart sshd

在這裡插入圖片描述

S2:使用命令:ssh-keygen -t rsa
後面都是預設,一直回車
S3:使用命令:cd .ssh
S4:使用命令:cat id_rsa.pub >> authorized_keys 


worker01機器:完成步驟:S1~S3
這裡的S1:ssh worker01 
在hadoop的.ssh目錄下

S5:將worker01的公鑰發給master:scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.worker01

master機器:
S6:使用命令:cat id_rsa.pub.worker01 >> authorized_keys 

master將authorized_keys檔案傳給worker01
S7:使用命令:scp authorized_keys hadoop@worker01:/home/hadoop/.ssh/

S8:在兩臺機器上分別測試 
都是在Hadoop使用者下
命令:ssh master、ssh worker

master:
在這裡插入圖片描述
worker01:
在這裡插入圖片描述

authorized_keys :
在這裡插入圖片描述
authorized_keys 檔案是對的,但是就是不能免密登入,看我的另一文章:https://blog.csdn.net/qq_45638264/article/details/109114939

配置Hadoop檔案

注意:完全分散式的Hadoop配置內容和偽分散式不同!! 利用hadoop搭偽分散式環境需要配置4個xml檔案,這4個xml檔案都在/bigdata/hadoop/etc/hadoop資料夾中。

先在master上配置,再通過scp命令複製到worker01

使用hadoop使用者操作

1)修改hadoop-env.sh配置檔案

配置hadoop-env.sh過程
S1:開啟hadoop-env.sh檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令vim hadoop-env.sh,命令執行後hadoop-env.sh檔案被開啟
S2:在hadoop-env.sh檔案中修改JAVA_HOME環境變數,將export JAVA_HOME=${JAVA_HOME}(雖然之前的程式碼也能獲取到JAVA_HOME的值,但是有時候會失效)修改為export JAVA_HOME=/bigdata/jdk

(2)修改core-site.xml配置檔案

配置core-site.xml過程
S1:開啟core-site.xml檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令 vim core-site.xml,命令執行後,core-site.xml檔案被開啟
S2:在core-site.xml檔案末尾新增上如下程式碼:
程式碼如下(<'configuration'><'/configuration'>標籤原來就有):

<configuration>
  <property>
     <name>hadoop.tmp.dir</name>
     <value>/bigdata/hadoop/etc/hadoop/tmp</value>
     <description>Abase for other temporary directories.</description>
  </property>
  <property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
     <final>true</final>
  </property>
</configuration>

注意: hadoop.tmp.dir檔案不是一個臨時檔案,是存放所有master中資料的檔案,其目錄地址為:/bigdata/hadoop/etc/hadoop/tmp。

(3)修改hdfs-site.xml配置檔案

配置hdfs-site.xml過程
S1:開啟hdfs-site.xml檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令vim hdfs-site.xml,命令執行後hdfs-site.xml檔案被開啟
S2:在hdfs-site.xml檔案末尾新增上如下程式碼:
程式碼如下(<'configuration'><'/configuration'>標籤原來就有):

<configuration>
  <property>
     <name>dfs.replication</name>
     <value>2</value>
     <final>true</final>
  </property>
   <property>
      	<name>dfs.http.address</name>
        <value>0.0.0.0:50070</value>
 </property>
  </configuration>

注意:2是指備份2份(總共2份)。在hadoop中預設有3份檔案(含備份),這裡總共想要存放2份檔案,則改為2。

dfs.http.address是為了讓瀏覽器可以訪問

(4)修改mapred-site.xml配置檔案

配置mapred-site.xml過程
S1:(1)開啟mapred-site.xml檔案(你會發現在/bigdata/hadoop/etc/hadoop中沒有mapred-site.xml檔案,只有一個mapred-site.xml.template檔案。這是因為mapreduce比較特殊,它可以配置也可以不配置,而其他例如core-site.xml存在因為其必須配置
(2)這裡只需要將mapred-site.xml.template複製一下,並且將檔名改為mapred-site.xml進行修改即可,直接在/bigdata/hadoop/etc/hadoop/下使用 cp mapred-site.xml.template mapred-site.xml即可)
(3)將當前位置切換了/bigdata/hadoop/etc/hadoop/中,使用命令 vim mapred-site.xml,命令執行後mapred-site.xml檔案被開啟
S2:在mapred-site.xml檔案末尾新增上如下程式碼:
程式碼如下(`<'configuration'>``<'/configuration'>`標籤原來就有):
<configuration>
  <property>
     <name>mapred.job.tracker</name>
     <value>master:9001</value>
  </property>
</configuration>

(5)修改yarn-site.xml配置檔案

配置yarn-site.xml過程
S1:開啟yarn-site.xml檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令sudo vi yarn-site.xml,命令執行後yarn-site.xml檔案被開啟
S2:在yarn-site.xml檔案末尾新增上如下程式碼:
程式碼如下(`<'configuration'>``<'/configuration'>` 標籤原來就有):
<configuration>
  <property>
     <name>yarn.resourcemanager.hostname</name>
     <value>masater</value>
  </property>
  <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
  </property>
</configuration>

(6)配置masters和slaves檔案
切換至/bigdata/hadoop/etc/hadoop,使用ls檢視檔案,發現只有workers,這裡使用cp workers masters 命令複製一下。

(1)配置的masters檔案如下:
S1:開啟masters檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令vim masters,命令執行後masters檔案被開啟
S2:在masters檔案末尾新增上如下程式碼:

在這裡插入圖片描述

(2)配置的worker01檔案如下:
S1:開啟worker01檔案,將當前位置切換了/bigdata/hadoop/etc/hadoop中,使用命令vim worker01,命令執行後worker01檔案被開啟
S2:在worker01檔案末尾新增上如下程式碼:

在這裡插入圖片描述

(7)master向worker01節點複製hadoop配置

worker01系統中也必須用Root建一個bigdata目錄

步驟
S1:複製JDK。將當前位置切換了/bigdata/下。scp -r jdk/ hadoop@worker01:/bigdata/
S1:複製Hadoop。將當前位置切換了/bigdata/下。scp -r hadoop/ hadoop@worker01:/bigdata/

(8)worker01中的環境變數和master是一樣的。

格式化HDFS檔案

在master中格式化
將當前位置切換了/bigdata/hadoop下

格式化:./hdfs namenode -format

啟動hdfs

命令: ./sbin/start-dfs.sh
或者:start-dfs.sh

如果配置了yarn的話必須要啟動yarn:./sbin/start-yarn.shstart-yarn.sh

檢視是否啟動

命令:jps

master機器:
在這裡插入圖片描述
worker01機器:
在這裡插入圖片描述

在本地瀏覽器訪問:
hdfs:192.168.163.10:50070/
在這裡插入圖片描述

自此,安裝成功,測試的話可以自己百度一個計算單詞個數。

相關文章