日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu系统安装Hadoop3.1.3并进行单机/伪分布式配置

發布時間:2025/3/21 Ubuntu 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu系统安装Hadoop3.1.3并进行单机/伪分布式配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ubuntu系統安裝Hadoop3.1.3并進行單機/偽分布式配置

文章目錄

  • Ubuntu系統安裝Hadoop3.1.3并進行單機/偽分布式配置
    • 前言
    • 詳細流程
      • 創建Hadoop用戶
      • 安裝Java
      • 配置SSH免密登陸
      • 安裝Hadoop3.1.3
      • Hadoop單機配置
      • Hadoop單機運行實例
      • Hadoop偽分布式配置
      • Hadoop偽分布式運行實例
      • Web訪問Hadoop信息
    • 參考文章

前言

Hadoop官方真正支持的作業平臺只有 Linux,在其他平臺運行 Hadoop時,往往需要安裝其他的包來提供一些 Linux操作系統的功能,以配合 Hadoop的執行。例如,在 Windows下運行 Hadoop,需要安裝 Cygwin等軟件。

Hadoop在 Linux操作系統上運行可以發揮最佳性能,建議大家使用 Linux系統來運行 Hadoop,可以去搭虛擬機或者買云服務器。

Hadoop安裝方式:

  • 單機模式:Hadoop 默認模式為非分布式模式(本地模式),無需進行其他配置即可運行。
  • 偽分布式模式:Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
  • 分布式模式:使用多個節點構成集群環境來運行 Hadoop

單機模式和偽分布式模式在個人電腦上即可搭建,全分布式模式要求擁有集群實驗環境,需要四臺以上電腦作為節點。因為個人不具備集群條件,這里僅介紹 Hadoop的單機模式和偽分布式模式的配置。

詳細流程

創建Hadoop用戶

我們創建一個名為“hadoop”的用戶來運行 Hadoop程序,這樣可以使不同用戶之間有明確的權限劃分,也使得對 Hadoop的配置操作不影響其他用戶的使用。

創建用戶時建議使用 adduser而不是 useradd命令,因為 useradd 這個命令添加的用戶不能遠程登錄,在本機登錄時的登錄界面也不會把所添加的用戶列出來。

使用 adduser創建用戶時會提示讓用戶設置密碼,這個密碼就是用戶用來登錄的密碼,設置完畢請牢記此密碼。

  • Full Name是設置系統登錄時展示的名字,通常我們是將首字母大寫。比如用戶名 hadoop,則登錄名設置為 Hadoop。
  • Room Name——Other等信息可以隨意填寫,也可以不填
  • 最后輸入 y進行確認即可

我們來創建一個新的普通用戶 hadoop。

adduser hadoop //創建 hadoop用戶 adduser hadoop sudo //增加管理員權限


接著,我們把登錄賬戶從 root切換到 hadoop,并更新 apt。

su hadoop sudo apt-get update

如果想退出 hadoop用戶,回到 root賬戶,輸入命令 exit即可。

如果不想繼續使用用戶 hadoop了,想要刪除用戶,輸入命令

sudo deluser hadoop

創建新的用戶‘hadoop’成功,我們可以先退出 Ubuntu系統,下次啟動 Ubuntu時就能直接使用 hadoop這個賬戶登錄了。

安裝Java

因為 Hadoop本神是使用 Java語言編寫的,所以 Hadoop的開發和運行都必須有 Java環境的支持,通常要求Java 7 或者更高版本。

對于 Ubuntu來說,系統可能已經預裝了 Java,JDK版本為 OpenJDK,路徑為“/usr/lib/jvm/default-java”。Ubuntu系統卸載 OpenJDK命令為

sudo apt-get remove openjdk*

在 Linux系統中安裝 Java的步驟我們前面已經說過了,如果已經不記得怎么安裝 Java的話,請參考這篇博客 Linux系統安裝JDK1.8 詳細流程

建議在 /usr/lib下新建 jvm文件夾,把 JDK安裝在 jvm文件夾中。

配置SSH免密登陸

對于 Hadoop的偽分布式和全分布式配置來說,名稱節點(NameNode)需要啟動集群中所有機器的 Hadoop守護進程,這個過程可以通過 SSH登錄實現。然而 Hadoop并沒有提供 SSH輸入密碼登錄的形式,因此我們需要配置為名稱節點無密碼登錄所有機器,偽分布式和全分布式才能給順利啟動。

Ubuntu系統默認已安裝了 SSH client,我們還需要安裝 SSH server

