1.安裝java
hadoop基於java開發,安裝hadoop前需要安裝java,並在環境變量中加入JAVA_HOME,hadoop通過JAVA_HOME的地址找到java;
2.安裝hadoop
下載hadoop,下載地址:
建議不要下載最高版本,而是下載穩定版本,我下載的是3.2.2版本;將壓縮包解壓到安裝目錄,注意安裝目錄的路徑中不要有空格;
我將hadoop壓縮包解壓到D:\hadoop路徑下,解壓后hadoop的目錄是D:\hadoop\hadoop-3.2.2;
然后下載winutils,在github上可以找到:
找到winutils中對應hadoop版本的文件夾,我的安裝版本是3.2.2,將winutils下名為3.2.2文件夾中的文件,復制到hadoop安裝目錄下的bin文件夾中,替換所有同名的文件;
在環境變量中加入HADOOP_HOME,路徑為D:\hadoop\hadoop-3.2.2,並在path中加入%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin;
跟安裝java檢查環境變量是否配置正確類似,可以在cmd中輸入hadoop version,檢查hadoop環境變量配置是否正確;
3.配置hadoop
hadoop的主要配置在安裝目錄中etc/hadoop目錄下;
(1)修改core-site.xml
其中第一個property,hadoop.tmp.dir配置的是保存數據的臨時路徑,在hadoop安裝路徑下新建data文件夾,value配置為/D:/hadoop/hadoop-3.2.2/data,注意路徑前加了一個'/';
fs.defaultFS配置的是hdfs的ip和端口號,因為安裝在本地,ip配置為localhost,端口配置為9000;
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
(2)修改hadoop-env.cmd
其中JAVA_HOME默認配置為%JAVA_HOME%,可以按實際情況修改;
set JAVA_HOME=%JAVA_HOME%
(3)修改hdfs-site.xml
其中dfs.replication是數據庫的副本數,默認為3;
dfs.namenode.name.dir是DFS名稱節點在本地文件系統中存儲名稱表(fsimage)的位置;
dfs.datanode.data.dir是DFS數據節點在本地文件系統中的位置;
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/D:/hadoop/hadoop-3.2.2/data/datanode</value> </property> </configuration>
(3)修改mapred-site.xml
其中mapreduce.framework.name是指定執行mapreduce作業時使用的框架,可以配置local、classic、yarn,我這里配置的是yarn;
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(4)修改yarn-site.xml
其中yarn.nodemanager.aux-services用於指定在進行mapreduce作業時,yarn使用mapreduce_shuffle混洗技術;
yarn.nodemanager.aux-services.mapreduce.shuffle.class用於指定混洗技術對應的字節碼文件;
<?xml version="1.0"?> <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hahoop.mapred.ShuffleHandler</value> </property> </configuration>
4.節點格式化
正常情況下,格式話結束會顯示'namenode has been successfully formated',如果格式話失敗,原因可能是環境變量配置問題、hadoop版本和winutils版本不一致、etc中配置錯誤;
hdfs namenode -format
5.啟動hadoop
以管理員身份打開cmd,使用win+r快捷鍵打開運行,輸入cmd,然后ctrl+shift+enter,選擇‘是’,打開cmd;
執行start-all.cmd,會新打開4個cmd,分別是namenode、resourcemanager、nodemanager、datanode的4個進程,如果這4個cmd啟動沒有報錯,則啟動成功;
6.訪問hadoop服務網頁
訪問集群節點:
http://localhost:8088/
訪問HDFS:
http://localhost:9870/
7.啟動hadoop遇到的報錯和解決方法
報錯1:
java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager
解決方法:
將<hadoop安裝目錄>\share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.4.jar復制到<hadoop安裝目錄>\share\hadoop\yarn\下一份
報錯2:
Permissions incorrectly set for dir ... should be rwxr-xr-x, actual value = rw-rw-rw-
解決方法:
執行節點格式化語句(hdfs namenode -format)后,會在C盤tmp下生成hadoop-yarn-...的文件夾,刪除這個文件夾后重新運行hadoop
報錯3:
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to setup local dir ... /nm-local-dir, which was marked as good.
解決方法:
使用管理員權限運行cmd
報錯4:
util.SysInfoWindows: ExitCodeException exitCode=-1073741515
解決方法:
運行hadoop安裝目錄bin下的winutils.exe,查看報錯,根據報錯內容解決具體問題
參考:
-1.WIN10安裝配置Hadoop
https://zhuanlan.zhihu.com/p/111844817
-2.Hadoop集群的四個配置文件的常用屬性解析
https://zhuanlan.zhihu.com/p/114278318