Hadoop基础知识

Hadoop起源

Google公司发表了两篇论文:一篇论文是“The Google File System”,介绍如何实现分布式地存储海量数据;另一篇论文是“Mapreduce:Simplified Data Processing on Large Clusters”,介绍如何对分布式大规模数据进行处理。Doug Cutting在这两篇论文的启发下,基于OSS(Open Source software)的思想实现了这两篇论文中的原理,从而Hadoop诞生了。

Hadoop是什么?

一种开源的适合大数据的分布式存储和处理的平台

应用场景

  1. 搜索引擎:这也正是Doug Cutting设计Hadoop的初衷,为了针对大规模的网页快速建立索引
  2. 大数据存储:利用Hadoop的分布式存储能力,例如数据备份、数据仓库等
  3. 大数据处理:利用Hadoop的分布式处理能力,例如数据挖掘、数据分析等
  4. 科学研究:Hadoop是一种分布式的开源框架,对于分布式系统有很大程度地参考价值

三种模式

  1. 单机模式
  2. 伪分布模式
  3. 全分布模式

三大模块

HDFS(Hadoop Distributed File System)

Hadoop的核心模块之一,主要解决Hadoop的大数据存储问题,思想来源于Google的文件系统GFS

主要特点
1 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份
2 运行在廉价的机器上
3 适合大数据的处理。HDFS默认会将文件分割成block,64M为1个block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,那内存的负担会很重

可靠性机理

  1. 冗余副本策略,即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置
  2. 机架策略,即HDFS的“机架感知”,一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率
  3. 心跳机制,即Namenode周期性从Datanode接受心跳信号和快报告,没有按时发送心跳的Datanode会被标记为宕机,不会再给任何I/O请求,若是Datanode失效造成副本数量下降,并且低于预先设置的阈值,Namenode会检测出这些数据块,并在合适的时机进行重新复制
  4. 安全模式,Namenode启动时会先经过一个“安全模式”阶段
  5. 校验和,客户端获取数据通过检查校验和,发现数据块是否损坏,从而确定是否要读取副本
  6. 回收站,删除文件,会先到回收站/trash,其里面文件可以快速恢复
  7. 元数据保护,映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本
  8. 快照,支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态

结构图示

《Hadoop基础知识》 372e56dc-340e-4332-89b1-624d447ec61c.jpg

NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;存储的是fsimage+edits
SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode;默认定时1小时一次
DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作
热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作
冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失
fsimage:元数据镜像文件(文件系统的目录树。)
edits:元数据的操作日志(针对文件系统做的修改操作记录)

存储图示

《Hadoop基础知识》 2a4bc794-2b9e-42fc-83ac-2c5ce4703d2f.jpg

Namenode

  1. 管理文件系统的命名空间
  2. 记录 每个文件数据快在各个Datanode上的位置和副本信息
  3. 协调客户端对文件的访问
  4. 记录命名空间内的改动或者空间本省属性的改动
  5. Namenode 使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等

从社会学来看,Namenode是HDFS里面的管理者,发挥者管理、协调、操控的作用

Datanode

  1. 负责所在物理节点的存储管理
  2. 一次写入,多次读取(不修改)
  3. 文件由数据库组成,一般情况下,数据块的大小为64MB
  4. 数据尽量散步到各个节点

从社会学来看,Datanode是HDFS的工作者,发挥按着Namenode的命令干活,并且把干活的进展和问题反馈到Namenode的作用

YARN(Yet Another Resource Negotiator)

一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,在集群的利用率、资源统一管理和数据共享等方面很优秀,基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离

工作图示

《Hadoop基础知识》 bbf32f90-2bfe-4dbb-97cb-48a8fb44def8.jpg

ResourceManager

整个集群只有一个,负责集群资源的统一管理和调度

  1. 处理客户端请求
  2. 启动/监控ApplicationMaster
  3. 监控NodeManager
  4. 资源分配与调度

NodeManager
整个集群有多个,负责单节点资源管理和使用

  1. 单个节点上的资源管理和任务管理
  2. 处理来自ResourceManager的命令
  3. 处理来自ApplicationMaster的命令

ApplicationMaster
每个应用只有一个,负责应用程序的管理

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

Container
对任务运行环境的抽象,描述一系列信息

  1. 任务运行资源(节点、内存、CPU)
  2. 任务启动命令
  3. 任务运行环境

MapReduce

一个“分而治之”的软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集

工作图示

《Hadoop基础知识》 2583043a-77fd-4c42-aa06-87a933d67ec6.jpg

客户端:用来提交MapReduce作业
jobtracker:用来协调作业的运行
tasktracker:用来处理作业划分后的任务
HDFS:用来在其它实体间共享作业文件

工作环节

  1. 作业的提交
  2. 作业的初始化
  3. 任务的分配
  4. 任务的执行
  5. 进程和状态的更新
  6. 作业的完成
    原文作者:Alfredonwr
    原文地址: https://www.jianshu.com/p/1290b69b7264
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