Hadoop是Apache基金会的一个项目,目的是开发一个开源的软件,用于可靠的、可扩展的、分布式的计算。
Hadoop不是一个软件,而是一个软件库,hadoop作为一个软件库,提供了一个框架,可以以分布式的方式,在集群的多台主机间,使用简单的编程模型来处理大量的数据集。Hadoop被设计成可以从单主机扩展到数千台主机,并且支持本地计算和存储。
Hadoop本身被设计成可以在应用层面检测和处理底层的硬件故障,以实现高可用性,而不是由底层硬件来完成故障的检查和恢复。
Hadoop Common项目
-为Hadoop的其他项目提供一些常用工具,主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem。
Hadoop Distributed File System(HDFS)
Hadoop YARN
-作业调度和集群资源管理的一个框架。
Hadoop MapReduce
-基于YARN的一个系统,用于并行处理大量的数据集。
Hadoop演进的四大阶段:
阶段0:Ad HOC阶段
阶段1:Hadoop on Demand
阶段2:共享计算集群的黎明
阶段3:YARN的出现
-新的框架和相关实现尽量重用现有框架的代码、相似的操作模式,并为现有的MapReduce用户提供相同的接口【要求10】。
【要求】向后兼容,保持现有MapReduce应用程序的向后兼容。
对YARN的需求:
1.可扩展性:可以平滑的扩展至数万节点和并发的应用。
2.可维护性:保证集群软件的升级与用户应用程序完全解耦。
3.多租户:需要支持在同一集群中多个租户并存,同时支持多个租户间细颗粒度地共享单个节点。
4.位置感知:将计算移至数据所在位置。
5.高集群使用率:实现底层物理资源的高使用率。
6.安全和可审计的操作:继续以安全的、可审计的方式使用集群资源。
7.可靠性和可用性:具有高度可靠的用户交互、并支持高可用性
8.对编程模型多样化的支持:支持多样化的编程模型,并需要演进为不仅仅以MapReduce为中心。
9.灵活的资源模型:支持各个节点的动态资源配置以及灵活的资源模型。
10.向后兼容:保持现有的MapReduce应用程序的向后兼容性。