1. 程式人生 > >Hama單機模式下的安裝

Hama單機模式下的安裝

作者:王連平


Hama是Apache公司對Google公司的Pregel模型的開源實現,實際上則是對經典的BSP模型的實現。Hama將BSP模型同Hadoop的HDFS結合,並且很好的使用了zookeeper來做分散式工作。它目前有三種執行引擎,即Hadoop的MapReduce引擎,BSP引擎和微軟的Dryad引擎。Hadoop的Mapreduce引擎用來矩陣計算,BSP引擎和Dryad引擎主要用來圖形計算。因此,在利用hama進行程式設計時,我們會實現不同的計算框架,例如實現bsp()函式(bsp模型),或者實現compute()的函式(類似於Pregel)等。總之,hama是一個集多種分散式處理模型優點為一體的計算框架,具有很多的優點。下面是我記錄的在單機分佈下進行的Hama安裝過程。

 一、 軟體環境

     作業系統:Ubuntu 10.04 LTS-Lucid Lynx

     java(jdk)版本:jdk1.8.0_40

     hadoop版本:hadoop-1.0.3

     hama版本:hama-0.6.4

  二、安裝步驟

   1.安裝好合適版本的jdk和hadoop,並且進行測試,保證他們能用。

   2. 下載hama安裝檔案,從http://hama.apache.org/downloads.html處下載合適的版本,我當時下的是0.6.4版本的。主要這裡有如下幾個檔案

        

其中帶src的為原始碼檔案,可以供我們學習,同時也可以根據自己的需求修改原始碼,然後再編譯;不帶的則為編譯好的hama,建議都下載下來,不過本文安裝的時候只是用後者。

   3. 在使用者主目錄下建立合適的安裝目錄檔案,我這裡是在~下建立了hama資料夾作為安裝目錄,即~/hama為安裝目錄。

   4. 將下載好的hama-0.6.4.tar.gz拷貝到~/hama中去,並用tar zvxf hama-0.6.4.tar.gz進行解壓。

   5. 進入hama-0.6.4中的conf資料夾,修改hama-env.sh檔案,在其中加入java的home路徑,即加入:   

                                                                          

  6. 修改 hama-site.xml檔案,這時hama配置的核心檔案,具體內容如下:

<configuration>
  <property>
    <name>bsp.master.address</name>
    <value>192.168.91.128:40000</value>
    <description>The address of the bsp master server. Either the
    literal string "local" or a host:port for distributed mode
    </description>
  </property>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://192.168.91.128:9000/</value>
    <description>
      The name of the default file system. Either the literal string
      "local" or a host:port for HDFS.
    </description>
  </property>
 <property>
 <name>hama.zookeeper.quorum</name>
<value>192.168.91.128</value>
<description>Comma separated list of servers in the ZooKeeper Quorum.
    For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
    By default this is set to localhost for local and pseudo-distributed modes
    of operation. For a fully-distributed setup, this should be set to a full
    list of ZooKeeper quorum servers. If HAMA_MANAGES_ZK is set in hama-env.sh
    this is the list of servers which we will start/stop zookeeper on.
    </description>
</property>
<property>
    <name>hama.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
</configuration>

      這裡簡單的解釋下,bsp.master.address即bsp中的BSPMaster的地址和埠。這裡因為是單機模式,所以ip地址為本機地址。fs.default.name這個值要特別注意,是hadoop中nameNode的地址和埠,因為hama要用到hadoop的hdfs分散式檔案系統。剩下的倆個是zookeeper的相關配置,因為是單機模式下配置,這裡簡單的配置為本機的ip地址,埠一般是固定的。

7.另外,在conf資料夾下還有一個groomservers檔案,這個在分散式環境下配置groomserver的地址,在單機模式下就不用配置了,裡面預設值為localhost。同時,你也可以在~/.bashrc中新增hama的環境變數,這樣每次啟動就不同轉到相應的目錄下去了。

8. 啟動hadoop,並驗證是否啟動成功。命令:HADOOP_HOME/bin/start-all.sh,如果啟動成功,如下:


  啟動hama,命令:HAMA_HOME/bin/start-bspd.sh,結果如下:


出現上述結果,則表明hama已經成功啟動。

9. 測試樣例程式,這裡我測試了最賤單PI程式,第一次我輸入錯誤了,卻帶來了驚喜,如下:

 

由於pi該小寫,寫成大寫,發現它提示了example中所有例項程式碼的名字。之後執行如下:


上圖可以看出執行成功!

至此,在單機模式下的hama配置已經完成。