Hadoop進階篇(安裝配置)

windows平臺上搭建Hadoop2.7.4

準備工作1:
需要提前配好JDK1.8,及相關環境變量(本教程針對64位,32位沒嘗試過),
JAVA_HOME,比如本文實驗環境 C:\PROGRA~1\Java\jdk1.8.0_131
Path中,最後面加上 ;%JAVA_HOME%\bin;
注意JAVA_HOME的program files用Progra~1代替,避免出現空格。

準備工作2:
下載Hadoop二進制編譯好的版本。Hadoop二進制版可看做是綠色免安裝的軟件,解壓到不帶中文的目錄中即可,比如本文實驗環境C:\Hadoop2.7.4。
所需工具的Git地址:https://github.com/845318843/Hadoop2.7.4forWindows

準備工作3:
下載Hadoop在windows平臺的輔助工具,即編譯好的winutils,它無需藉助cygwin即可模擬Linux環境。

正式開始:

第一步,Hadoop的環境變量設置
新建HADOOP_HOME變量,比如本文實驗環境 C:\Hadoop2.7.4
在這裏插入圖片描述
Path中,添加;%HADOOP_HOME%\bin;
在這裏插入圖片描述
設置好後, cmd內輸入 hadoop version, 出現下圖說明環境配置好了
在這裏插入圖片描述

第二步(省略),使用winutils的bin覆蓋bin中的文件。
這個工具是windows平臺的輔助工具,它無需藉助cygwin即可模擬Linux環境。
考慮到初學者比較擔心Hadoop版本號、64位、32位等不一致會帶來的兼容性問題,
我已統一打包好放Git上,版本號爲2.7.4,64位。Git下回來的一套東西都在裏面。
免去替換文件的環節。
所需工具的Git地址見第一步。

關於兼容性問題多說兩句,winutils與具體的hadoop版本是有關的,
如果選用不同的hadoop版本,需要找到正確的util,
目前hadoop並沒有提供window util,
所以如果選擇了最新版本的hadoop,可能無法在網上找到合適的版本,

那需要自己編譯。
Hadoop各版本下載:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
winutils各版本下載:https://github.com/steveloughran/winutils。

第三步,修改5個配置文件
配置文件在etc\hadoop\文件夾下,它們分別是
1.yarn-site.xml、 2.mapred-site.xml、 3.hdfs-site.xml
4.core-site.xml、 5.hadoop-env.cmd
±±±±±±±±±±±±±±±±±±±±±±

yarn-site.xml文件用於配置 yarn 資源管理器,yarn是一個通用資源管理系統。
mapred-site.xml文件用於配置 MapReduce作業。 MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。

hdfs-site.xml文件用於配置HDFS分佈式文件系統,文件副本數量、物理存儲位置等信息。

core-site.xml 文件用於配置HDFS的對外端口,臨時文件夾位置等信息。

hadoop-env.cmd 文件用於配置Hadoop運行環境變量,如JDK位置、控制檯日誌過濾級別。

因配置信息過多,影響整體閱讀,另開了一篇博文關於配置信息的介紹,
博文地址:https://blog.csdn.net/ai_64/article/details/100803903

第四步,完成配置更改後,執行hdfs啓動並初始化(格式化)。

1.格式化hdfs命令
hadoop namenode –format

備註:我這裏的 –y 是因爲我電腦環境已初始化, -y爲了免去反覆確認。
在這裏插入圖片描述

2.啓動dfs命令

