Hadoop1-Hadoop简介

来源:互联网 发布:第三季度经济数据 编辑:程序博客网 时间:2024/06/12 15:18

简介

Hadoop的出现,解决了大树据的存储/计算两大难题,传统的大数据框架包括三大组件HDFS,HBase,MapReduce,分别对应Google的三篇论文(GFS,BigTable,MapReduce),是他们的开源实现。

随着Hadoop生态的发展,越来越多的框架出现,加入到Hadoop家族中,可以将他们划分成以下类别:

先介绍Hadoop基础组件

1. HDFS是Hadoop的分布式文件系统,通过向外界提供了一个非常简单的基于目录结构操作的文件系统API,向用户屏蔽了分布式存储的复杂的操作细节,这样用户就不用去写非常复杂的分布式存储的代码,只需要借助于HDFS的API即可开发分布式存储系统。

2. MapReduce是Hadoop的离线计算模型,用于大树据的分析,可以并发执行,用户只需要写一些简单的Map和Reduce逻辑,分布式执行的逻辑有框架负责。

3. Yarn框架的基本思想是将资源管理和任务调度/监控功能分为独立的守护进程(Daemon),拥有一个全局的RM以及每个应用程序一个AM,应用程序是单个job或者job的DAG。

ResourceManager和NodeManager组成数据计算框架。ResourceManager是在系统中的所有应用程序之间仲裁资源的最终权力。NodeManager是负责容器的每机器架构代理,监视其资源使用情况(cpu,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。

每个应用程序ApplicationMaster实际上是一个框架特定的库,任务是从ResourceManager协商资源,并与NodeManager一起执行和监视任务。


ResourceManager有两个主要组件:Scheduler和ApplicationsManager。

调度程序负责根据容量,队列等常见的约束,向各种运行的应用程序分配资源。调度程序是纯调度器,它不执行监视或跟踪应用程序的状态。此外,由于应用程序故障或硬件故障,它不能保证重新启动失败的任务。调度程序根据应用程序的资源需求执行其调度功能;它基于包含诸如内存,cpu,磁盘,网络等元素的资源容器的抽象概念。

调度程序具有可插拔策略,负责在各种不同的队列,应用程序等之间划分群集资源。目前的调度程序(如CapacityScheduler和FairScheduler)是插件的一些示例。

ApplicationsManager负责接受作业提交,协商第一个容器来执行应用程序特定的ApplicationMaster,并提供服务,以在失败时重新启动ApplicationMaster容器。每个应用程序ApplicationMaster有责任从调度程序协商适当的资源容器,跟踪其状态并监视进度。

hadoop-2.x中的MapReduce与以前的稳定版本(hadoop-1.x)保持API兼容性。这意味着所有MapReduce作业应该仍然在YARN之上运行不变,只需重新编译。

YARN还通过ReservationSystem支持资源预留的概念,该保留系统允许用户指定资源配置文件超时和时间限制(例如最后期限),并保留资源以确保重要工作的可预测执行。预留系统跟踪资源超时,执行预约的准入控制,并动态指示底层调度程序,以确保预留完全填满。




在介绍Hadoop生态系统中的其他组件及其作用和关系

1. 计算框架

实时计算

Flume(日志收集)->Kafka(消息队列)->Storm(SparkStreamming)

离线计算

HDFS->MapReduce

HDFS->Spark

HDFS->Hive


2. 数据存储

HDFS

HBase


3. 分布式一致性

Zookeeper


4. 分布式资源分配与任务调度

Yarn


参考文献:

Hadoop : https://hadoop.apache.org/

Hadoop Yarn:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html


原创粉丝点击