ubuntu虛擬機搭建hadoop完全分佈式集羣

一、需要的工具

需要的工具我已經完成分享,需要的可以直接在網盤中下載。
VMware15 Workstation Pro 提取碼:pp12
ubuntu16 18 19 鏡像 提取碼:yfj0
Xshell+Xftp 提取碼:6ao9
jdk1.8 提取碼:rzpy
hadoop 提取碼:5hpm

二、搭建單機僞分佈式集羣

  1. 說明: 搭建完全分佈式集羣的時候我們可以先從僞分佈式集羣搭建起,後面從機的java hadoop環境我們可以直接從主機上覆制即可,不需要兩臺從機都要重新配置環境,所以我們從僞分佈式集羣搭建開始。搭建僞分佈式集羣可以參考我前面的博客
    阿里雲服務器搭建hadoop2.7僞分佈式環境
    不過前面搭建的是基於阿里雲centos7.6環境搭建的,其實大致上差不多,但是爲了完整性,決定演示一下ubuntu虛擬機上的完整搭建步驟。

  2. 修改主機名字爲master
    在這裏插入圖片描述
    然後重啓主機生效 : sudo reboot

  3. 修改host文件

vim /etc/hostname

在這裏插入圖片描述

  1. 安裝SSH
sudo apt-get install openssh-server

在這裏插入圖片描述
測試ssh是否安裝成功。

ssh  master

在這裏插入圖片描述

  1. 配置SSH免key登陸 (必須配置)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

然後用ssh連接主機,此時不需要密碼即可 ssh master
在這裏插入圖片描述

  1. 安裝jdk,hadoop
    直接鏈接下載會很慢,我們直接在windows上下載好所需要的jdk,hadoop安裝包,然後通過共享文件夾傳到虛擬機。
    關於共享文件夾如何設置百度一下即可。然後通過軟連接建立一下連接即可
    安裝VMware Tools、與Windows共享文件夾、建立軟連接在這裏插入圖片描述然後將jdk,hadoop壓縮包全部複製到/usr/local目錄下面

    cp  *****   -r   /usr/local    ***是你的安裝包
    

在這裏插入圖片描述

  1. 分別解壓兩個壓縮包
sudo  tar -zxvf hadoop-2.7.7.tar.gz
sudo  tar -zxvf jdk1.8.0_20.tar.gz

在這裏插入圖片描述

  1. 配置java環境
sudo vim /etc/profile

在後面添加以下

export JAVA_HOME=/usr/local/jdk1.8.0_20
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意你自己jdk的目錄

在這裏插入圖片描述
然後 source /etc/profile 使環境生效
在這裏插入圖片描述

  1. 配置hadoop環境
    修改配置文件,設置環境變量
vim  ~/.bashrc

在結尾添加以下:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

注意自己hadoop的路徑
在這裏插入圖片描述
使得配置文件生效 source ~/.bashrc

  1. vim /etc/profile
    結尾添加以下,注意自己的hadoop路徑
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

在這裏插入圖片描述

  1. 修改hadoop-env.sh
cd /usr/local/hadoop/etc/hadoop
sudo vim hadoop-env.sh

在這裏插入圖片描述
首先修改java_home路徑
在這裏插入圖片描述
然後在結尾添加以下:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

在這裏插入圖片描述

  1. 修改core-site.xml
    在結尾添加以下:
<configuration>    
    <property>        
        <name>hadoop.tmp.dir</name>        
        <value>file:/usr/local/hadoop/tmp</value>        
        <description>location to store temporary files</description>    
    </property>    
    <property>        
        <name>fs.defaultFS</name>        
        <value>hdfs://master:9000</value>    
    </property>
</configuration>

其中我們需要在hadoop目錄下新建一些文件夾。
tmp文件夾:/usr/local/hadoop/tmp
然後在tmp下面新建dfs
然後在dfs下面分別新建兩個文件夾 name data
注意各個目錄之間的結構是什麼。
在這裏插入圖片描述

  1. 修改hdfs-site.xml
