Apache Hame是Google Pregel的开源实现,与Hadoop适合于分布式大数据处理不同,Hama主要用于分布式的矩阵、graph、网络算法的计算。
简单说,Hama是在HDFS上实现的BSP(Bulk Synchronous Parallel)计算框架,弥补Hadoop在计算能力上的不足。
关于bsp计算模型:
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=375451&tag=1
http://en.wikipedia.org/wiki/Bulk_synchronous_parallel
关于hama和bsp的架构和编程方法,参考hama文档:
http://hama.apache.org/hama_bsp_tutorial.html
北交的一篇硕士学位论文第二、第三章部分也介绍了hama的架构:
http://cdmd.cnki.com.cn/Article/CDMD-10004-1012355651.htm
http://hama.apache.org/downloads.html
下载0.6.0版的binary包,解压后得到hama-0.6.0目录,记作HAMA_HOME
Hama可以有三种工作模式:单机、分布式、伪分布式模式
hama的配置文件在HAMA_HOME/conf目录下,有:
hama-env.sh:该文件中包含了hama守护进程所用的环境变量,其中的JAVA_HOME环境变量是必须设置的,使其指向1.5以上版本的JDK的安装目录;
groomservers:该文件中列出了groomserver守护进程所在的节点,每个一行;
hama-default.xml:该文件包含了hama守护进程的默认设置,该文件无需更改;
hama-site.xml:该文件包含了特定hama守护进程和bsp job的设置,配置hama时,将需要的设置写在这里,可以覆盖hama-default.xml中的设置,该文件的一个官方的示例如下:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>bsp.master.address</name> <value>host1.mydomain.com: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://host1.mydomain.com: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>host1.mydomain.com,host2.mydomain.com</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>
执行HAMA_HOME/bin目录下的start-bsp.sh脚本。
学习的时候在伪分布模式下运行就可以了,上述的配置文件中的地址都用localhost代替,zookeeper配置项省略,先启动hdfs再启动hama.
通过http://localhost:40013可以查看hama的状态
1、伪分布用localhost如果不行的话,要看一下hadoop的配置文件,
fs.default.name这一项要和hadoop的配置一致。
2、注意hadoop的版本要和HAMA_HOME/lib中的hadoop-core jar包的版本一致,不然即使能正常启动hama,也可能会在运行hama作业时出错(如:老版本的hadoop可能缺少hama所需的一些类或者方法)
[引用请注明原文:http://blog.csdn.net/bhq2010/article/details/8510201]