• 初识Hadoop两大核心:HDFS和MapReduce


    一、Hadoop是什么

    Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出 得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。


    二、Hadoop的主要模块:

    Hadoop框架的主要模块包括如下:

    • Hadoop Common
    • Hadoop分布式文件系统(HDFS)
    • Hadoop YARN
    • Hadoop MapReduce

    虽然上述四个模块构成了Hadoop的核心,不过还有其他几个模块。这些模块包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它们进一步增强和扩展了Hadoop的功能。


    三、(Master/Slave)主从架构:

    Hadoop使用(Master/Slave)主从架构进行分布式储存和分布式计算。Master负责分配和管理任务,Slave负责实际执行任务。

    在分布式存储和分布式计算方面,Hadoop都是用从/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker组成。其中NameNode、Secondary NameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,Secondary NameNode可以属于某个从节点;在大型集群中,NameNode和JobTracker被分别部署在两台服务器上。
      
    数据存取 - HDFS架构:

    Master / Slave(主从结构) - 节点可以理解为物理机器

    • 主节点,只有一个: Namenode
    • 从节点,有很多个: Datanodes

    数据运算 - MapReduce架构:

    主从结构

    • 主节点,只有一个: JobTracker
    • 从节点,有很多个: TaskTrackers

    Hadoop集群示意图:

    Hadoop集群示意图


    四、HDFS与MapReduce的设计思路:

    HDFS:

    将文件进行切块处理,再通过文件信息服务器Namenode存放切块的文件信息存放地址,实际存放数据的服务器Datanode存放切块后的数据。

    系统默认:每个片块大小为64M,以保证寻址速度;数据会写入3个Datanode中,以保证更高的容错性。

    HDFS还设计了Secondary Namenode来更新Namenode,以避免日志文件过大。

    HDFS Client帮助Namenode对写入读取数据进行预处理,进行文件的分块与发送读取操作。Namenode负责为数据任务寻址。

    MapReduce:

    通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务。

    JobTracker分为把任务文件进行分解并派送到TaskTracker的程序JobinProgress和执行调度器的TaskScheduler。

    JobinProgress把作业分解成Map计算和Reduce计算并放置到TaskTracker服务器中。

    数据在Hadoop中的流程处理示意图:

    流程处理示意图


    五、HDFS与MapReduce组件介绍:

    HDFS:

    HDFS Client:进行文件的分块与文件的发送读取。

    Namespace image:记录每个文件的存在位置信息。

    Edit log:记录每个文件的位置移动信息。
      
      Namenode(Master):管理着每个文件中各个块所在的数据节点的位置信息。
      
      Secondary Namenode:更新并备份Namenode。
      
      Datanode(Slave):记录着服务器内所储存的数据块的列表。

    Secondary Namenode:更新并备份Namenode。

    MapReduce:

    JobClient:用于把用户的作业任务生成Job的运行包,并存放到HDFS中。

    JobinProgress:把Job运行包分解成MapTask和ReduceTask并存放于TaskTracker中。

    JobTracker(Master):进行调度管理TaskTracker执行任务。

    TaskTracker(Slave):执行分配下来的Map计算或Reduce计算任务。

  • 相关阅读:
    【运维】Linux基础(学习笔记)
    Git与Repo:开源开发的得力工具组合
    Linux安装Anaconda
    论文文献管理工具——Zotero
    【电力负荷预测】模拟退火算法结合狮群算法优化Elman神经网络电力负荷预测【含Matlab源码 1454期】
    CompletableFuture详解-初遇者-很细
    深入理解netty
    SpringBoot中使用JdbcTemplate访问Oracle数据库
    OpenHarmony鸿蒙南向开发案例:【智能门铃】
    计算机毕业设计之java+javaweb的超市库存管理系统
  • 原文地址:https://blog.csdn.net/web13170611647/article/details/126565277