sudo apt-get install openssh-server

安裝完成后,登錄本機

ssh localhost

SSH首次登錄會進行提示,輸入 yes,接著按提示輸入剛才 hadoop賬戶設置的密碼,就可以登錄本機了。

這樣登錄每次是需要輸入密碼的,接下來我們要配置無密碼登錄。

我們先退出 SSH

exit

然后我們利用 ssh-keygen生成密鑰,在~/.ssh中會生成兩個文件:id_rsa和id_rsa.pub。id_rsa為私鑰,id_rsa.pub為公鑰,我們將公鑰 id_rsa.pub追加到 authorized_keys中,因為 authorized_keys用于保存所有允許以當前用戶身份登錄到 ssh客戶端用戶的公鑰內容。

cd ~/.ssh/ ssh-keygen -t rsa //如果有提示,按回車繼續運行 cat ./id_rsa.pub >> ./authorized_keys //加入授權

授權完成之后,我們再使用 ssh localhost命令進行登錄,就不需要輸入密碼了。

這里提醒一下大家,如果是通過虛擬機配置 SSH,這一步已經結束了,直接進入下一步安裝 Hadoop。如果是通過服務器來配置 SSH,還需要修改 hostname配置文件才能進入下一步。

要修改該配置文件,輸入命令

sudo vim /etc/hosts

按“i”進入編輯模式,在文件中加入一行代碼

172.17.91.224 iZbp11gznj7n38xkztu6xxxx

這行代碼中,172.17.91.224是你自己的云服務器的私有IP地址,iZbp11gznj7n38xkztu6xxxx則是云服務器實例中的 Ubuntu系統的主機名。

安裝Hadoop3.1.3

為了方便操作,這里我們給出 Hadoop3.1.3的 tar包

鏈接:https://pan.baidu.com/s/1SJ-G0qfRl-_GmDIRzVY_3A 提取碼:josc

當然,我們也可以去網絡上下載自己想要的 Hadoop的版本。然而,考慮到 Hadoop官網是外網,下載速度會極其緩慢,還是推薦使用國內的鏡像站進行下載。(實際上,Hadoop官網也推薦我們通過鏡像站下載,并且推薦了北理工和清華兩個鏡像站)

這里我們使用北理工的鏡像站下載 Hadoop的穩定版本 Hadoop北理工鏡像。

鏡像站提供了幾個 Hadoop的穩定版本,根據自己的意愿選擇即可。這里我們選擇 hadoop-3.1.3。

進入目錄后,我們選擇下載 hadoop-3.1.3.tar.gz,大小是322M。

下載完成后,通過 WinSCP等軟件傳輸到自己的虛擬機或者服務器中,就放在 /usr/local目錄下。

然后我們進行解壓安裝,并修改文件權限

cd /usr/local/ sudo tar -zxvf hadoop-3.1.3.tar.gz //解壓 sudo mv ./hadoop-3.1.3 ./hadoop //文件夾改名為hadoop sudo chown -R hadoop ./hadoop //修改文件權限

hadoop-3.1.3已經解壓完成,在開始使用之前,我們先測試一下 hadoop是否可用。

cd hadoop ./bin/hadoop version

成功顯示 hadoop版本信息,hadoop可用。

Hadoop單機配置

因為 Hadoop默認的安裝模式就是單機模式,所以我們僅需要配置 hadoop的環境變量即可。

在 Hadoop的文件目錄下,/etc/hadoop文件夾中放的是配置文件。我們需要更改 hadoop-env.sh文件,把 JAVA_HOME環境變量指定到本機的JDK目錄。

如果已經忘記了 JAVA_HOME的值,請在修改之前查看一下

echo $JAVA_HOME

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

按“i”進入編輯模式,配置 JAVA_HOME環境變量。修改完成后,按“esc”鍵,輸入“:wq”保存并退出。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241

編輯完成后,使用 source命令使配置生效

source hadoop-env.sh

接著,編輯配置文件 /etc/profile,配置 hadoop環境變量 HADOOP_HOME。

cd ~ sudo vim /etc/profile

在配置文件中輸入以下代碼:

export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

編輯完成后保存并退出,使用 source命令使配置生效

source /etc/profile

測試環境是否配置成功

hadoop version

成功顯示 Hadoop的版本信息,環境變量配置成功。

Hadoop單機運行實例

hadoop自帶了大量的實例,包括 wordcount、terasort、grep等。我們可以運行一下這些實例,感受一下 hadoop單機模式的運行情況。這里我們運行實例 wordcount。

