1. 程式人生 > >CentOS7安裝hadoop2.7.2 實現偽分散式 測試成功(親測教程)

CentOS7安裝hadoop2.7.2 實現偽分散式 測試成功(親測教程)

CentOS7安裝hadoop2.7.2 實現偽分散式 測試成功(親測教程)

 

CentOS7安裝hadoop2.7.2 實現偽分散式 測試成功(親測教程)

經過幾天的嘗試,終於在CentOS7下安裝hadoop,實現偽分散式,並且測試成功

現在簡要的回訴一篇,以方便記憶學習

為了實現在CentOS7下hadoop偽分散式成功,我們需要做以下工作(一共需要十一步):

第一:安裝java

如果您還沒有安裝java,您可以在本部落格輸入關鍵字 安裝java 檢視幫助

這裡,我的java安裝在了/mysoft/java/jdk1.8

並且配置好java的環境變數

第二:安裝hadoop

安裝hadoop

我們可以在這裡下載到hadoop

http://hadoop.apache.org/releases.html

我這裡下載是的編譯好的包

即我最後下載的包是檔名是hadoop-2.7.2.tar.gz

我將其解壓,並複製到mysoft/hadoop  就是說我最終的hadoop的目錄就是 /mysoft/hadoop

第三:配置hadoop的環境變數

 

[[email protected] ~]$ vim .bash_profile
export HADOOP_HOME=/mysoft/hadoop
export PATH=追加$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

以上程式碼只是截取了與hadoop有關的環境變數

注意 程式碼中的追加,就是在原由的基礎上追加hadoop的相關資訊

配置好後一般需要重啟伺服器生效(我試過source .bash_profile似乎無效,不知道為何),這裡可以稍後重啟,帶到所以配置完成後。

第四:修改IP地址

如果您的IP地址是自動獲取,您還需要設定ip為靜態的,這是因為我們ip對映的時候,可能會出現IP錯誤,當然如果你能保證您的IP地址為靜態獲取,就不必去設定

如修改網絡卡資訊

vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static  #靜態IP
IPADDR=192.168.0.101  #IP地址
一般來說只修改以上兩項即可

我這裡沒有修改,因為我路由設定的靜態獲取

 

第五:修改IP對映

我們在安裝作業系統的時候會讓我們自己設定,但是我們一般都是傻瓜似的下一步下一步安裝

所以我們這裡的網路名是預設的IP地址,我們需要需改以便於我們操作和記憶

編輯vim /etc/hostname

 

# vim /etc/hostname
192.168.0.101

將上面的資訊(就是IP地址名)修改為MyCentOS

這個修改是可以自定義的比如您可以修改為“xiaohua”

 

# vim /etc/hostname
MyCentOS

 

編輯/etc/hosts檔案,設定主機名稱與IP對映關係

# vi /etc/hosts
192.168.0.101        MyCentOS

中間的空格一般是一個tab

 

第六:配置ssh免密碼登入

即使是在偽分散式下,我們也需要配置ssh免密碼登入

如果您還不會,可以直接在本部落格輸入關鍵字搜尋 ssh免密碼登入

配置SSH免密碼登入,在偽分散式模式下也需要啊,他需要通知其他的埠(每一個埠可以認為是一個計算機)去建立或執行,所以就需要配置免密碼登入,否則您需要多次輸入密碼,如果是上千太伺服器呢?可以想象以下!

第七:修改hadoop的五個配置檔案

這五個配置檔案在 /mysoft/hadoop/etc/hadoop 裡面

7.1、修改hadoop-env.sh

這個檔案主要是修改java_home的位置,修改JAVA_HOME的路徑為以下路徑

export JAVA_HOME=/mysoft/java/jdk1.8

注意這裡必須這裡修改,否則在後期會出現找不到jdk的錯誤,當時使用預設的 ${JAVA_HOME}卻是可以獲得hadoop的版本等資訊的

7.2、在core-site.xml中修改或新增以下資訊

 

<property>
 	<!-- 指定namenode的地址 -->
	<name>fs.defaultFS</name>
	<value>hdfs://MyCentOS:9000</value>
</property>
	<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
<property>
	<name>hadoop.tmp.dir</name>
        <value>/mysoft/hadoop/tmp</value>
</property>
		

以下程式碼中的hdfs就是檔案系統,當然您可以用file,或自己定義的檔案系統

 

7.3、修改hdfs-site.xml

指定HDFS的副本數量,因為我這裡是單機偽分散式,所以我這裡設定為1,預設好像是3

 

