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
執行以下命令:
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 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.......
自此,整個教程完成,本教程是昨晚和今天早上上班之前完成的,教程是到公司憑藉記憶和筆記完成,可能會有記錯的地方,歡迎大家更正。