让我们看看 Hadoop 1.0 的缺点,Hadoop 2.0 通过添加 Yarn 解决了这些缺点。
- 可扩展性问题:即使您在 Hadoop 集群中有数千个节点,Job Tracker 也可以在单台机器上运行。Job tracker 的职责:资源管理、Job 和 Task 调度和监控。由于所有这些进程都在单个节点上运行,因此该模型不可扩展。
- 可用性问题(单点故障):Job Tracker 是单点故障。
- 资源利用:由于预定义的 Map & Reduce 任务槽数量,资源没有得到正确利用。当所有 Mapper 节点都忙时,Reducer 节点处于空闲状态,不能用于处理 Mapper 任务。
- 与 Map Reduce 框架的紧密集成:Hadoop 1.x 只能运行 Map reduce 作业。不存在对 Map Reduce 作业以外的作业的支持。
现在,Hadoop 2.x 中的YARN架构消除了单个 Job Tracker 瓶颈
YARN的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。这个想法是拥有一个全局ResourceManager (RM)和每个应用程序ApplicationMaster (AM)。应用程序可以是单个作业,也可以是作业的 DAG。
ResourceManager有两个主要组件:Scheduler和ApplicationsManager。
调度程序负责根据容量、队列等熟悉的限制为各种正在运行的应用程序分配资源。调度程序是纯粹的调度程序,因为它不执行任何监视或跟踪应用程序的状态。
ApplicationsManager负责接受作业提交,协商第一个容器以执行特定于应用程序ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.
每个应用程序的 ApplicationMaster 负责从调度程序协商适当的资源容器,跟踪它们的状态并监控进度。
现在YARN的优势
- 可扩展性问题已解决
- No single point of failure. All components are highly available
- Resource utilization has been improved with proper utilization of Map and reduce slots.
- Non Map Reduce Jobs can be submitted