存档

文章标签 ‘hadoop’

From MapReduce To YARN

2013年11月5日 2 条评论

Google MapReduce

MapReduce是由Google提出的一种软件架构,用于大规模数据的并行计算。Map和Reduce这两个概念,是从函数式编程语言中借鉴过来的。正如Google MapReduce Paper中所描述,MapReduce是这样一个过程:输入是Key/Value对A,用户指定一个Map函数来处理A,得到一个中间结果Key/Value集合B,再由用户指定的Reduce函数来把B中相同Key的Value归并到一起,计算得到最终的结果集合C,这就是MapReduce的基本原理,可以简单的表达为:
map (k1, v1) -> list (k2, v2)
reduce (k2, list(v2)) -> list (v2)

MapReduce的原理本身比较简单,但开发一套完备、易用性好的MapReduce系统,不是一件容易的事。这里会涉及分布式系统的故障容错、负载均衡等一系列复杂的问题。下面就结合在Google MapReduce Paper所讲的MapReduce的执行流程,来介绍一下MapReduce系统的基本工作原理: 阅读全文…

分类: BigData, MapReduce, YARN 标签: , ,

HDFS datanode阅读手记

2013年1月28日 没有评论

1. Hign Level Module View

datanode modules

  • HttpServer: 提供http service, 展示内部状态信息
  • IPCServer: Rpc service framework, 模块间的交互都通过rpc来完成(Block数据传输除外)
  • DataXceiverServer: 数据传输server, 提供Block数据的读写修改等功能
  • BlockPoolManager: 提供管理BlockPool的相关API。其中,BlockOfferService为每个Namespace下每个BlockPool一个实例,提供BlockPool对它所对应的Namespace的操作的相关API, BlockServiceActor为指定Namespace中每个namenode一个实例,自已持有线程,定时向它所对应的namenode发heartbeat, blockreport, 并执行namenode通过heartbeat/blockreport response传回来的command
  • FsDataset: 封装了datanode所管理的所有的block相关数据,提供相关的API,其中FsVolume封装了对单块盘的相关的操作
  • 阅读全文…

分类: BigData, HDFS 标签: , ,

Hadoop, Hbase, Zookeeper安全实践

2012年12月31日 19 条评论

过去的一个月,一直在折腾Hadoop, Hbase, Zookeeper的安全,中间碰到各种坑,在这里做一个简单的总结,希望能够抛砖引玉,与感兴趣的朋友交流一些实践经验。说到安全,这里主要包括两个方面,一个是Authentication,一个是Authorization:

  • Authentication要做的事情,是认证用户的身份,即你说你是A用户, Authentication要确保你真的是A,而不是B;
  • Authorization要做的是权限控制,就是对A用户只能操作它自己有权限的实体(比如HDFS的文件,Hbase的表),对于他没有权限的他不能操作。

有了Authentication和Authorization,总体上算是比较安全了,基本上不会出现,像A用户误删了B用户的数据的事情。在Hbase/Hadoop/Zookeeper中,Authentication是通过Kerberos是实现的,Authorization有各自的实现,相比而言,Authentication的实现相对复杂一些,里面的坑也比较多,因此本篇文章的大部分篇幅会以Authentication为主。对Kerberos之前没了解的同学,可以看一下这篇文章:[Hadoop Kerberos安全机制介绍][1],里面介绍Kerberos认证原理的部分讲得比较清楚。下面就我在实践过程中遇到的一些坑做一个总结。

在实践开始之前,先安装好Kerberos服务器,kerberos的安装比较简单,也不是本文要讨论的内容,直接在google搜索,相关的tutorial应该比较多,照着一步步做下来一般都不会有问题,需要注意的就是区分OS发行版,比如Ubuntu和CentOS,会有一些细微的差别。 阅读全文…

Hadoop/Hbase配置集成Ganglia

2012年11月11日 3 条评论

Hadoop/Hbase是开源版的google Bigtable, GFS, MapReduce的实现,随着互联网的发展,大数据的处理显得越发重要,Hadoop/Hbase的用武之地也越发广泛。为了更好的使用Hadoop/Hbase系统,需要有一套完善的监控系统,来了解系统运行的实时状态,做到一切尽在掌握。Hadoop/Hbase有自己非常完善的metrics framework, 里面包种各种维度的系统指标的统计,另外,这套metrics framework设计的也非常不错,用户可以很方便地添加自定义的metrics。更为重要的一点是metrics的展示方式,目前它支持三种方式:一种是落地到本地文件,一种是report给Ganglia系统,另一种是通过JMX来展示。本文主要介绍怎么把Hadoop/Hbase的metrics report给Ganglia系统,通过浏览器来查看。

介绍后面的内容之前有必要先简单介绍一下Ganglia系统。Ganglia是一个开源的用于系统监控的系统,它由三部分组成:gmond, gmetad, webfrontend, 三部分是这样分工的:

  • gmond: 是一个守护进程,运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息
  • gmetad: 是一个守护进程,定期检查gmond,从那里拉取数据,并将他们的指标存储在RRD存储引擎中
  • webfrontend: 安装在有gmetad运行的机器上,以便读取RRD文件,用来做前台展示

简单总结它们三者的各自的功用,gmond收集数据各个node上的metrics数据,gmetad汇总gmond收集到的数据,webfrontend在前台展示gmetad汇总的数据。Ganglia缺省是对系统的一些metric进行监控,比如cpu/memory/net等。不过Hadoop/Hbase内部做了对Ganglia的支持,只需要简单的改配置就可以将Hadoop/Hbase的metrics也接入到ganglia系统中进行监控。 阅读全文…