五篇博文講透大數據僞分佈式環境搭建——HDFS僞分佈式集羣搭建

2.2 HDFS 僞分佈式集羣搭建

目的

  • 瞭解 Hadoop 集羣的組成和規劃
  • 重點掌握 HDFS 集羣的相關配置
  • 掌握格式化文件系統的命令
  • 學會啓動和關閉 HDFS 集羣的兩種方式
  • 能夠使用 jps 命令查看進程的啓動情況
  • 能夠通過 UI 查看 HDFS 集羣的運行狀態

配置清單

  • 任務 1:Hadoop 集羣簡介
  • 任務 2:安裝包準備
  • 任務 3:HDFS 集羣主要配置文件講解
  • 任務 4:配置 Hadoop 系統環境變量
  • 任務 5:HDFS 集羣測試

1:集羣簡介

Hadoop 集羣具體來說包含兩個集羣:HDFS 集羣YARN 集羣,兩者邏輯上分離,但物理上常在一起。 另外,對於 Hadoop 的集羣來講,可以分爲兩大類角色:master 和 slave。

(1)HDFS 集羣:負責海量數據的存儲,集羣中的角色主要有:NameNode(一個,master)、DataNode(若干,slave)和 SecondaryNameNode(一個)。
(2)YARN 集羣:負責海量數據運算時的資源調度,集羣中的角色主要有: ResourceManager(一個,master) 和 NodeManager(若干,slave)。

爲什麼沒有 MapReduce 集羣呢?MapReduce 是什麼呢?
  它其實是一個應用程序開發包,也就是一堆 Java 的 jar 包,不需要安裝。

2:安裝包準備

Hadoop 是 Apache 基金會面向全球開源的產品之一,任何用戶都可以從 Apache Hadoop 官網http://archive.apache.org/dist/hadoop/common/下載使用。本次我們採用當下較爲穩定的 hadoop2.7.7 版本爲例,詳細講解 Hadoop 的安裝。所以我們手動下載 hadoop-2.7.7.tar.gz 即可。想要最完整安裝包的鐵汁,請回戳LInux最全jdk1.8+安裝教程提供的百度網盤鏈接獲取

我們這裏將hadoop安裝包存放在 /root/software 目錄下,使用如下命令進行解壓

tar -zxvf hadoop-2.7.7.tar.gz 

將其解壓到當前目錄下,即 /root/software 中

接下來,進入 Hadoop 的安裝目錄,通過 ll 命令查看 Hadoop 目錄結構,如下圖所示:
Vditor

從圖中可以看出,Hadoop 安裝目錄包括 bin、etc、include、lib、libexec、sbin、share 共 7 個目錄以及其他一些文件,下面簡單介紹下各目錄內容及作用。

(1)bin:存放操作 Hadoop 相關服務(HDFS、YARN)的腳本,但是我們通常使用 sbin 目錄下的腳本。

(2)etc:存放 Hadoop 配置文件,主要包含 core-site.xml、hdfs-site.xml、mapred-site.xml 等從 Hadoop1.0 繼承而來的配置文件和 yarn-site.xml 等 Hadoop2.0 新增的配置文件。

(3)include:對外提供的編程庫頭文件(具體動態庫和靜態庫在 lib 目錄中),這些頭文件均是用 C++ 定義的,通常用於 C++ 程序訪問 HDFS 或者編寫 MapReduce 程序。

(4)lib:該目錄包含了 Hadoop 對外提供的編程動態庫和靜態庫,與 include 目錄中的頭文件結合使用。

(5)libexec:各個服務對應的 shell 配置文件所在的目錄,可用於配置日誌輸出、啓動參數(比如 JVM 參數)等基本信息。

(6)sbin:該目錄存放 Hadoop 管理腳本,主要包含 HDFS 和 YARN 中各類服務的啓動/關閉腳本。

(7)share:Hadoop 各個模塊編譯後的 jar 包所在的目錄。

3:HDFS 集羣主要配置文件講解

Hadoop 默認提供了兩種配置文件:

(1)一種是只讀的默認配置文件,包括 core-default.xml、hdfs-default.xml、mapred-default.xml 和 yarn-default.xml,這些文件包含了 Hadoop 系統各種默認配置參數;

(2)另一種是 Hadoop 集羣自定義配置時編輯的配置文件(這些文件多數沒有任何配置內容,都存在於 Hadoop 安裝包下的 etc/hadoop 目錄中),包括 hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 和 slaves 共 7 個文件,可以根據需要在這些文件中對默認配置文件中的參數進行修改,Hadoop 會優先選擇這些配置文件中的參數。

接下來,我們通過一張表對 Hadoop 集羣搭建可能涉及的主要配置文件及功能進行描述。