首先,在 hadoop目錄下新建 input文件夾,用來存放輸入數據。

cd $HADOOP_HOME mkdir input

然后,將 /etc/hadoop文件夾下的一個配置文件 core-site.xml復制到 input文件夾中。

cp ./etc/hadoop/core-site.xml ./input

最后,執行實例 wordcount,統計各個單詞出現的次數,將結果輸出到 output文件夾。(output文件夾不用新建,系統運行會自動建立)

./bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount ./input ./output

執行完成后,查看輸出數據的內容

cat ./output/*

注意,Hadoop 默認不會覆蓋結果文件,因此再次運行一個實例并且結果也是輸出到output目錄則會提示出錯,需要先將 output 目錄刪除。

rm -r ./output

Hadoop偽分布式配置

Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。

Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。標簽代表了配置項的名字,標簽設置的是配置的值。Hadoop 的運行方式是由配置文件決定的,運行 Hadoop 時會讀取配置文件。

對于偽分布式配置,我們需要修改 core-site.xml、hdfs-site.xml這兩個文件。如果需要從偽分布式模式切換回單機模式,需要刪除 core-site.xml、hdfs-site.xml 中的配置項。

core-site.xml、hdfs-site.xml單機模式僅有 configuration標簽。

<configuration> </configuration>

我們先修改 core-site.xml

cd $HADOOP_HOME sudo vim ./etc/hadoop/core-site.xml

按“i”鍵進入編輯模式,core-site.xml修改為下面的配置

<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property> </configuration>

修改 core-site.xml的目的是配置 HDFS的 NameNode的地址,以及配置 Hadoop運行時產生的文件的目錄。

  • fs.default.name是NameNode的URI。hdfs://主機名:端口/
  • hadoop.tmp.dir :Hadoop的默認臨時路徑。如果在新增節點或者其他情況下莫名其妙的DataNode啟動不了,就刪除此文件中的tmp目錄即可。不過如果刪除了NameNode機器的此目錄,那么就需要重新執行NameNode格式化的命令。

編輯完成后,按“esc”鍵,輸入“:wq!”強制編輯并退出。

如果出現 E212:can’t open file for writing錯誤,原因是權限不夠,普通用戶用 vim進行不了編輯保存,切換到 root賬戶再次嘗試。

在 root賬戶下,我們使用以下這條命令進行保存。這條命令的含義是把當前編輯的文件的內容當做標準輸入輸入到命令sudo tee 文件名里去。

:w ! sudo tee %

如果這條命令還是不能保存剛才編輯的 core-site.xml文件,那就直接手動修改。在 Ubuntu的圖形界面中找到 core-site.xml文件,把剛才的內容手動添加進去。

同理,將 hdfs-site.xml文件修改為下面的配置

<configuration><property><name>dfs.replication</name><value>1</value></property><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> </configuration>
  • dfs.replication表示副本的數量,偽分布式要設置為1。
  • dfs.namenode.name.dir表示本地磁盤目錄,是存儲 fsImage文件的地方。
  • dfs.datanode.data.dir表示本地磁盤目錄,HDFS數據存放 block的地方。

這兩個 xml文件配置完成后,我們需要初始化 HDFS文件系統。Hadoop的很多工作都是在自帶的 HDFS文件系統上完成的,因此需要將文件系統初始化之后才能進一步執行計算任務

cd $HADOOP_HOME ./bin/hdfs namenode -format

在運行結果中看到“successfully formatted”提示信息,就意味著 hdfs初始化成功了。

然后,我們啟動 Hadoop的 NameNode和 DataNode守護進程。

cd $HADOOP_HOME ./sbin/start-dfs.sh

啟動時如果出現SSH提示,輸入 yes即可。還有,啟動時可能會出現 WARN提示。這個提示可以忽略不計,不會影響 hadoop的正常使用。

Permanently added ‘xxxxxx’ (ECDSA) to the list of known hosts.

啟動完成之后,輸入 jps指令查看所有的 Java進程。

jps

如果出現以下四個進程,證明 Hadoop啟動成功。

Jps DataNode NameNode SecondaryNameNode

如果輸入 jps指令出現以下錯誤,就是 java的環境變量沒有生效,請使用 source命令使環境變量生效。

The program ‘jps’ can be found in the following packages: * openjdk-8-jdk-headless * openjdk-9-jdk

如果想要啟動所有的 Hadoop進程,使用 all命令,啟動過程中的 WARN可以忽略不計。偽分布式模式下我們僅 start-dfs就足夠了,不必將全部進程都啟動,全分布式模式才需要 start-all。

cd $HADOOP_HOME ./sbin/start-all.sh

Hadoop進程全部啟動的話,會有六個進程

Jps DataNode NameNode SecondaryNameNode NodeManager ResourceManager

如果想要關閉 Hadoop,使用以下命令關閉 Hadoop守護進程。如果使用 all啟動了全部進程,也請使用 all關閉全部進程。

//關閉守護進程 cd $HADOOP_HOME ./sbin/stop-dfs.sh//關閉全部進程 cd $HADOOP_HOME ./sbin/stop-all.sh

如果 Hadoop啟動之后輸入 jps指令發現 DataNode節點沒有啟動,可以嘗試一下刪除 tmp文件夾,然后重新初始化 HDFS。

cd $HADOOP_HOME ./sbin/stop-dfs.sh rm -r ./tmp ./bin/hdfs namenode -format ./sbin/start-dfs.sh

注意,這樣會刪除 HDFS中原有的所有數據,如果原有數據比較重要的話請做好備份。

Hadoop偽分布式運行實例

我們將單機模式下建立的 input和 output文件夾及其數據都刪除。

cd $HADOOP_HOME rm -r input output

在單機模式中,wordcount 例子讀取的是本地數據,偽分布式讀取的則是 HDFS 上的數據。

操作 HDFS的 Shell命令有三種:

  • hadoop fs
  • hadoop dfs
  • hdfs dfs
  • hadoop fs適用于任何不同的文件系統,比如本地文件系統和 HDFS文件系統;hadoop dfs、hdfs dfs只能適用于 HDFS文件系統。

    首先,我們需要在 HDFS 中創建用戶目錄

    cd $HADOOP_HOME ./bin/hdfs dfs -mkdir -p /user/hadoop

    然后,在相對路徑下建立新文件夾 input,將 ./etc/hadoop文件夾下的一個配置文件 core-site.xml復制到 input文件夾中。(我們使用的是 hadoop 用戶,并且已創建相應的用戶目錄 /user/hadoop ,其對應的絕對路徑就是 /user/hadoop/input)

    ./bin/hdfs dfs -mkdir /usr/hadoop/input ./bin/hdfs dfs -put ./etc/hadoop/core-site.xml /usr/hadoop/input

    復制完成后,可以通過如下命令查看文件列表:

    ./bin/hdfs dfs -ls /usr/hadoop/input

    最后,執行實例 wordcount,統計各個單詞出現的次數,將結果輸出到 output文件夾。(偽分布式運行 MapReduce 作業的方式跟單機模式相同,區別在于偽分布式讀取的是HDFS中的文件)

    ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /usr/hadoop/input /usr/hadoop/output

    執行完成后,查看輸出數據的內容(查看的是位于 HDFS 中的輸出結果)

    ./bin/hdfs dfs -cat /usr/hadoop/output/*

    注意,Hadoop 默認不會覆蓋結果文件,因此再次運行一個實例并且結果也是輸出到output目錄則會提示出錯,需要先將 output 目錄刪除。

    ./bin/hdfs dfs -rm -r output

    Web訪問Hadoop信息

    我們可以通過 Ubuntu的圖形界面,打開 FireFox瀏覽器,在地址欄輸入“localhost:9870”來查看 Hadoop信息。

    如果是云服務器,請先在云控制臺打開修改安全組,開放 9870端口,再通過“localhost : 9870”的形式訪問。

    很多博客都是說要用 50070端口進行訪問,然而 hadoop2.x用的才是 50070端口,hadoop3.X的 webUI已經改到端口 localhost : 9870。

    在打開 firefox瀏覽器的時候如果遇到無法加載的錯誤,請參考這篇博客進行解決 ubuntu自帶的firefox瀏覽器只能以root權限使用

    參考文章

    Hadoop3.1.3安裝教程_單機/偽分布式配_Hadoop3.1.3/Ubuntu18.04

    在ECS實例的Ubuntu系統中安裝Hadoop

    ubuntu添加用戶和刪除用戶

    Hadoop的HelloWorld(單機模式下的安裝和使用)

    :w !sudo tee %

    偽分布式安裝core-site.xml和hdfs-site.xml配置文件

    阿里云配置hadoop遠程連接Web頁面

    總結

    以上是生活随笔為你收集整理的Ubuntu系统安装Hadoop3.1.3并进行单机/伪分布式配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。