大數據2 Hadoop僞分佈模式配置部署

Hadoop僞分佈模式配置部署

1、實驗環境說明

  • 注意:本實驗須要按照上一節單機模式部署後繼續進行操做

1. 環境登陸

無需密碼自動登陸,系統用戶名 shiyanlouhtml

2. 環境介紹

本實驗環境採用帶桌面的 Ubuntu Linux 環境,實驗中會用到桌面上的程序:前端

  • XfceTerminal:Linux 命令行終端,打開後會進入 Bash 環境,可使用 Linux 命令
  • Firefox:瀏覽器,能夠用在須要前端界面的課程裏,只須要打開環境裏寫的 HTML/JS 頁面便可
  • GVim:很是好用的編輯器,最簡單的用法能夠參考課程 Vim 編輯器

3. 環境使用

使用Vim編輯器輸入實驗所需的代碼,而後使用Xfce終端命令行環境進行編譯運行,查看運行結果,運行後能夠截圖並分享本身的實驗報告,實驗報告中的數據能夠真實有效證實您已經完成了實驗。node

實驗報告頁面能夠在「個人主頁」中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操做的時間,若是沒有操做,系統會記錄爲發呆時間)。這些都是您學習的真實性證實。linux

4. 參考文檔

本實驗參考下列文檔內容製做:apache

2、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>

經常使用配置項說明:vim

  • 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 以下:

圖片描述信息

這樣簡單的僞分佈式模式就配置好了。

3、格式化HDFS文件系統

在使用hadoop前,必須格式化一個全新的HDFS安裝,經過建立存儲目錄和NameNode持久化數據結構的初始版本,格式化過程建立了一個空的文件系統。因爲NameNode管理文件系統的元數據,而DataNode能夠動態的加入或離開集羣,所以這個格式化過程並不涉及DataNode。同理,用戶也無需關注文件系統的規模。集羣中DataNode的數量決定着文件系統的規模。DataNode能夠在文件系統格式化以後的很長一段時間內按需增長。

1.先切換到hadoop帳戶,按照提示輸入帳戶密碼

$ su hadoop

2.格式化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
************************************************************/

4、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.out

2.啓動yarn,使用以下命令啓ResourceManager和NodeManager:

$ yarn-daemon.sh start resourcemanager
$ yarn-daemon.sh start nodemanager

或者一次啓動:

$ start-yarn.sh

3.檢查是否運行成功

打開瀏覽器

  • 輸入: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

6、測試驗證

測試驗證仍是使用上一節的 WordCount。

不一樣的是,此次是僞分佈模式,使用到了 hdfs,所以咱們須要把文件拷貝到 hdfs 上去。

首先建立相關文件夾(要一步一步的建立):

$ hadoop dfs -mkdir /user
$ hadoop dfs -mkdir /user/hadoop
$ hadoop dfs -mkdir /user/hadoop/input

1.建立輸入的數據,採用/etc/protocols文件做爲測試

先將文件拷貝到 hdfs 上:

$ hadoop dfs -put /etc/protocols /user/hadoop/input

圖片描述信息

2.執行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/*

圖片描述信息

7、關閉服務

輸入命令

$ 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安裝的證實。

8、小結

本實驗講解如何在單機模式下繼續部署Hadoop爲僞分佈模式。

9、思考題

僞分佈模式和單機模式配置上的區別主要是哪些?是否能夠推論出如何部署真實的分佈式Hadoop環境?

相關文章
相關標籤/搜索