<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

7.4、修改mapred-site.xml

指定mr執行在yarn上

 

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

需要注意的是,並沒有mapred-site.xml檔案的,但是有mapred-site.xml.template

所以我們只需要將這個mapred-site.xml.template更名為mapred-site.xml即可

 

mv mapred-site.xml.template mapred-site.xml

7.5、修改yarn-site.xml

指定yarn(ResourceManager)執行的地址,以及reducer獲取資料的方式

 

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>MyCentOS</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

第八:我們需要關閉防火牆

關於安全,我們的分散式系統應該是存在與內網的,所以關閉防火牆也是沒有關係的,當然我們可以自定義開啟hadoop所需要的埠也可以。

關閉防火牆只需要簡單的幾步

 

service iptables stop       #關閉防火牆服務

chkconfig iptables off     #關閉防火牆開機啟動

 

[[email protected] ~]$ service iptables status
Redirecting to /bin/systemctl status  iptables.service
● iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
[[email protected] ~]$ service iptables stop
Redirecting to /bin/systemctl stop  iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
[[email protected] ~]$ chkconfig iptables off
服務 iptables 資訊讀取出錯:沒有那個檔案或目錄

需要注意的是,以上資訊顯示了一個錯誤,就是沒有這個防火牆,以上方法適用於centos7以前的版本

 

CentOS7.0如果沒有改為iptables防火牆,那麼他預設使用firewall作為防火牆,使用以下命令檢視和關閉防火牆)

檢視防火牆狀態:firewall-cmd –state

關閉防火牆:systemctl stop firewalld.service

 

 

自此,我們就可以重啟伺服器了

注意,這裡需要重啟,一些更改才能生效

第九:格式化

執行命令

hdfs namenode -format

當最後出現以下資訊就表示格式化成功

16/05/13 07:32:10 INFO util.ExitUtil: Exiting with status 0
16/05/13 07:32:10 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at MyCentOS/192.168.0.101
************************************************************/

關鍵程式碼是 Extting with status 0 表示成功

此時我們可以檢視我們的hadoop目錄下是否有tmp檔案被建立,以及tmp目錄下的其他檔案被建立,這裡是肯定是會被建立的

 

第十:啟動我們的dfs和yarn

執行命令:start-dfs.sh

執行命令:start-yarn.sh

輸入命令 jps可以檢視我們運行了那些程式

[[email protected] sbin]$ jps
6225 NodeManager
6099 ResourceManager
5765 SecondaryNameNode
6680 Jps
5384 DataNode
5146 NameNode

可以看到我們啟動了 一共六個程式

NameNode 和DataNode 我們都很熟悉了吧,其他的我們可能不太熟悉,呵呵。

 

第十一:測試一下試試

我這裡準備上傳一個檔案 WinQQ7.8-20151109-Longene.deb 到分散式檔案系統的aaa目錄下,這裡大家注意看其大小是228.4MB

 

測試hadoop

 測試hadoop

 

執行以下命令:

hdfs dfs -mkdir /aaa 建立目錄aaa

hdfs dfs -mkdir /aaa

執行以下命令:上傳檔案

hdfs dfs -put /mysoft/download/WinQQ7.8-20151109-Longene.deb /aaa/

 

hdfs dfs -put /mysoft/download/WinQQ7.8-20151109-Longene.deb /aaa/

 

接下來我們可以進入到一個很深的目錄去檢視,這個目錄不記得了,大家到tem下去找吧

大家可以看以下截圖,兩個塊相加的大小是和我們上的原始檔大小是一樣的228.4MB

不知道為何我這裡的塊大小是134.2,其實這個值是可以修改的

修改hdfs-site.conf 檔案,新增name為dfs.block.size,value就是自定義的塊大小

 

測試hadoop上傳檔案

測試hadoop上傳檔案

 

 

 

hadoop提供了很多測試的例子

比如:

以下測試是測試圓周率的

hadoop jar hadoop-mapreduce-examples-2.7.7.jar pi 10 10

以下測試是測試分析因為單詞出現的個數的,aaa目錄下我們我們已將上傳好了一片英文文章

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /aaa/ /aaa/output

結果檢視(自行檢視output的測試結果是那一個檔案)

hadoop fs -cat /aaa/output/part.......

 

自此,整個教程完成,本教程是昨晚和今天早上上班之前完成的,教程是到公司憑藉記憶和筆記完成,可能會有記錯的地方,歡迎大家更正。