大数据2 Hadoop伪分布模式配置部署
為什么80%的碼農都做不了架構師?>>> ??
Hadoop偽分布模式配置部署
一、實驗環境說明
- 注意:本實驗需要按照上一節單機模式部署后繼續進行操作
1. 環境登錄
無需密碼自動登錄,系統用戶名 shiyanlou
2. 環境介紹
本實驗環境采用帶桌面的 Ubuntu Linux 環境,實驗中會用到桌面上的程序:
- XfceTerminal:Linux 命令行終端,打開后會進入 Bash 環境,可以使用 Linux 命令
- Firefox:瀏覽器,可以用在需要前端界面的課程里,只需要打開環境里寫的 HTML/JS 頁面即可
- GVim:非常好用的編輯器,最簡單的用法可以參考課程 Vim 編輯器
3. 環境使用
使用Vim編輯器輸入實驗所需的代碼,然后使用Xfce終端命令行環境進行編譯運行,查看運行結果,運行后可以截圖并分享自己的實驗報告,實驗報告中的數據可以真實有效證明您已經完成了實驗。
實驗報告頁面可以在“我的主頁”中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操作的時間,如果沒有操作,系統會記錄為發呆時間)。這些都是您學習的真實性證明。
4. 參考文檔
本實驗參考下列文檔內容制作:
- http://www.cnblogs.com/kinglau/p/3796164.html
- http://www.linuxidc.com/Linux/2012-01/50880p2.html
二、Hadoop偽分布式模式配置
注意:本實驗需要按照上一節單機模式部署后繼續進行操作,因此您必須先完成上一節實驗。
1. 相關配置文件修改
1).修改core-site.xml:
$ sudo gvim /usr/local/hadoop/etc/hadoop/core-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>fs.default.name</name><value>hdfs://localhost:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property> </configuration>常用配置項說明:
- fs.default.name這是一個描述集群中NameNode結點的URI(包括協議、主機名稱、端口號),集群里面的每一臺機器都需要知道NameNode的地址。DataNode結點會先在NameNode上注冊,這樣它們的數據才可以被使用。獨立的客戶端程序通過這個URI跟DataNode交互,以取得文件的塊列表。
- hadoop.tmp.dir?是hadoop文件系統依賴的基礎配置,很多路徑都依賴它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默認就放在/tmp/hadoop-${user.name}這個路徑中
更多說明請參考core-default.xml,包含配置文件所有配置項的說明和默認值。
2).修改hdfs-site.xml:
$ sudo gvim /usr/local/hadoop/etc/hadoop/hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>dfs.replication</name><value>1</value></property> </configuration>常用配置項說明:
- dfs.replication它決定著系統里面的文件塊的數據備份個數。對于一個實際的應用,它應該被設為3(這個數字并沒有上限,但更多的備份可能并沒有作用,而且會占用更多的空間)。少于三個的備份,可能會影響到數據的可靠性(系統故障時,也許會造成數據丟失)
- dfs.data.dir這是DataNode結點被指定要存儲數據的本地文件系統路徑。DataNode結點上的這個路徑沒有必要完全相同,因為每臺機器的環境很可能是不一樣的。但如果每臺機器上的這個路徑都是統一配置的話,會使工作變得簡單一些。默認的情況下,它的值為file://${hadoop.tmp.dir}/dfs/data這個路徑只能用于測試的目的,因為它很可能會丟失掉一些數據。所以這個值最好還是被覆蓋。
- dfs.name.dir這是NameNode結點存儲hadoop文件系統信息的本地系統路徑。這個值只對NameNode有效,DataNode并不需要使用到它。上面對于/temp類型的警告,同樣也適用于這里。在實際應用中,它最好被覆蓋掉。
更多說明請參考hdfs-default.xml,包含配置文件所有配置項的說明和默認值。
3).修改mapred-site.xml:
$ sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml $ sudo gvim /usr/local/hadoop/etc/hadoop/mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>常用配置項說明:
- mapred.job.trackerJobTracker的主機(或者IP)和端口。
更多說明請參考mapred-default.xml,包含配置文件所有配置項的說明和默認值
4).修改yarn-site.xml:
<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.hadoop.mapred.ShuffleHandler</value></property> </configuration>常用配置項說明:
- yarn.nodemanager.aux-services通過該配置,用戶可以自定義一些服務
更多說明請參考yarn-default.xml,包含配置文件所有配置項的說明和默認值
5). 修改?hadoop-env.sh:
$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh修改 JAVA_HOME 如下:
這樣簡單的偽分布式模式就配置好了。
三、格式化HDFS文件系統
在使用hadoop前,必須格式化一個全新的HDFS安裝,通過創建存儲目錄和NameNode持久化數據結構的初始版本,格式化過程創建了一個空的文件系統。由于NameNode管理文件系統的元數據,而DataNode可以動態的加入或離開集群,因此這個格式化過程并不涉及DataNode。同理,用戶也無需關注文件系統的規模。集群中DataNode的數量決定著文件系統的規模。DataNode可以在文件系統格式化之后的很長一段時間內按需增加。
1.先切換到hadoop賬戶,按照提示輸入賬戶密碼
$ su hadoop2.格式化HDFS文件系統
$ hadoop namenode -format會輸出如下信息,則表格式化HDFS成功:
DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = [你的主機名]/127.0.0.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.4.1 ... ... INFO util.ExitUtil: Exiting with status 0 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at [你的主機名]/127.0.0.1 ************************************************************/四、Hadoop集群啟動
1.啟動hdfs守護進程,分別啟動NameNode和DataNode
$ hadoop-daemon.sh start namenode $ hadoop-daemon.sh start datanode或者一次啟動
$ start-dfs.sh輸出如下(可以看出分別啟動了namenode, datanode, secondarynamenode,因為我們沒有配置secondarynamenode,所以地址為0.0.0.0):
Starting namenodes on [] hadoop@localhost's password: localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-G470.out hadoop@localhost's password: localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-G470.out localhost: OpenJDK 64-Bit Server VM warning: You have loaded library /usr/local/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. localhost: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. Starting secondary namenodes [0.0.0.0] hadoop@0.0.0.0's password: 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-G470.out2.啟動yarn,使用如下命令啟ResourceManager和NodeManager:
$ yarn-daemon.sh start resourcemanager $ yarn-daemon.sh start nodemanager或者一次啟動:
$ start-yarn.sh3.檢查是否運行成功
打開瀏覽器
- 輸入:http://localhost:8088進入ResourceManager管理頁面
- 輸入:http://localhost:50070進入HDFS頁面
可能出現的問題及調試方法:
啟動偽分布后,如果活躍節點顯示為零,說明偽分布沒有真正的啟動。原因是有的時候數據結構出現問題會造成無法啟動datanode。如果使用hadoop namenode -format重新格式化仍然無法正常啟動,原因是/tmp中的文件沒有清除,則需要先清除/tmp/hadoop/*再執行格式化,即可解決hadoop datanode無法啟動的問題。具體步驟如下所示:
# 刪除hadoop:/tmp $ hadoop fs -rmr /tmp # 停止hadoop $ stop-all.sh # 刪除/tmp/hadoop* $ rm -rf /tmp/hadoop* # 格式化 $ hadoop namenode -format # 啟動hadoop $ start-all.sh六、測試驗證
測試驗證還是使用上一節的 WordCount。
不同的是,這次是偽分布模式,使用到了 hdfs,因此我們需要把文件拷貝到 hdfs 上去。
首先創建相關文件夾(要一步一步的創建):
$ hadoop dfs -mkdir /user $ hadoop dfs -mkdir /user/hadoop $ hadoop dfs -mkdir /user/hadoop/input1.創建輸入的數據,采用/etc/protocols文件作為測試
先將文件拷貝到 hdfs 上:
$ hadoop dfs -put /etc/protocols /user/hadoop/input2.執行Hadoop WordCount應用(詞頻統計)
# 如果存在上一次測試生成的output,由于hadoop的安全機制,直接運行可能會報錯,所以請手動刪除上一次生成的output文件夾 $ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar org.apache.hadoop.examples.WordCount input output執行過程截圖(部分):
3.查看生成的單詞統計數據
$ hadoop dfs -cat /user/hadoop/output/*七、關閉服務
輸入命令
$ hadoop-daemon.sh stop namenode $ hadoop-daemon.sh stop datanode $ yarn-daemon.sh stop resourcemanager $ yarn-daemon.sh stop nodemanager或者
$ stop-dfs.sh $ stop-yarn.sh最后一步:點擊屏幕上方的“實驗截圖”將上述命令執行后的截圖保存并分享給朋友們吧,這是你學習Hadoop安裝的證明。
八、小結
本實驗講解如何在單機模式下繼續部署Hadoop為偽分布模式。
九、思考題
偽分布模式和單機模式配置上的區別主要是哪些?是否可以推論出如何部署真實的分布式Hadoop環境?
轉載于:https://my.oschina.net/qiyong/blog/723884
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的大数据2 Hadoop伪分布模式配置部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt笔记】对象模型
- 下一篇: 一些常用的选择器