Hadoop简介

一、Hadoop简介


Hadoop主要包括以下四个模块

1.Hadoop Common: 
为其他Hadoop模块提供基础设施 
2.Hadoop HDFS: 
一个高可靠、高吞吐量的分布式文件系统 
3.Hadoop MapReduce: 
一个分布式的离线并行计算框架 
4.Hadoop YARN: 

一个新的MapReduce框架,任务调度与资源管理



HDFS

HDFS即Hadoop Distributed File System分布式文件系统

HDFS服务功能

1.NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性 

(生成时间,副本数,文件权限),以及每个文件的块列表和块所在DataNode等。 
2.DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。 
3.Secondary NameNode 用来监控HDFS状态的辅助后台程序,每隔一段时间获 

取HDFS元数据的快照。


NameNode

Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名 
字空间(namespace)以及客户端对文件的访问。 
文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟 
文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则 
NameNode会成为系统的瓶颈。 
副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文 
件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延 
Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块 
状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了 
一个该Datanode上所有数据块的列表。

DataNode

一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据 
包括数据块的长度,块数据的校验和,以及时间戳 
DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的 
块信息。 
心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一 
台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不 
可用。 
集群运行中可以安全加入和退出一些机器

文件

文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本 
数可在文件生成时指定(默认3) 
NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副 
本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等 
DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。 

可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。



MapReduce计算框架

将计算过程分为两个阶段:Map和Reduce 
Map阶段并行处理输入数据 
Reduce阶段对Map结果进行汇总 
Shuffle链接Map和Reduce两个阶段 
Map Task将数据写到本地磁盘 
Reduce Task从每个Map Task上读取一份数据 
仅适合离线批处理 
具有很好的容错性和扩展性 
适合简单的批处理任务 
缺点明显 

启动开销大,过多使用磁盘导致效率低下等



YARN服务组件

◆ YARN 总体上仍然是Master/Slave 结构,在整个资源管理框架中,ResourceManager 为 
Master,NodeManager 为Slave。 
◆ ResourceManager 负责对各个NodeManager 上的资源进行统一管理和调度 
◆ 当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的。 
ApplicationMaster,它负责向ResourceManager 申请资源,并要求NodeManger 启动可以占 
用一定资源的任务。 
◆ 由于不同的ApplicationMaster 被分布到不同的节点上,因此它们之间不会相互影响

ResourceManager

◆ 全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。 
◆ 功能 
- 处理客户端请求 
- 启动/监控ApplicationMaster 
- 监控NodeManager 
- 资源分配与调度

NodeManager

◆ 整个集群有多个,负责单节点资源管理和使用 
◆ 功能 
- 单个节点上的资源管理和任务管理 
- 处理来自ResourceManager的命令 
- 处理来自ApplicationMaster的命令 
◆ NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资 
源。 
◆ 定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态

ApplicationManager

管理一个在YARN 内运行的应用程序的每个实例 
◆ 功能

  • 数据切分
  • 为应用程序申请资源,并进一步分配给内部任务
  • 任务监控与容错

◆ 负责协调来自ResourceManager的资源,幵通过NodeManager监视容器的执行和资源使用 
(CPU、内存等的资源分配)。

Container

◆ YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时, 
RM向AM返回的资源便是用Container表示的。 
◆ YARN 会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。 
◆ 功能

  • 对任务运行环境的抽象
  • 描述一系列信息
  • 任务启动命令
  • 任务运行环境
YARN资源管理

◆ 资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由 
ResourceManager完成,而资源隔离由各个NM实现。 
◆ ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“资源调度”)后, 
NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运 
行提供基础的保证,这就是所谓的资源隔离。 
◆ 当谈及到资源时,我们通常指内存,CPU和IO三种资源。Hadoop YARN同时支持内存和CPU 
两种资源的调度。 
◆ 内存资源的多少会会决定任务的生死,如果内存不够,任务可能会运行失败;相比之下,CPU资 
源则不同,它只会决定任务运行的快慢,不会对生死产生影响。



Hadoop 也是由诸多的子项目构成的,下面是组成Hadoop的核心项目: 
1. HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System) 
2. MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API 
3. HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级 Apache 项目) 
4. Hive:数据仓库工具,由Facebook贡献。 
5. Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。 
6. Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。 
7. Pig: 大数据分析平台,为用户提供多种接口。 
8. Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。 
9. Sqoop:于在HADOOP与传统的数据库间进行数据的传递。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值