Hadoop的演进从Hadoop 1到Hadoop 3主要是为了提供更高的效率、更好的资源管理、更高的可靠性以及对更多数据处理方式的支持。下面是Hadoop 1, Hadoop 2, 和 Hadoop 3之间的主要区别和演进的原因:
Hadoop 1
特点:
主要包括两大核心组件:HDFS(Hadoop Distributed File System)和MapReduce。
Hadoop 1的资源管理和作业调度都由JobTracker完成,JobTracker同时负责资源管理和作业监控。
局限性:
单点故障:NameNode是HDFS的单点故障。如果NameNode宕机,整个系统将无法使用。
可扩展性:由于所有的资源管理和调度任务都由JobTracker管理,当集群规模增大时,JobTracker的性能成为瓶颈。
资源利用率:MapReduce作业中Map任务和Reduce任务不能独立扩展,导致资源利用率不高。
只支持MapReduce计算模型,不适用于其他类型的计算任务,如图处理、迭代计算等。
Hadoop 2
主要改进:
引入了YARN(Yet Another Resource Negotiator),将资源管理和作业调度的功能分开:
ResourceManager:负责系统的资源管理。
ApplicationMaster:每个应用程序(如一个MapReduce作业)有其自己的ApplicationMaster,负责该应用的资源协调和监控。
支持了NameNode的高可用性配置,可以通过配置活动和备用NameNode来防止单点故障。
优点:
更好的资源管理:允许更灵活的资源分配,提高资源利用率。
可扩展性:ResourceManager仅管理资源,而不负责作业调度,极大提高了系统的扩展性。
多框架支持:除了MapReduce,还可以支持其他计算框架,如Apache Spark、Apache Tez等。
Hadoop 3
主要改进:
支持更多的NameNode和更高的可扩展性,允许构建更大的集群。
增加了Erasure Coding(纠删码),提高了存储效率,降低了存储成本。
改进了YARN资源管理模型,增加了对Docker容器的支持。
优点:
更高的数据存储效率:通过Erasure Coding,相比Hadoop 2使用的三份数据复制,可以节省大量的存储空间。
更大的集群规模:支持更多的数据节点和更大的集群。
更强的资源管理:引入了更多的调度策略和容器化支持,使得资源管理更加灵活。
为什么这样演进
Hadoop的这些演进主要是为了解决早期版本中存在的问题,如资源管理效率低下、系统可扩展性差、对新类型计算模型支持不足等。随着数据处理需求的多样化和技术的发展,Hadoop不断演进以满足更高效、更可靠、更灵活的大数据处理需求。