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配置文件如下:

  1. <?xmlversion="1.0"?>
  2. <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>bsp.master.address</name>
  6. <value>LenovoE46a:40000</value>
  7. <description>The address of the bsp master server. Either the
  8. literal string "local" or a host:port for distributed mode
  9. </description>
  10. </property>
  11. <property>
  12. <name>fs.default.name</name>
  13. <value>LenovoE46a:9000/</value>
  14. <description>
  15. The name of the default file system. Either the literal string
  16. "local" or a host:port for HDFS.
  17. </description>
  18. </property>
  19. <property>
  20. <name>hama.zookeeper.quorum</name>
  21. <value>LenovoE46a</value>
  22. <description>Comma separated list of servers in the ZooKeeper Quorum.
  23. For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
  24. By default this is set to localhost for local and pseudo-distributed modes
  25. of operation. For a fully-distributed setup, this should be set to a full
  26. list of ZooKeeper quorum servers. If HAMA_MANAGES_ZK is set in hama-env.sh
  27. this is the list of servers which we will start/stop zookeeper on.
  28. </description>
  29. </property>
  30. <property>
  31. <name>hama.zookeeper.property.clientPort</name>
  32. <value>2181</value>
  33. </property>
  34. </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安装及示例运行的更多相关文章

  1. Flink快速入门--安装与示例运行

    flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行. 首先要想运行Flin ...

  2. Apache Hama安装部署

    安装Hama之前,应该首先确保系统中已经安装了hadoop,本集群使用的版本为hadoop-2.3.0 一.下载及解压Hama文件 下载地址:http://www.apache.org/dyn/clo ...

  3. S2X环境搭建与示例运行

    S2X环境搭建与示例运行 http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html 环境 Maven proje ...

  4. Appium(JAVA)Windows 7系统搭建及示例运行

    Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...

  5. .NET Core R2安装及示例教程

    .NET Core R2安装及示例教程 Install for Windows - Visual Studio 2015 1 Download Visual Studio 2015 Make sure ...

  6. 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...

  7. Windows下将nginx安装为服务运行

    今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...

  8. 关于SQL Server 安装程序在运行 Windows Installer 文件时遇到错误

    前几日安装sql server2008r2 的时候碰到这个问题: 出现以下错误: SQL Server 安装程序在运行 Windows Installer 文件时遇到错误. Windows Insta ...

  9. neo4j安装与示例

    Neo4j有两种访问模式:服务器模式和嵌入模式参考,下面主要讲windows下这两种模式的配置与访问示例 1 Windows下Neo4j服务器模式安装与示例 安装: 1.下载Neo4j,我下载的版本是 ...

随机推荐

  1. oracle 查看最大连接数与当前连接数

    select count(*) from v$process --当前的连接数 select value from v$parameter where name = 'processes' --数据库 ...

  2. 00_HTML入门第一天

    HTML入门 body标记的常见属性:bgcolor 设置背景颜色:text 设置文本颜色:link 设置链接颜色:vlink 设置已经访问了的链接颜色:alink 正在点击的链接颜色: meta是单 ...

  3. C# String StringBuilder 区别

    这篇博客,纯参考.主要为了自己也复习一遍,过一下其中的原理. string aTest = "abc";//分配固定的内存大小 aTest += "ddd"; ...

  4. Memcached原理与应用

    Memcached原理与应用 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.Memcached是什么 高性能 支持高并发 分布式内存缓存 ...

  5. javaScript补充

    一.字符串常用的方法 obj.length 长度 obj.trim() 移除前后空白 obj.trimLeft() 移除前空白 obj.trimRight() 移除后空白 obj.charAt(n) ...

  6. VUE脚手架搭建

    1.什么vue-cli    vue-cli是vue.js的脚手架,用于自动生成vue.js工程模板的. 步骤: 2.安装   ->全局安装   npm install vue-cli -g 或 ...

  7. Object Detection · RCNN论文解读

    转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列.2010年-2012年,Object D ...

  8. 使用guava变形数据结构

    在java日常开发中,经常需要使用各种数据结构,在涉及到数据结构之间如何优雅的转换时,我们可以借助google的guava提供的相关功能来优雅的实现.以下记录一些开发中经常需要使用数据结构的变形,以便 ...

  9. es随想二

    一.es运行状态的监控 es长时间批量入库时,需要对入库的性能进行监控,否则可能导致es重启,入库任务失败. 可以编写shell脚本,每分钟用cat命令监控pending的数量,数量逐渐增大时就需要注 ...

  10. bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]

    1598: [Usaco2008 Mar]牛跑步 题意:k短路 ~~貌似A*的题目除了x数码就是k短路~~ \[ f(x) = g(x) + h(x) \] \(g(x)\)为到达当前状态实际代价,\ ...