最新版本——Hadoop3.3.6單機版完全部署指南

大家好,我是獨孤風,大數據流動的作者。

本文基於最新的 Hadoop 3.3.6 的版本編寫,帶大家通過單機版充分了解 Apache Hadoop 的使用。本文更強調實踐,實踐是大數據學習的重要環節,也能在實踐中對該技術有更深的理解,所以一些理論知識建議大家多閱讀相關的書籍(都在資料包中)。

本文檔版權歸大數據流動所有,請勿商用,全套大數據、數據治理、人工智能相關學習資料,請關注大數據流動。

(本文所使用資料包位置: 大數據流動 VIP 知識庫 》大數據技術 》Apache Hadoop 3.3.6 單機安裝包)

一、Hadoop 概述

Apache Hadoop 是一個開源框架,用於存儲和處理大規模數據集。它是用 Java 編寫的,並支持分佈式處理。Hadoop 的關鍵特點包括:

  1. 分佈式存儲:通過 Hadoop 分佈式文件系統(HDFS),它可以跨多個節點存儲大量數據,提供高可靠性和數據冗餘。
  2. 分佈式計算:Hadoop 使用 MapReduce 編程模型來並行處理大數據,這樣可以有效地處理和分析存儲在 HDFS 中的大規模數據集。
  3. 可擴展性:Hadoop 能夠通過添加更多節點來輕鬆擴展,處理更大量的數據。
  4. 容錯性:Hadoop 設計中考慮到了故障的可能性,能夠在節點故障時繼續運行,確保數據不丟失。

5. 生態系統:Hadoop 的生態系統包括各種工具和擴展(如 Hive、HBase、Spark 等),用於數據處理、分析和管理。

Hadoop 廣泛應用於大數據分析、數據挖掘、日誌處理等領域,特別是在需要處理 PB 級別數據的場景中非常有效。

所以我們可以理解爲 Hadoop 是一個生態,有了 Hadoop 爲基礎,後續的 Spark,Flink 等組件才相繼出現,讓大數據技術持續的發展。

而從軟件角度,Hadoop 本身自己是一個 Apache 的開源軟件。

Apache Hadoop 主要由以下幾個核心組件組成,每個組件都有其獨特的功能:

1. Hadoop Common:這是 Hadoop 的基礎庫集合,提供了 Hadoop 模塊所需要的通用工具和接口。它包括文件系統、操作系統級別的抽象,以及必要的 Java 庫文件。

  1. Hadoop MapReduce (MR):這是一個編程模型,用於處理大規模數據集的分佈式計算。MapReduce 將作業分成兩個階段:Map(處理)和 Reduce(彙總)。這種方法使得並行處理大數據變得簡單有效。
  2. Hadoop YARN (Yet Another Resource Negotiator):YARN 是 Hadoop 的資源管理和任務調度器。它將計算資源管理和作業調度功能從 MapReduce 中分離出來,提高了 Hadoop 的靈活性和可擴展性。
  3. Hadoop Distributed File System (HDFS):HDFS 是一個高度容錯的分佈式文件系統,設計用來存儲大量數據。它可以在廉價的硬件上運行,提供高吞吐量以訪問應用程序數據,並適用於具有大數據集的應用程序。

這些組件協同工作,使 Hadoop 成爲一個強大的工具,用於存儲、處理和分析大規模的數據集。

而 Common 是基礎庫,MapReduce 由於性能問題,分佈式計算已經被更高效的 Spark,Flink 等計算引擎替代。

但是HDFS,YARN依然是最核心的兩個組件,一定要認真學習,我也會單獨發文章來學習這兩個組件。

二、Hadoop 歷史

當然,以下是用 Markdown 格式概述 Apache Hadoop 的歷史:

  • 2005 年 - 起源由 Doug Cutting 和 Mike Cafarella 創立,受 Google 的 MapReduce 和 GFS 論文啓發。

    (Google 三篇理論中文版資料位置: 大數據流動 VIP 知識庫 》大數據技術 》Google 三家馬車)

  • 2006 年 - 加入Apache成爲 Apache 軟件基金會的一部分,最初是 Lucene 項目的一部分,後來在 2008 年成爲頂級項目。

  • 2008 年及以後 - 發展與普及快速獲得關注,生態系統不斷髮展,增加了如 HBase、Hive 等工具。

  • 2011 年 - Hadoop 1.0 發佈標誌着 Hadoop 的成熟,穩定 API 和核心組件,包括 HDFS 和 MapReduce。

  • 2013 年 - Hadoop 2.0 和YARN的推出引入 YARN,將 Hadoop 從以 MapReduce 爲中心的平臺轉變爲更加多功能的數據處理平臺。

  • 持續演進 - Hadoop 不斷更新,擴展其功能和生態系統,包括 Spark、Kafka、Flink 等工具。

  • 雲集成 - 近年來,與雲服務集成,提供更靈活、可擴展的數據處理解決方案。

Hadoop 也不光只有 Apache Hadoop,很多公司都有自己的發行版本,不同的發行版針對不同的用途和場景進行了優化,用戶可以根據自己的需求選擇最適合的版本。隨着時間的推移,這些發行版可能會有所變化,包括新的版本推出或舊版本停止維護。

除了 Apache Hadoop,還有 Cloudera 的 CDH(Cloudera Distribution Including Apache Hadoop)、Hortonworks Data Platform (HDP),也就是 CDH 和 Ambari,我也會在其他文章演示,本文我們帶來 Apache Hadoop 的單機版本演示,Apache Hadoop 也是被使用最多的版本。

