首先看一张图:
- Common,是为Hadoop其他子项目提供的常用工具,主要包括FileSystem、RPC和串行化库。为廉价硬件上搭建云环境提供基本服务,并且会为该平台的软件开发提供所需API
- Avro:Avro是用于数据序列化和系统,提供了丰富的数据结构类型,快速可压缩二进制数据格式。
- MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。映射(Map)、化简(Reduce)的概念从函数式得来。(MapReduce程序将输入划分到不同的Map上,再将Map的结果合并到Reduce上,然后进行处理输出过程)
- HDFS:HDFS是一个分布式文件系统。HDFS具有高容错性,可以部署在低廉的硬件上。
HDFS设计目标:
- 检测和快速恢复硬件故障
- 流式的数据访问
- 简化一致性模型
- 通信协议
- Chukwa:Chukwa是开源的数据收集系统,用于监控和分析大型分布式系统的数据。
- Hive:是一个建立在Hadoop基础之上的数据仓库。支持类似于sql的查询语句。
- HBase:HBase是一个分布式的,列式存储的开源数据库。
- Pig:Pig是一个对大型数据集分析、评估的平台。Pig最突出的优势是它底层结构能够经受住高度并行化的检验。
MapReduce的数据流,简而言之,就是讲大数据集分解为成百上千个小数据集,每个(或若干个)数据集分别由集群的一个节点(一般是一普通计算机)进行处理并生成中间结果,然后这些中间结果又大由大量结果合并,形成最终结果。
ZooKeeper是一个为分布式应用所设计的开源协调服务,主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序所承担的协调任务。ZooKeeper的文件系统使用了目录树结构,使用Java编写,但是支持Java和C两种编程语言。
Hadoop
Hadoop角色定义
- 最基本的划分为Master和Slave
- 从HDFS来说,将主机化为NameNode和DataNode,管理目录相当于主任,而NameNode就是目录管理者
- MapReduce角度,将主机划分为JobTracker和TaskTracker,一个Job经常被划分为多个Task