Hadoop系列学习(一)

266 阅读2分钟

Hadoop概述

Hadoop是一个由apache基金会所开发的分布式系统基础架构,主要用来解决海量数据存储和计算问题。

Hadoop主要组成

本文主要说明hadoop2.x

HDFS架构

HDFS是一个分布式文件系统,用来存储海量的数据,包括:

    1. NameNode(nn) 用来存储文件的 元数据,如文件名、文件目录结构、文件属性等。
      (元数据:用来描述数据的数据,如数据的生成时间、大小、副本数、权限等)
    1. DataNode(dn)
      本地文件系统用来存储具体数据的数据块
    1. Secondary NameNode(2nn)
      用来监控HDFS状态的辅助后台程序,定期合并Fsimage和Edits并推送给nn,非热备。高可用时可以不开启
    1. Client(客户端)
      用来对上传HDFS的文件进行切分,将文件切分成一个一个block,进行上传。
      注:HDFS的block的大小主要取决于磁盘传输速度,设置太小,会增加寻址时间;设置太大,导致block传输太慢。

image.png

Yarn架构

Yarn是hadoop的资源管理器,用来协调资源,包括:

    1. ResourceManager(rm)
      整个集群资源(内存、cpu等)的老大,负责接收客户端的请求,启动监控am,进行资源的分配与调度。
      注:客户端可以有多个
    1. NodeManager(nm)
      单个节点服务器资源的老大,管理单个节点资源,处理rm和am的命令。
    1. ApplicationMaster(am)
      单个任务运行的老大,负责数据的切分,为应用程序申请资源并分配给内部的任务。
      注:集群可以运行多个am
    1. Container
      容器,封装了任务运行所需要的资源,如内存、cpu、磁盘、网络等,相当于虚拟出来的独立服务器,用来运行任务。同一个任务的Container可以跨集群。
      注:每个nm可以有多个Container
      image.png

MapReduce架构

MapReduce是一个分布式运算程序的编程框架,将计算过程分为两个阶段:Map和Reduce。
Map阶段并行处理输入数据;
Reduce阶段对Map的结果进行汇总。
一个完整的MapReduce程序在分布式运行时有三类实例进程:
MrAppMaster:负责整个程序的过程调度和状态协调;
MapTask:负责Map阶段的整个数据处理流程;
ReduceTask:负责Reduce阶段的整个数据处理流程。

image.png

后记

记录自己的学习,一起进步我们都有光明的未来。