用途:
数据挖掘、日志分析、商务智能、搜索引擎.....
官网介绍:
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。
它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。
库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
模块:
Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
Hadoop Ozone: An object store for Hadoop.
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN:作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。
Hadoop Ozone:Hadoop的对象存储。
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN:作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。
Hadoop Ozone:Hadoop的对象存储。
Hadoop HDFS(Hadoop Distributed File System):
Google GFS(不开源)->HDFS(开源)
Hadoop Yarn
作用:作业调度、集群资源管理/调度
特点:
1)扩展性
2)容错性
3)多框架资源统一调度
官方说明:
yarn运行原理
说明:
1)客户端将作业提交给Resource Manager
2)Node Manager将节点的情况汇报给Resource Manager
3)Application Master向Resource Manager申请资源
4)Container向Application Master汇报MapReduce作业的执行情况
The fundamental idea of YARN is to split up the functionalities of resource management and job scheduling/monitoring into separate daemons. The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job or a DAG of jobs.
The ResourceManager and the NodeManager form the data-computation framework. The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system. The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.
The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks.
YARN的基本思想是将资源管理和作业调度/监视的功能分解为单独的守护进程。
我们的想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。
应用程序可以是单个作业,也可以是作业的DAG。
ResourceManager和NodeManager构成了数据计算框架。
ResourceManager是在系统中的所有应用程序之间仲裁资源的最终权限。
NodeManager是每台机器框架代理,负责容器,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。
每个应用程序ApplicationMaster实际上是一个特定于框架的库,其任务是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。
YARN架构:
1)ResourceManager: RM
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度
处理客户端的请求: 提交一个作业、杀死一个作业
监控我们的NM,一旦某个NodeManager挂了,那么该NodeManager上运行的任务需要告诉我们的ApplicationMaster来如何进行处理
-
NodeManager: NM
整个集群中有多个,负责自己本身节点资源管理和使用
定时向RM汇报本节点的资源使用情况
接收并处理来自RM的各种命令:启动Container
处理来自AM的命令
单个节点的资源管理 -
ApplicationMaster: AM
每个应用程序对应一个:MR、Spark,负责应用程序的管理
为应用程序向RM申请资源(core、memory),分配给内部task
需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面 -
Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象 -
Client
提交作业
查询作业的运行进度
杀死作业
Mapreduce
特点:
1)扩展性
2)容错性
3)海量数据的离线处理
Map-Reduce 流程图
网友评论