配置文件 功能描述
hadoop-env.sh 配置 Hadoop 運行所需的環境變量
yarn-env.sh 配置 YARN 運行所需的環境變量
core-site.xml Hadoop 核心全局配置文件,可在其它配置文件中引用該文件
hdfs-site.xml HDFS 配置文件,繼承 core-site.xml 配置文件
mapred-site.xml MapReduce 配置文件,繼承 core-site.xml 配置文件
yarn-site.xml YARN 配置文件,繼承 core-site.xml 配置文件
slaves Hadoop 集羣所有從節點(DataNode 和 NodeManager)列表

(1)前兩個配置文件都是用來指定 HadoopYARN 所需運行環境。

  • hadoop-env.sh:用來保證 Hadoop 系統能夠正常執行 HDFS 的守護進程 NameNode、SecondaryNameNode 和 DataNode;
  • yarn-env.sh:用來保證 YARN 的守護進程 ResourceManager 和 NodeManager 能正常執行。

(2)slaves 文件存儲了當前集羣的所有從節點的列表。

(3)其它 4 個配置文件都是用來設置集羣運行參數的,在這些配置文件中可以使用 Hadoop 默認配置文件中的參數進行配置以此來優化 Hadoop 集羣,從而使集羣更加穩定高效。

Hadoop 提供的默認配置文件 core-default.xml、hdfs-default.xml、mapred-default.xml 和 yarn-default.xml 中的參數非常之多,具體使用時可以通過訪問 Hadoop 官方文檔,進入到文檔最底部的 Configuration 部分進行學習和查看。

Vditor

接下來,爲大家詳細講解 HDFS 集羣的相關配置,具體步驟如下。

3.1 配置環境變量 hadoop-env.sh

因爲 Hadoop 的各守護進程依賴於 JAVA_HOME 環境變量(jdk目錄),所以需要修改“hadoop-env.sh”環境變量文件中的 JAVA_HOME 的值。

首先需要複製一下本機安裝的 JDK 的實際位置(避免寫錯最好不要手寫),可以使用下列方式打印 JDK 的安裝目錄:

echo $JAVA_HOME

語法解析:

  • echo:輸出命令
  • $:引用環境變量的值
  • JAVA_HOME:環境變量
    Vditor
    使用如下命令打開 hadoop-env.sh 文件:
vim /root/software/hadoop-2.7.7/etc/hadoop/hadoop-env.sh 

找到 JAVA_HOME 參數位置,修改爲本機安裝的 JDK 的實際位置:

Vditor

3.2 配置核心組件 core-site.xml

該文件**是 Hadoop 的核心配置文件,其目的是配置 HDFS 地址、端口號,以及臨時文件目錄。**使用如下命令打開 “core-site.xml” 文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/core-site.xml

將下面的配置內容添加到 <configuration></configuration>中間:

<!-- HDFS集羣中NameNode的URI(包括協議、主機名稱、端口號),默認爲 file:/// --> 
<property> 
    <name>fs.defaultFS</name> 
    <!-- 用於指定NameNode的地址 -->
    <value>hdfs://localhost:9000</value> 
    </property> 
    <!-- Hadoop運行時產生文件的臨時存儲目錄 -->
    <property> 
    <name>hadoop.tmp.dir</name> 
    <value>/root/hadoopData/temp</value> 
</property>

3.3 配置文件系統 hdfs-site.xml

該文件主要用於配置 HDFS 相關的屬性,例如複製因子(即數據塊的副本數)、NameNode 和 DataNode 用於存儲數據的目錄等。在完全分佈式模式下,默認數據塊副本是 3 份。 使用如下命令打開“hdfs-site.xml”文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

將下面的配置內容添加到 <configuration></configuration>中間:

<!-- NameNode在本地文件系統中持久存儲命名空間和事務日誌的路徑 -->
<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>/root/hadoopData/name</value>
</property> 
   <!-- DataNode在本地文件系統中存放塊的路徑 -->
<property> 
    <name>dfs.datanode.data.dir</name> 
    <value>/root/hadoopData/data</value> 
</property> 
    <!-- 數據塊副本的數量,默認爲3 -->
<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
</property> 

3.4 配置 slaves 文件

該文件用於記錄 Hadoop 集羣所有從節點(HDFS 的 DataNode 和 YARN 的 NodeManager 所在主機)的主機名,用來配合一鍵啓動腳本啓動集羣從節點(並且還需要保證關聯節點配置了 SSH 免密登錄)。

打開該配置文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/slaves

我們看到其默認內容爲 localhost,因爲我們搭建的是僞分佈式集羣,就只有一臺主機,所以從節點也需要放在此主機上,所以此配置文件無需修改。

4:配置 Hadoop 系統環境變量

(1)首先打開/etc/profile 文件:

vim /etc/profile

(2)在文件底部添加如下內容:

# 配置Hadoop的安裝目錄		
export HADOOP_HOME=/root/software/hadoop-2.7.7	
# 在原PATH的基礎上加入Hadoop的bin和sbin目錄
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

注意:

  • export 是把這兩個變量導出爲全局變量。
  • 大小寫必須嚴格區分。

另外:

  • **bin:**存放操作 Hadoop 相關服務(HDFS、YARN)的腳本,但是通常使用 sbin 目錄下的腳本。
  • **sbin:**該目錄存放 Hadoop 管理腳本,主要包含 HDFS 和 YARN 中各類服務的啓動/關閉腳本。

(3)讓配置文件立即生效,使用如下命令:

source /etc/profile

(4)檢測 Hadoop 環境變量是否設置成功,使用如下命令查看 Hadoop 版本:

hadoop version

執行此命令後,若是出現 Hadoop 版本信息說明配置成功:

Vditor

5:HDFS 集羣測試

5.1 格式化文件系統

具體指令如下:

hdfs namenode -format

執行格式化指令後,必須出現有“successfully formatted”信息才表示格式化成功,如下圖所示:

Vditor

若是未出現 “successfully formatted” 信息,就需要查看指令是否正確,或者之前 HDFS 集羣的安裝和配置是否正確,若是正確,則需要刪除所有主機的 “/root/hadoopData” 文件夾,重新執行格式化命令,對 HDFS 集羣進行格式化。

另外需要特別注意的是,上述格式化指令只需要在 HDFS 集羣初次啓動前執行即可,後續重複啓動就不再需要執行格式化了。

5.2 啓動和關閉 HDFS 集羣

針對 HDFS 集羣的啓動,啓動方式有兩種,一種是單節點逐個啓動;另一種是使用腳本一鍵啓動

1. 單節點逐個啓動和關閉

單節點逐個啓動的方式,需要參照以下方式逐個啓動 HDFS 集羣服務需要的相關服務進程,具體步驟如下:

(1)在本機上使用以下指令啓動 NameNode 進程:

hadoop-daemon.sh start namenode

啓動完成之後,使用 jps 指令查看 NameNode 進程的啓動情況

解析:

  • jps 命令:(全稱:Java Virtual Machine Process Status Tool)。安裝 JDK 後在 % JAVA_HOME %/bin 目錄下面自帶的一個 Java 工具。能夠顯示系統當前運行的 Java 程序及其進程號。
  • 其中 424 和 350 是進程的 PID,也就是進程號。

(2)在本機上使用以下指令啓動 DataNode 進程:

hadoop-daemon.sh start datanode

(3)在本機上使用以下指令啓動 SecondaryNameNode 進程:

hadoop-daemon.sh start secondarynamenode

另外,當需要停止相關服務進程時,只需要將上述指令中的start更改爲stop即可。

2. 腳本一鍵啓動和關閉

啓動集羣最常使用的方式是使用腳本一鍵啓動,前提是需要配置 SSH 免密登錄。

  • 在本機上使用如下方式一鍵啓動 HDFS 集羣:
start-dfs.sh
  • 效果圖如下所示:

Vditor

打印信息:

  • 在本機上啓動了 NameNode 守護進程

  • 在本機上啓動了 DataNode 守護進程

  • 在配置的一個特定節點 0.0.0.0(本機)上啓動 SecondaryNameNode 守護進程

我們可以一鍵啓動 HDFS 集羣,同樣也可以一鍵關閉 HDFS 集羣,只需要將 start 改爲 stop 即可,即stop-dfs.sh

5.3 查看進程啓動情況

在本機執行 jps命令,在打印結果中會看到 4 個進程,分別是 NameNode、SecondaryNameNode、Jps、和 DataNode,如果出現了這 4 個進程表示進程啓動成功。

5.4 通過 UI 查看 HDFS 運行狀態

HDFS 集羣正常啓動後,它默認開放了50070端口,用於監控 HDFS 集羣。通過 UI 可以方便地進行集羣的管理和查看,只需要在本地操作系統的瀏覽器輸入集羣服務的 IP 和對應的端口號即可訪問。

通過本機的瀏覽器訪問http://localhost:50070或http://本機IP 地址:50070 查看 HDFS 集羣狀態,效果如下圖所示:

Vditor

從上圖可以看出,通過 UI 可以正常訪問 Hadoop 集羣的 HDFS 界面,並且頁面顯示正常,同時通過 UI 可以更方便地進行狀態管理和查看。
HDFS最全搭建教程奉上,希望大家認真瀏覽,還有兩篇僞分佈式集羣就搭建完成了2.3 YARN 僞分佈式集羣搭建,2.4 Hadoop僞分佈式集羣初體驗,預計6.15日左右更新,如果搭建中存在任何問題,歡迎評論區留言諮詢,或者前往主頁添加我的私人QQ。
注:希望每一個人都能親自動手體驗
@Author:HaoXuan

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章