<configuration>    
    //設置HDFS文件副本數    
    <property>        
        <name>dfs.replication</name>        
        <value>1</value>    
    </property>    
    <property>         
        <name>dfs.client.use.datanode.hostname</name>        
        <value>true</value>    
    </property>    
    <property>                    
        <name>dfs.datanode.use.datanode.hostname</name>         
        <value>true</value>    
    </property>    
    //設置HDFS元數據文件存放路徑    
    <property>        
        <name>dfs.namenode.name.dir</name>        
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>    
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>       
    //設置其他用戶執行操作是會提醒沒有權限的問題        
    <property>               
        <name>dfs.permissions</name>        
        <value>false</value>    
    </property>
</configuration>

在這裏插入圖片描述

  1. 修改mapred-site.xml
    將/usr/local/hadoop/etc/hadoop/mapred-site.xml.template的後綴.template去掉。然後
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

在結尾添加以下:

<configuration>    
    <property>        
        <name>mapreduce.framework</name>        
        <value>yarn</value>    
    </property>
</configuration>

在這裏插入圖片描述
15. yarn-site.xml
在結尾添加以下:

<configuration>
    <!-- Site specific YARN configuration properties -->    
    <property>        
        <name>yarn.resourcemanager.hostname</name>        
        <value>master</value>    
    </property>    
    <property>        
        <name>yarn.nodemanager.aux-services</name>        
        <value>mapreduce_shuffle</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>

在這裏插入圖片描述
16. 修改slaves文件
將localhost直接改成主機名(這裏爲master),然後再添加節點主機名:我這裏爲Slave1 Slave2
這裏截圖只截了一半,master後面還有Slave1 Slave2
這裏必須要三個都寫,不然後面克隆的時候另外的兩臺節點主機還要回來重新配置slave文件。
在這裏插入圖片描述

三、克隆master搭建完全分佈式

  1. 右鍵master–>管理–>克隆–>虛擬機中當前狀態–>創建完整的克隆
    如下圖所示,克隆了兩臺分別爲Slave1 Slave2在這裏插入圖片描述
  2. 重命名主機
    啓動三臺虛擬主機,分別對兩臺節點主機命名爲Slave1 Slave2
sudo  vim /etc/hostname

然後分別查看虛擬機的ip

ifconfig

我的ip分別爲
192.168.31.31
192.168.31.14
192.168.31.163
前三段必須要相同,不然無法搭建,只要在相同的環境即可。
然後分別在Xshell上連接三臺虛擬主機。這樣做的目的是防止直接在虛擬機上操作造成卡頓。
在這裏插入圖片描述
在這裏插入圖片描述

  1. 驗證三臺主機之間能否ping通
    由於之前的master主機上我們已經配置了ssh免密登陸了,所以克隆出來的兩臺節點主機理論上也是可以的。
    我們在master主機上
ssh  Slave1
ssh Slave2

然後在一臺節點主機上的操作以此類推,如果三臺主機之間都可以相互連接即可。
由於電腦太卡,就不在這裏截圖了。

四、將mater的java hadoop環境變量複製到節點主機上

  1. 格式化master主機hadoop環境
/usr/local/hadoop/bin/hdfs namenode -format

注意:只能格式化一次,再次格式化的時候需要將tmp文件夾恢復到初始狀態。
在這裏插入圖片描述

  1. 克隆環境
sudo scp -r /usr/local  mjx@Slave1:/usr/local/jdk1.8
sudo scp -r /usr/local  mjx@Slave2:/usr/local/jdk1.8
sudo scp -r /usr/local  mjx@Slave1:/usr/local/hadoop
sudo scp -r /usr/local  mjx@Slave2:/usr/local/jdk1.8

其中的參數說明:
/usr/local 是節點主機上jdk 和 hadoop的安裝目錄,/usr/local/jdk1.8是master主機的jdk1.8目錄
/usr/local/hadoop是master主機的hadoop目錄。
mjx是用戶名,三臺主機的用戶名都是mjx。

在這裏插入圖片描述

  1. 進入到master 啓動hadoop集羣
    只需要在master中啓動即可。
    在這裏插入圖片描述
    然後分別查看三臺虛擬機的啓動狀態。
    在這裏插入圖片描述
    在這裏插入圖片描述
    可以看到master和兩臺節點主機都正常啓動。

    1. 瀏覽器可視化管理Hadoop集羣
      在這裏插入圖片描述
      在這裏插入圖片描述
      到此完畢!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章