三、Hadoop 3.3.6 單機安裝

下面我們進行 Hadoop3.3.6 的單機版安裝。

1、版本情況與安裝包準備

Apache Hadoop 的官網地址是 https://hadoop.apache.org/

我們在這裏可以看到,最新的版本是 3.3.6,這也是 2023 年新發布的版本,各方面都做了很大的優化,本文也基於此版本進行演示。

我們使用的 Hadoop 版本是 3.3.6,可以在官方網站進行下載:

https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/

696MB 這個。

2、服務器環境準備

不管是服務器和虛擬機環境的準備,大家都可以參考我之前的文章,在本地搭一個虛擬機,也可以去買一個現成的,這裏不做贅述。

我們使用的 CentOS 版本是 7.8,可以通過下面的命令來查看版本。

cat /etc/redhat-release

CentOS7 的安裝步驟基本一致,都可以參考本文檔。

服務器需要做一下免密登陸設置,不然後面會有問題

ssh-keygen -t rsa -P ""

回車即可,隨後複製密鑰

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

可以驗證一下

ssh bigdataflowing

正常會直接登錄過去。

3、JDK 安裝

先卸載系統自帶的 java

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

上傳安裝包到服務器,安裝包可在 Oracle 官網下載:https://www.oracle.com/java/technologies/downloads/

也可以用我的資料包裏的。

jdk-8u221-linux-x64.tar.gz

建立文件夾。

mkdir /opt/jdk/

進入該文件夾,上傳文件。

cd /opt/jdk/

解壓安裝包 tar -zxvf jdk-8u221-linux-x64.tar.gz

沒有報錯證明解壓成功。

隨後我們把 JDK 配置到環境變量裏就可以了。

vi /etc/profile

在最下面加入這兩句,其實就是我們剛剛解壓 jdk 的位置。

export JAVA_HOME=/opt/jdk/jdk1.8.0_221

export PATH=$PATH:$JAVA_HOME/bin

最後讓環境變量生效

source /etc/profile

查看 java 版本驗證一下,java -version 成功!

這樣我們這臺機器就有 java 環境可用了。

4、Hadoop3.3.6 安裝

有了 java 環境,hadoop 的依賴問題就解決了,可以直接進行安裝。

將之前準備好的 hadoop 安裝包,上傳到 /opt/hadoop3.3.6 目錄下

解壓,tar -zxvf hadoop-3.3.6.tar.gz 沒報錯就是成功。

還是增加環境變量

vi /etc/profile

在最下面加入這三句,hadoop 的位置

export HADOOP_HOME=/opt/hadoop3.3.6/hadoop-3.3. 6

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

最後讓環境變量生效

source /etc/profile

查看 java 版本驗證一下,hadoop-version 成功!

使用 hadoop version 命令驗證安裝成功

5、配置

雖然安裝成功,但是我們要使用的是單機僞集羣,還需要進行一些配置。

hadoop 的目錄有如下的文件夾

bin 目錄:Hadoop 主服務腳本

etc 目錄:Hadoop 的配置文件目錄

lib 目錄:存放 Hadoop 的本地庫

sbin 目錄:存放啓動或停止 Hadoop 相關服務的腳本

首先進入 etc 配置文件夾 cd ``etc/hadoop 有如下配置,我們只修改核心的就可以。

首先修改 hadoop-env.sh 將 java 和 hadoop 的根路徑加入

export JAVA_HOME=/opt/jdk/jdk1.8.0_221

export HADOOP_HOME=/opt/hadoop3.3.6/hadoop-3.3.6

同時加入 root 權限

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改 core-site.xml

在 configuration 標籤中,添加如下內容:

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdataflowing:9090</value>
    </property>

    <!-- 指定 hadoop 數據的存儲目錄 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop3.3.6/hdfs/tmp</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

修改 hdfs-site.xml,在 configuration 標籤中,添加如下內容:

<property>
        <name>dfs.replication</name>      
        <value>1</value>
    </property>  

    <property>
        <name>dfs.namenode.name.dir</name>  
        <value>/opt/hadoop3.3.6/hdfs/name</value>  
        <final>true</final>
    </property>  

    <property>
        <name>dfs.datanode.data.dir</name>  
        <value>/opt/hadoop3.3.6/hdfs/data</value>  
        <final>true</final>
    </property>  

    <property>
        <name>dfs.http.address</name>
        <value>0.0.0.0:50070</value>
    </property>

    <property>
        <name>dfs.permissions</name>  
        <value>false</value>
    </property>

修改 mapre-site.xml,在 configuration 標籤中,添加如下內容:

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

修改 yarn-site.xml,在 configuration 標籤中,添加如下內容:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

6、啓動

首先格式化 HDFS,也就是對 hdfs 做最基本的配置:

hdfs namenode -format

格式化完成。

隨後我們進入 sbin 目錄

cd /opt/hadoop3.3.6/hadoop-3.3.6/sbin/

這裏腳本較多,我們可以選擇啓動全部

./start-all.sh

正常不會有報錯,同時使用 jps 命令查看,會有 Datanode,ResourceManager,SecondaryNameNode,NameNode,NodeManager 五個進程。

另一個驗證啓動成功的方法,是問 Hadoop 管理頁面

http://IP:50070/

http://IP:8088/

這些頁面的使用,我們會在後續 Hdfs,Yarn 等章節再詳細講解。

7、報錯彙總

啓動報錯,未設置 root 用戶

ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [bigdataflowing]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation。

啓動報錯,爲進行免密登陸設置

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