现在Hadoop已经发展成为包含多个子项目的集合。 虽然其核心内容是MapReduce和 Hadoop分布式文件系统(HDFS), 但Hadoop下的Common、Avro、Chukwa, Hive、HBase等子项目也是不可或缺的。 它们提供了互补性服务或在核心层上提供了更高层的服务。
l ) Core/Common :从Hadoop0.20版本开始,HadoopCore项目便更各为Common。
Common是为Hadoop其他子项目提供支持的常用工具,它主要包括FileSystem、RPC和串
行化库,它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该运平台上 的软件开发提供了所需的API。
2)Avro: Avro是用于数据序列化的系统。它提供了丰富的数据结构类型、快速可压缩
的工进制数据格式、存储持久性数据的文件集、远程调用RPC的功能和简单的动态语言集成
功能。其中,代码生成器既不需要读写文件数据,也不需要使用或实现RPC协议,它只是一个可选的对静态类型语言的实现。
Avro系统依赖于模式(Schema),Avro数据的读和写是在模式之下完成的。这样就可以减少写入数据的开销,提高序列化的速度并缩减其大小。同时,也可以方便动态脚本语言的使用,因为数据连同其模式都是自描述的。
在RPC中,Avro系统的客户端和服务端通过握手协议进行模式的交换。因此当客户端和服务端拥有彼此全部的模式时,不同模式下的相同命名字段、丢失字段和附加字段等信息的一致性问题就得到了很好的解决。
3)MapReduce : MapReduce是一种编程模型,用于大规模数据集(大于lTB)的并行运算。“映射”(map)、“化简”(reduce