Hadoop安裝搭建偽分布式教程(全面)吐血整理
- 1、安裝下載虛擬機VMware
- 2、下載Ubuntu18.04鏡像檔案,并在VMware中添加虛擬機,
- 3、Hadoop偽分布式搭建
- 3.1 創建hadoop用戶,并更新ubuntu系統中相應軟體,安裝vim編輯器
- 3.1.1 創建hadoop賬戶
- 3.1.2 更新命令
- 3.2 配置SSH,并設定無密碼登錄
- 3.2.1 下載SSH
- 3.2.2 設定無密碼登錄
- 3.3 安裝Java并配置環境變數
- 3.3.1 下載Java
- 3.3.2 配置環境變數
- 3.4 下載編譯好的hadoop,配置hadoop的環境
- 3.4.1 下載并解壓
- 3.4.2 配置環境
- 3.5 配置四個檔案
- 3.5.1 core-site.xml
- 3.5.2 hdfs-site.xml
- 3.5.3 mapred-site.xml
- 3.5.4 yarn-site.xml
- 3.6 格式化后啟動、呼叫實體、停止所有運行的hadoop行程
- 3.6.1 格式化并啟動
- 3.6.2呼叫實體
1、安裝下載虛擬機VMware
博主使用的是VMware Workstation 16 Pro,這個的安裝教程很多,大家可以自行搜索安裝,
官網:https://www.vmware.com/cn/products/workstation-pro.html
2、下載Ubuntu18.04鏡像檔案,并在VMware中添加虛擬機,
Ubuntu一般使用18或者16版本,20版本有些未知的問題,
打開ubuntu18.04.1的下載地址:https://www.ubuntu.com/download/desktop,進入頁面后點擊右邊的Download按鈕開始下載,
1.右上角點擊新建虛擬機

