菜雞在window下得hadoop安裝艱難踩坑,各路問題層出不窮(繁瑣版)

此文並不是window下安裝hadoop最精簡的博文,裏面是我安裝的整個過程遇到的問題,裏面我走了很多彎路,相信菜雞如我都能安裝成功,你也可以。

===============================================================================

hadoop是一個分佈式集羣的框架,hdfs就是其中的分佈式文件系統,hadoop在概念上包含更多的東西。

hadoop官網下載地址:https://hadoop.apache.org/releases.html 

(最好與spark版本考慮,下載對應的版本)

歷史版本請再主頁http://hadoop.apache.org 下面得Release archive頁面中一個個翻去,我的2.6.0就是從裏面發出來的,因爲spark裝的時hadoop 2.6的,怕用2.7出問題,實際應該是兼容的,但是還是保險一點。

把下載下來的hadoop-2.6.0.tar.gz 直接解壓到自己想要放的目錄裏即可,例如我放在F:\devlopSoftwareDeploy\hadoop-2.6.0


然後同樣設置環境變量HADOOP_HOME=F:\devlopSoftwareDeploy\hadoop-2.6.0,以及path中追加%HADOOP_HOME%\bin

 

驗證是否安裝成功,cmd中使用hadoop得命令:hadoop fs -ls \

成功的情況是會列出hadoop得hdfs文件系統根目錄的文件列表,但是我的報錯了,


遇到錯誤一:JAVA_HOME is incorrectly set. Please update F:\devlopSoftwareDeploy\hadoop-2.6.0\conf\hadoop-env.cmd

搜查資料,針對 是因爲hadoop-2.6.0\etc\hadoop\hadoop-env.cmd 中設置的JAVA_HOME變量中含有空格,然後導致找不到jdk,

總共有三種方式解決,任選其一:

①java 重新安裝換到沒有空格的目錄;

②使用軟鏈接的方式,因爲配置文件中是安空格分隔自負,Program File 直接斷開了,使用軟鏈接就不會有問題了;

mklink -J/ F:\tools\java "F:\Program Files\Java\jdk1.8.0_181"

③看到有人用PROGRA~1 代替Programe Files居然成功了,很神奇

set JAVA_HOME=F:\PROGRA~1\Java\jdk1.8.0_181


然後又遇到新的問題二:Failed to locate the winutils binary in the hadoop binary path

安錯誤搜索一番後,發現是window下hadoop無法直接使用cmd的文件系統,需要藉助其他的工具,模擬成linux環境,使用shell名利才行,缺少兩個文件:hadoop.dll 和winutils.exe 來達成目的,而且hadoop對於有包含空格的目錄是有問題的;

對應github連接:https://github.com/4ttty/winutils  查找到對應版本hadoop然後下載那兩個卻是的文件

下載完畢,記得放入hadoop得bin/目錄下

 

 

然後又遇到新的問題三:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

java.lang.RuntimeException: Error while running command to get file permissions : java.io.IOException: Cannot run program "F:\devlopSoftwareDeploy\hadoop-2.6.0\bin\winutils.exe": CreateProcess error=216, 該版本的 %1 與你運行的 Windows 版本 不兼容。請查看計算機的系統信息,然後聯繫軟件發佈者。

 

#######################################大坑大坑########################################################


查資料發現使用hadoop -version 已經是安裝成功了,依然出現是因爲自己沒有配置好hadoop下的hadoop-2.6.0/etc/hadoop/下的配置文件和啓動它,

①yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
	<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.hadoop.mapred.ShuffleHandler</value>
	</property>

</configuration>

②hdfs-site.xml

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/hadoop/data/dfs/namenode</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/hadoop/data/dfs/datanode</value>
	</property>
</configuration>

③core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
</configuration>

④log4j.properties 僅僅設置了以下hadoop.logs.dir=F:\applog\hadoop

hadoop.log.dir=F:\applog\hadoop

⑤複製一份mapred-site.xml.template,並重命名爲mapred-site.xml,修改裏面的內容

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

⑥前面已經解決過過hadoop-env.cmd的JAVA_HOME=  的空格問題了,有三種方法按照其中之一着弄就行,推薦用PROGRA~1 代替Programe Files

⑦在hadoop-2.6.0/bin 目錄下打開cmd格式化hdfs,輸入:hdfs namenode -format

⑧cmd 切換到hadoop-2.6.0/sbin/目錄下,啓動hadoop,輸入:start-all.cmd

⑨ 這樣就啓動了hadoop,瀏覽器中輸入: http://localhost:8088/cluster

可見如下頁面:

十:使用hadoop得查看目錄和創建目錄查看是否成功:

hadoop fs -ls /

hadoop fs -mkdir /tmp

hadoop fs -ls /

#######################Oh my gold 謝天謝地裝了大半天終於成功了,簡直要死了,但是有的小夥伴可能還是不成功,因爲中間我還做了其他的事,見下面說明#########################

中間我搜索資料時發現,別人的winutils怎麼東一個西一個的各種東西,很煩,後來才發現hadoop原生的本來就智能再linux上面運行,而window版本的是別人第三方努力的使用cmd + dll +winutils的方式在window環境中模擬linux環境的過程;

看到各種將winutils中的東西覆蓋hadoop-2.6.0/bin下,我便直接先壓縮打包一份bin目錄下的所有文件,然後再去github上搜索winutils的start最多、fork最多的,也就是這個https://github.com/steveloughran/winutils,然後將將其全部下載下來;

最後將2.6.0的版本下bin的所有東西都複製到hadoop-2.6.0/bin下面,並覆蓋文件,所以我後面更改完各種配置後,再啓動hadoop就不會在有什麼可缺的了。

我將所有配置文件如xml打開

將其中java目錄、hadoop目錄全都再notepad++ 中 替換成了自己環境的

例如:

c:\java\jdk7\bin\java 全替換爲 F:\Program Files\Java\jdk1.8.0_181\bin\java

c:\hadoop\logs\hadoop 全替換爲 F:\applog\hadoop

c:\hdp\hadoop-2.6.0.2.2.0.0-2041 全替換爲 F:\devlopSoftwareDeploy\hadoop-2.6.0

重新 在bin下hdfs namenode -format 和 在sbin下start-all.cmd 就好了

 

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