進入sbin目錄下,start-dfs.cmd,彈出2個窗口,一個是Namenode,一個是Datanode。
爲什麼需要彈出2個窗口?
HDFS需要Namenode和Datanode配合使用。用Namenode管理Datanode,數據存在Datanode中,NameNode 和 DataNode 都是被動式響應。Client請求某個文件時,先請求Namenode。
在這裏插入圖片描述
3.啓動yarn命令
在這裏插入圖片描述
進入sbin目錄下,start-yarn.cmd,一樣彈出2個窗口,一個是Resourcemanager,一個是Nodemanager。
爲什麼需要彈出2個窗口?
Yarn需要Resourcemanager和Nodemanager配合使用。
Hadoop不僅提供分佈式存儲還是分佈式計算。
分佈式存儲比較容易理解,基本就兩個東西,Namenode和Datanode。
分佈式計算中,關係最複製的是ResourceManager。
弄懂ResourceManager就弄懂了分佈式計算的60%。
ResourceManager管理髮放每一個應用程序的資源,應用程序的資源跑在容器中,因此還需要不同的容器,下文會講容器。但是應用程序執行狀況不由ResourceManager管理,專門有ApplicationMaster監控應用程序。ResourceManager管理ApplicationMaster。
Nodemanager 也是ResourceManager的下屬,是每一臺機器框架的代理,是執行應用程序的容器,監控應用程序的資源使用情況 (CPU,內存,硬盤,網絡)。
綜上所述,Yarn需要Resourcemanager和Nodemanager配合使用。

4.啓動start-all命令
在這裏插入圖片描述

該命令是yarn和dfs的組合,彈出4個窗口,快速停止用 stop-all.sh。
可在cmd中輸入 C:\Hadoop2.7.4\etc\hadoop\jps查看運行的進程。


若發現端口已被佔用,可考慮改端口,也考慮殺進程後再重新運行。
殺進程教程見博文:
http://www.xx.com

5.驗證是否成功

訪問Hadoop網頁服務
 hadoop自帶的web控制檯GUI

就可以成功見到如下界面

  1. 資源管理GUI:http://localhost:8088/;
    在這裏插入圖片描述
    2.節點管理GUI:http://localhost:50070/
    在這裏插入圖片描述

6.根據你core-site.xml的配置,接下來你就可以通過:hdfs://localhost:8010來對hdfs進行操作了。
命令操作示範:
查看根目錄下的文件:hadoop fs –ls / 或者 hadoop fs -ls hdfs://localhost:8010/
在這裏插入圖片描述
空白,什麼都沒有。
創建目錄: hadoop fs –mkdir /foldertest
在這裏插入圖片描述
操作完成無提示。
查看目錄下的文件:hadoop fs –ls /
在這裏插入圖片描述
換url方式查看根目錄下的文件: hadoop fs -ls hdfs://localhost:8010/
在這裏插入圖片描述

上傳數據到遠端倉庫/foldertest中
hadoop fs –put ./test/goodDog.txt /foldertest
在這裏插入圖片描述

下載文件夾到C:\Hadoop2.7.4\sbin\test文件夾中
hadoop fs –get /foldertest ./test
在這裏插入圖片描述

查看文件命令
hadoop fs -cat  foldertest/goodCat.txt

在這裏插入圖片描述

刪除文件/foldertest/goodDog.txt
hadoop fs -rm /foldertest/goodDog.txt
在這裏插入圖片描述

更多命令行操作,比如Mapreduce任務管理,
見下一篇博文:

QA常見問題:
1:啓動hadoop可能提示找不到JAVA_HOME路徑。
因爲hadoop讀取JAVA_HOME環境變量存在空格導致。

2:啓動hadoop提示找不到HADOOP。
因爲Hadoop環境變量沒有配置好,請檢查Hadoop環境變量配置。

3:winutil.exe 和 hadoop.dll存在兼容性問題。
換一個配套的老版本比折騰要強100倍。

4:namenode啓動失敗
如果上述2個錯誤出現的話,start-all.cmd命令會在nodename下創建文件,需要在nodename目錄下刪除所有命令,再執行start-all.cmd 即可修復

5:沒有tmp文件夾導致出現錯誤。
在core-site.xml中配置 hadoop.tmp.dir和其路徑(上面都有)
6:遇到NodeManage啓動失敗?
因爲 \tmp目錄下沒有 nm-local-dir文件夾, 創建一個新的就好了。

7:上傳文件提示There are 0 datanode(s) running。
因爲多次格式化clusterID不一致導致的錯誤,導致datanode啓動不了。
用Hadoop2.7.4\workplace\name\current\VERSION文件裏面的clusterID,修改Hadoop2.7.4\workplace\data\current\VERSION文件裏面的clusterID。

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