Hadoop的基本结构介绍(原创) 博客分类: hadoop Hadoop数据结构MapreduceHBase算法
Hadoop 的基本结构介绍(原创)
概述:
这是我看了 Hadoop core 0.17.0 文档只有做的一些总结,有不对的地方请给我指出。
什么是 Hadoop?
Hadoop 是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。 Hadoop 为应用程序透明的提供了一组稳定 / 可靠的接口和数据运动。在 Hadoop 中实现了 Google 的 MapReduce 算法,它能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。此外, Hadoop 还提供一个分布式文件系统用来在各个计算节点上存储数据,并提供了对数据读写的高吞吐率。由于应用了 map/reduce 和分布式文件系统使得 Hadoop 框架具有高容错性,它会自动处理失败节点。
Hadoop 的项目组成
Hadoop core 主要的子项目,提供分布是文件系统( HDFS )和支持 MapReduce 计算。
HBase 建立在 Hadoop Core 基础上的分布是数据库。
我只研究 Hadoop core 的功能和实现,不涉及 HBase
MapReduce 介绍
这是 Hadoop 的核心。
思想
1. 就是做一个计算,如果计算过程中如果数据传输消耗的资源大于计算消耗的资源,考虑在计算过程中,将算法(程序),移动到数据存放的服务器中,再进行计算。
2. 在做一个巨型计算时,利用多台(例如 2000 )台服务器的 cpu 和内存同时计算。
算法描述
第一种方式描述
将计算要用的数据切分,放在各个服务器上,然后将计算程序分发到各个服务器,计算出各个部分的结果。最后将各个计算结果合并。
第二种方式描述
另外一种描述为, MapReduce 的名字源于这个模型中的两项核心操作: Map 和 Reduce 。也许熟悉 Functional Programming (函数式编程)的人见到这两个词会倍感亲切。简单的说来, Map 是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对 [1, 2, 3, 4] 进行乘 2 的映射就变成了 [2, 4, 6, 8] 。 Reduce 是对一组数据进行归约,这个归约的规则由一个函数指定,比如对 [1, 2, 3, 4] 进行求和的归约得到结果是 10 ,而对它进行求积的归约结果是 24
我觉得意思是差不多的。
总的来说算法必须可以切分,包含小列步骤。
切分、分别计算、合并。
最典型的是大规模日志计算。
Hadoop 文件系统( HDFS )
因为 MapReduce 算法需要切分数据, HDFS 设计为将大文件分别部署到各个服务器。主要有下列特性:
1. 冗余存储,默认任何文件保留 3 个备份(考虑到部署在不同机架的情况),保证了服务器失效时,不丢失数据。即使一个机架全部断电,或者烧毁,数据依然健壮存在。
2. 大文件分块分散在各个服务器上存储。