2.默認
3.選擇自己安裝鏡像檔案的位置
4.這里自己設定賬戶和密碼
5.選擇虛擬機的位置,博主放在了D盤
6.這個的配置比較高了,也可以使用默認的4核
7.按照建議記憶體,之后就一直下一步
8.這里的磁盤大小默認為20G,根據自己需要選擇大小,將虛擬磁盤儲存為單個檔案
然后一直下一步,就能等它跑進度條了,
3、Hadoop偽分布式搭建
前兩個都是開胃小菜,這才是正題,
3.1 創建hadoop用戶,并更新ubuntu系統中相應軟體,安裝vim編輯器
3.1.1 創建hadoop賬戶
1.按 Ctrl + Alt + T,即可進入命令列模式,
2.輸入以下陳述句,創建一個名為hadoop的用戶,useradd命令的-m用來指定用戶名,-s用來指定用戶登錄時所需的shell檔案:
sudo useradd -m hadoop -s /bin/bash
3.由于部門權限規定或安全限制,負責部署hadoop的管理員沒有linux root權限,但按照最佳做法,安裝時有一些操作需要以root用戶身份執行,以下給予該用戶root權限:
sudo adduser hadoop sudo
如果在安裝Ubuntu時用戶名使用的是hadoop,這兩步不需要,
3.1.2 更新命令
1.由于ubuntu系統剛完成安裝,需要更新相關一些軟體,確保接下來的操作可以正常完成:
sudo apt-get update
如果這條命令執行速度很慢,請使用下面的方法(雖然一般很快)
參考https://blog.csdn.net/m0_37601622/article/details/82968780
如果發現更新速度過慢,或者更新時反復跳出連接超時的提示,則可以將源檔案鏈接地址替換為國內鏡像檔案從而提高更新速度,首先先利用cp命令備份當前系統的源檔案,其中第一個引數時拷貝的檔案路徑和檔案名稱,第二個是拷貝到的檔案路徑和檔案名:
sudo cp /etc/apt/sources.list /etc/apt/sources.bak1
打開需要更新的源檔案:
sudo gedit /etc/apt/sources.list
將檔案內的內容替換成其他源檔案:
如清華源:參考https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
完成后保存,重新運行更新命令:
sudo apt-get update
sudo apt-get upgrade
2.上述更新完成后:
部分linux系統會自帶vim編輯器,但若在終端無法啟動該編輯器,則需要安裝以待后續編輯組態檔,接下來跳出的提示回復Y即可:
sudo apt-get install vim
3.2 配置SSH,并設定無密碼登錄
3.2.1 下載SSH
根據Hadoop分布式系統的特性,在任務計劃分發、心跳監測、任務管理、多租戶管理等功能上,需要通過SSH(Secure Shell)進行通訊,所以必須安裝配置SSH,另因為Hadoop沒有提供SSH輸入密碼登錄的形式,因此需要將所有機器配置為NameNode可以無密碼登錄的狀態,
1.首先安裝SSH server(之所以不需要安裝SSH client是因為ubuntu已經默認安裝了):
sudo apt-get install openssh-server
2.完成后連接本地SSH
ssh localhost
按提示輸入yes,再輸入hadoop用戶的密碼,完成登錄,
3.2.2 設定無密碼登錄
1.以下進行無密碼登錄的設定,首先先退出剛剛ssh localhost的連接:
exit
2.然后進入SSH對應目錄下,該目錄包含了幾乎所有當前用戶SSH配置認證相關的檔案:
cd ~/.ssh/
3.輸入生成SSH私鑰與公鑰的命令,-t用于宣告密鑰的加密型別,輸入Hadoop密碼,這一步會提醒設定SSH密碼,輸入密碼時直接回車就表示無密碼,第二次輸入密碼回車確定,最后一次提交:
ssh-keygen -t rsa
4.將生成的SSH的公鑰加入目標機器的SSH目錄下,這里采用cat命令與>>,cat file1>>file2的含義為將file1內容append到file2中,
cat ./id_rsa.pub >> ./authorized_keys
3.3 安裝Java并配置環境變數
3.3.1 下載Java
Hadoop和與之相關的很多工具都是通過java語言撰寫的,并且很多基于hadoop的應用開發也是使用java語言的,但是ubuntu系統不會默認安裝java環境,所以需要安裝java并配置環境變數,以下安裝下載java的jdk、jre:
sudo apt-get install default-jre default-jdk
3.3.2 配置環境變數
1.通過vim編輯器打開環境變數的設定檔案:
sudo vim ~/.bashrc
2.在檔案的尾部加上以下陳述句:
export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
在這一步在我的虛擬機中直接復制時會出現第一句的export只剩rt兩個字母,必須要手動輸入export,
3.按Esc鍵退出,然后輸入:wq保存修改,然后使環境變數生效:
source ~/.bashrc
3.4 下載編譯好的hadoop,配置hadoop的環境
3.4.1 下載并解壓
1.在虛擬機內的火狐瀏覽器中輸入https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/,下載hadoop應用,默認保存至downloads檔案夾下,選擇已編譯好的版本hadoop-2.9.2.tar.gz,因為該版本可以直接解壓使用,更為方便,
2. 進入解壓包存放的Downloads檔案夾,右鍵屬性查看壓縮包的絕對路徑,然后解壓至/usr/local目錄下:
sudo tar -zxf /home/hadoop/Downloads/hadoop-2.9.2.tar.gz -C /usr/local
3.進入剛剛解壓后存放的目錄下:
cd /usr/local/
4.將該檔案夾的名字重命名為hadoop,屏蔽掉版本號的資訊,使得后續命令列輸入更為簡便:
sudo mv ./hadoop-2.9.2/ ./hadoop
3.4.2 配置環境
1.將已重命名的該檔案夾的擁有者,指定給用戶hadoop,缺少這一步,將導致后續操作特別是運行Hadoop時,反復因權限不足而停止:
sudo chown -R hadoop ./hadoop
2.經后續測驗發現問題,雖然已經為ubuntu系統設定了java的環境變數,但hadoop實際運行時仍會出現找不到java-jdk的現象,故再對hadoop的環境檔案進行修改,此外,該檔案還包括啟動引數、日志、pid檔案目錄等資訊,先進入目錄:
cd ./hadoop/etc/hadoop
3.使用vim編輯器,打開環境變數檔案:
sudo vim hadoop-env.sh
4.添加該陳述句(這里也需要手動輸入export):
export JAVA_HOME=/usr/lib/jvm/default-java
5.按Esc鍵退出,然后輸入:wq保存修改,然后使環境變數生效:
source hadoop-env.sh
6.截至目前,hadoop框架已經搭建好了,可以通過呼叫版本號進行測驗hadoop是否可用
cd /usr/local/hadoop
./bin/hadoop version
正確搭建應該能看到hadoop的版本號等資訊:

3.5 配置四個檔案
從字面上,很好理解偽分布式的含義,對于Hadoop而言,可以在單節點上以偽分布式的方式運行,Hadoop 行程以分離的 Java 行程來運行,節點既作為 NameNode 也作為 DataNode,設定Hadoop引數的主要方式是配置一系列由Hadoop守護行程和客戶端讀取的組態檔,如之前提及的hadoop-env.sh,還包括core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties、taskcontroller.cfg等,偽分布式需要修改四個檔案,修改的順序沒有特殊要求,以下進行逐一介紹,
此時需要在hadoop檔案夾下的hadoop檔案中
絕對路徑是cd usr/local/hadoop/etc/hadoop/
3.5.1 core-site.xml
1.先打開xml檔案,注意./表示當前檔案夾下,當前應該在第二個hadoop檔案夾下cd ./etc/hadoop/,
sudo gedit core-site.xml
2.打開xml檔案應該是有內容的,如果沒有內容說明打開檔案不對,需要檢查輸入的路徑及檔案名是否正確,將替換為以下內容,第一個屬性表示Hadoop重要臨時檔案的存放目錄,指定后需將使用到的所有子級檔案夾都要手動創建出來,否則無法正常啟動服務;第二個被官方稱之為默認系統檔案的名稱(the name of the default file system),實際上決定了檔案系統的主機號、埠號,對于偽分布式模型來說,其主機地址為localhost,
<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>
3.5.2 hdfs-site.xml
1.同樣進入hdfs-site.xml檔案:
sudo gedit hdfs-site.xml
2.對hdfs-site.xml進行同樣的替換操作,屬性的含義分別為復制的塊的數量、DFS管理節點的本地存盤路徑、DFS資料節點的本地存盤路徑:
<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>
3.5.3 mapred-site.xml
1.Hadoop2.X并沒有像1.X提供mapred-site.xml檔案,需要將樣本檔案復制為可使用的組態檔:
mv mapred-site.xml.template mapred-site.xml
2.同樣打開
sudo gedit mapred-site.xml
3.這里使用yarn,yarn 是一種資源管理和作業調度技術,作為Hadoop 的核心組件之一,負責將系統資源分配給在 Hadoop 集群中運行的各種應用程式,并調度要在不同集群節點上執行的任務,其基本思想是將資源管理和作業調度/監視的功能分解為單獨的 daemon,總體上yarn是 master/slave 結構,在整個資源管理框架中,ResourceManager 為 master,NodeManager 是 slaver,具體配置內容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.5.4 yarn-site.xml
1.打開
sudo gedit yarn -site.xml
2.然后配置yarn-site.xml檔案,這里修改NodeManager上運行的附屬服務即可:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.6 格式化后啟動、呼叫實體、停止所有運行的hadoop行程
3.6.1 格式化并啟動
1.為了保險起見,執行這一步前關閉命令列模式,重新打開,放棄當前路徑,
更改配置并保存后,格式化HDFS的NameNode,在這一步之前,如果hdfs-site.xml中dfs.namenode.name.dir屬性指定的目錄不存在,格式化命令會自動創建之;如果存在,請確保其權限設定正確,此時格式操作會清除其內部所有的資料并重新建立一個新的檔案系統:
/usr/local/hadoop/bin/hdfs namenode -format
顯示資訊內若包含以下內容,則說明成功格式化:

2.然后啟動全部行程:
start-all.sh
3.成功啟動后,可以通過web瀏覽器訪問http://localhost:50070,可以看到如下界面:

4.輸入jps查看到六個行程,如果缺少某行程需要查詢解決方法:

5.在HDFS中創建用戶目錄:
hdfs dfs -mkdir -p /user/hadoop
6.創建input目錄,用于輸入資料:
hdfs dfs -mkdir input
7.將所需的xml組態檔復制到input中:
(需要注意路徑)
hdfs dfs -put usr/local/hadoop/etc/hadoop/*.xml input
8.如果系統之前運行過hadoop,則需要洗掉output目錄:
hdfs dfs -rm -r output
這幾步會出現很多的warning,不用在意,
3.6.2呼叫實體
1.運行實體,需要先進入hadoop的檔案夾下
cd /usr/local/hadoop
2.輸入
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output
要等一會,結果如下圖

3.然后進入hadoop下面的bin
cd /usr/local/hadoop/bin
4.查看運行結果
hdfs dfs –ls ./output
hdfs dfs -cat output/*

到這里,整個安裝程序就結束了,第一次這么認真寫CSDN,完全是因為裝這個偽分布式實在太痛苦了,會遇到很多沒法解決的問題,我基本重裝了虛擬機6遍,整個花時間十幾個小時,吐血,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302464.html
標籤:其他
