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 12.04 64
JAVA: jdk1.6.0_30
Hadoop: hadoop-1.0.4
安装Hama之前,应该首先确保系统中已经安装了hadoop,我这里选用的目前最新版本hadoop-1.0.4。
第一步:下载并解压文件
hama的下载地址:http://mirror.bit.edu.cn/apache/hama/0.6.0/ 我这里选用北京理工的apache镜像。
解压文件到安装目录。我喜欢把hadoop和hama都安装在用户目录下,这样整个系统都比较干净。
tar -xvzf hama-0.6.0.tar.gz
第二步:修改配置文件
进入$HAMA_HOME/conf文件夹。
修改hama-env.sh文件。加入JAVA_HOME变量。
修改hama-site.xml文件。我的hama-site.xml配置文件如下:
- <?xmlversion="1.0"?>
- <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
- <configuration>
- <property>
- <name>bsp.master.address</name>
- <value>LenovoE46a: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>LenovoE46a: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>LenovoE46a</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>
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>bsp.master.address</name>
<value>LenovoE46a: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>LenovoE46a: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>LenovoE46a</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 master地址。fs.default.name参数设置成hadoop里namenode的地址。hama.zookeeper.quorum和hama.zookeeper.property.clientPort两个参数和zookeeper有关,设置成为zookeeper的quorum server即可,单机伪分布式就是本机地址。
第三步:运行Hama
首先启动Hadoop,
% $HADOOP_HOME/bin/start-all.sh
再启动Hama
% $HAMA_HOME/bin/start-bspd.sh
查看所有的进程,检查是否启动成功。
jps

第四步:运行例子程序
这里我们选用Pagerank例子程序。
首先上传数据到HDFS,数据的格式为:
Site1\tSite2\tSite3
Site2\tSite3
Site3
执行Hama,其中/tmp/input/input.txt和/tmp/pagerank-output分别为输入文件和输出文件夹。
bin/hama jar ../hama-
0
.6.0-examples.jar pagerank /tmp/input/input.txt /tmp/pagerank-output

成功!
第四周周结
所做的事情:
1.在eclipse里实现了五个结点的单源最短路径算法
实现结果:
输入文件:
1 0|2|2,10,4,5,
2 10|1|3,1,4,2,
3 MAX|0|5,4,
4 5|1|5,2,3,9,2,3,
5 MAX|0|3,6,1,7,
最终迭代结果:
1 0|2|2,10,4,5,
2 8|2|3,1,4,2,
3 9|2|5,4,
4 5|2|5,2,3,9,2,3,
5 7|2|3,6,1,7,
第一次map之后输出的中间结果文件:
1 0|2|2,10,4,5,
1 0|2|2,10,4,5,
2 10|1|
2 MAX|0|3,1,4,2,
2 10|1|
2 MAX|0|3,1,4,2,
3 MAX|0|5,4,
3 MAX|0|5,4,
4 5|1|
4 MAX|0|5,2,3,9,2,3,
4 5|1|
4 MAX|0|5,2,3,9,2,3,
5 MAX|0|3,6,1,7,
5 MAX|0|3,6,1,7,
输出目录:mapred.local.dir因为没有配置,默认值:${hadoop.tmp.dir}/mapred/local
即datanode节点的/usr/local/hadoop/tmp,但是在reduce用完或者job停止之后被直接删除。
2.通过对mapreduce工作机制的理解,自己总结一些可以着手的优化方法:
(1)自定义combiner函数,在map任务的节点对输出先做一次合并,以减少传输到reducer的数据量。如在本例中,可以将上述map输出的中间结果中的<k,v>相同的对合并。或采取压缩数据
(2)InputFormat将数据先进行预处理,Split的数目决定了Map的数目
(3)自定义Partitioner函数,可以指定Reduce任务。默认采用的是hash(key)modR,分区比较平衡。
Hama安装及示例运行的更多相关文章
- Flink快速入门--安装与示例运行
flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行. 首先要想运行Flin ...
- Apache Hama安装部署
安装Hama之前,应该首先确保系统中已经安装了hadoop,本集群使用的版本为hadoop-2.3.0 一.下载及解压Hama文件 下载地址:http://www.apache.org/dyn/clo ...
- S2X环境搭建与示例运行
S2X环境搭建与示例运行 http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html 环境 Maven proje ...
- Appium(JAVA)Windows 7系统搭建及示例运行
Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...
- .NET Core R2安装及示例教程
.NET Core R2安装及示例教程 Install for Windows - Visual Studio 2015 1 Download Visual Studio 2015 Make sure ...
- 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录
目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...
- Windows下将nginx安装为服务运行
今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...
- 关于SQL Server 安装程序在运行 Windows Installer 文件时遇到错误
前几日安装sql server2008r2 的时候碰到这个问题: 出现以下错误: SQL Server 安装程序在运行 Windows Installer 文件时遇到错误. Windows Insta ...
- neo4j安装与示例
Neo4j有两种访问模式:服务器模式和嵌入模式参考,下面主要讲windows下这两种模式的配置与访问示例 1 Windows下Neo4j服务器模式安装与示例 安装: 1.下载Neo4j,我下载的版本是 ...
随机推荐
- Composer - windows下安装方法
在windows下安装的方法 方法一:使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer ...
- RESTClient
RESTClient是Mozilla Firefox一个用于测试http请求插件. 1.打开火狐扩展搜索RESTClient进行安装并重启浏览器. 2.重启后可以在Mozilla Firefox地址栏 ...
- linux下安装pip
1.pip下载安装 wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d ...
- 【django之orm小练习】
作业1 创建单表Book表,要求字段: 1 主键 nid 2 书名 title 3 价格 price 4 出版日期 pubDate 5 出版社 publisher(普通字符串字段) class Boo ...
- 使用document.execCommand复制内容至剪贴板
API https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand 兼容性 http://caniuse.com/#se ...
- JUnit5 技术前瞻
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6868495.html JUnit ...
- Java程序只运行一个实例[转]
如果希望你的Java程序只能存在一个实例,可以参考下面的用法. 原文链接:http://blog.csdn.net/yaerfeng/article/details/7264729 Java没有提供这 ...
- 夏令营讲课内容整理 Day 7.
Day7是夏令营的最后一天,这一天主要讲了骗分技巧和往年经典的一些NOIP试题以及比赛策略. 这天有个小插曲,上午的day7T3是一道和树有关的题,我是想破脑袋也想不出来,正解写不出来就写暴力吧,暴力 ...
- 浅谈JavaScript的事件(事件类型)
Web浏览器能够发生的事件有很多种类型,不同的事件类型有不同的事件信息.DOM3级的事件类型主要包括:UI事件,用户与页面上的元素交互时触发:焦点事件,元素获得或失去焦点触发:鼠标事件,用户通过鼠标在 ...
- python基础dict,集合,文件
字典是一种key:value的数据类型dict1{ 'stud1':'孙礼昭', 'stud2':'slz', 'stud3':'sunlizhao',}dict是无序的,key是唯一的 天生去重增 ...