Hama介绍、安装以开发环境搭建(以备后用)

一、Hama介绍

Apache Hama是一个纯BSP(Bulk Synchronous Parallel)计算框架,模仿了Google的Pregel。用来处理大规模的科学计算,特别是矩阵和图计算。

BSP概念由Valiant(2010图灵奖获得者)在1990年提出,具体参看 wikipedia 。Google在2009年发表了<Pregel: A System for Large-Scale Graph Processing>论文,在分布式条件下实现了BSP模型。

二、Hama安装

安装环境:

OS: Ubuntu 

JAVA: jdk1.6

Hadoop: hadoop-1.0.3

安装Hama之前,应该首先确保系统中已经安装了hadoop,实验室集群使用的版本为hadoop-1.0.3

1、下载及解压Hama文件,下载地址:http://hama.apache.org/index.html,选用的是目前最新版本:hama0.6。解压之后的存放位置自己设定,本人将其解压至/home目录下,更名为hama。

2、修改配置文件

1)hama-site.xml内容如下,每台机器具有相同的配置:(因集群中并没有单独的zookeeper,就没有对其进行设定

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
<property> 
<name>bsp.master.address</name> 
<value>dm4: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://dm4:9000/</value> 
<description> 
The name of the default file system. Either the literal string 
"local" or a host:port for HDFS.不建议填写为“dm4:9000/”
</description> 
</property> 
<property> 
<name>hama.zookeeper.quorum</name> 
<value>dm4</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>

</configuration>

 

2)在hama-env.sh文件中加入JAVA_HOME变量,由于每台机器jdk的位置不同,各台机器要单独配置

3)配置groomservers文件。hama与hadoop具有相似的主从结构,该文件存放从节点的IP地址,每个IP占一行,集群以dm4为主节点,dm1和dm2节点宕机待启动,这里只将dm3、dm5、dm6和dm7这四台机器的IP地址填入文件中。由于部分机器外网可以访问,这里就不粘贴IP地址了,免得引起不必要的麻烦。

4)hama0.6自带的hadoop核心包为1.0.0,与集群hadoop1.0.3不一致,需要进行替换,具体是在hadoop的lib文件夹下找到hadoop-core-1.0.3.jar和hadoop-test-1.0.3.jar,拷贝到hama的lib目录下,并删除hadoop-core-1.0.0.jar和hadoop-test-1.0.0.jar两个文件,每台主机都要执行这一操作。

Hama启动

启动程序命令(启动之前需启动hadoop)

bin/start-bspd.sh

通过web UI 查看hama的相关情况:   http://***.***.***.***:40013/bspmaster.jsp (***.***.***.***代表主节点IP,即dm4的IP),运行结果如下:

实例

运行例子程序

这里我们选用Pagerank例子程序。

首先上传数据到HDFS,数据的格式为:

Site1  Site2  Site3
Site2  Site3
Site3

执行Hama,其中/tmp/input/input.txt和/tmp/pagerank-output分别为输入文件和输出文件夹。

root@dm4:/home/hama# bin/hama jar hama-examples-0.6.0.jar pagerank /user/root/testdata/pagelink /user/root/output/pagerank-output

执行结果如下:

三、开发环境搭建

使用eclipse搭建开发环境。

1、新建一个普通的java工程,将一下jar包添加至工程。

commons-configuration-1.7.jar ; commons-httpclient-3.0.1.jar ; commons-logging-1.1.1.jar; commons-lang-2.6.jar ; hadoop-core-1.0.3.jar ; hama-*.jar (core、examples、graph、ml); zookeeper-3.4.5.jar.

2、工程中新建一个文件夹,命名为conf,右键——build path——Use as Source Folder,将hama的配置文件拷贝至该文件夹中。

3、测试。新建一个类,内容如下:

    public static void main(String[] args) throws IOException,InterruptedException, ClassNotFoundException {
        PiEstimator.main(args);
    }

运行结果如下:

至此,利用hama进行BSP研究与开发的准备工作已经完成。

 (2013.6.9 补充:目前还没有针对远程调试的插件,可以在Hama源码上做修改,做单机debug ! 运行没问题的情况下再打包,放在分布式环境下运行 ! )

其他细节可参考资料1-5。

 

 

另:

可是使用Whirr将hama部署在EC2等其他云环境下。Whirr是apache基金会下的项目:一个运行云服务的库。有三个主要特点:

1、独立于所有的云环境的情况下运行服务。因此,并不需要担心各个服务提供商所具有的不同的服务风格。

2、一个常见的服务API。针对不同的服务提供不同的服务细节。

3、智能缺省服务。缺省的情况下,系统有较好的运行速度,同时,也允许根据用户需要自定义配置文件。

具体细节可以参考:http://whirr.apache.org/

 

 

 

 

参考资料:

1、http://wiki.apache.org/hama/CompatibilityTable

2、http://www.cnblogs.com/DingaGa/archive/2012/12/16/2820331.html

3、http://www.oriovo.com/cloud/hama-cluster.html

4、http://hama.apache.org/index.html

5、http://wiki.apache.org/hama/GettingStarted

 

转载请保留:http://www.cnblogs.com/Deron/archive/2013/03/12/2956285.html

posted on 2013-03-12 19:08  _Deron_  阅读(2715)  评论(0编辑  收藏  举报

导航