zoukankan      html  css  js  c++  java
  • 大数据Hadoop相关基本概念

    大数据特征(5V)

    • Velocity(快速的数据流转)
    • Veracity(精准可信赖的大数据)
    • Variety(多样的数据类型)
    • Volume(海量的数据规模)
    • Value(数据价值密度相对较低)

    大数据架构

    大数据平台架构

    HDFS服务功能

    • NameNode
      NameNode是主节点,存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副文本、文件权限),以及每个文件的块列表和块所在DataNode等。

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

      • 一个数据块在DataNode中以文件的形式存储在磁盘上,包括两个文件。一个是数据本身,另一个是元数据(包括数据块的长度、块数据的校验和以及时间戳)。
      • DataNode启动后向NameNode注册,通过后周期性(1h)地向NameNode上报所有的块信息。
      • 心跳是每3s一次,心跳返回结果带有NameNode给该DataNode的命令。如复制块数据到另一台机器或者删除某个数据块。如果超过10min没有收到某个DataNode的心跳,则认为该节点不可用。
      • 集群运行中可以安全加入和退出一些机器。
    • Secondary NameNode
      Secondary NameNode是用来监控HDFS状态的辅助后台程序,它每隔一段时间获取HDFS元数据的快照(心跳机制)。

    • 文件

      • 文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认:3)。
      • NameNode是主节点,存储文件的元数据。如文件名、文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等等。
      • 文件可以被创建、删除、移动或重命名,当文件被创建、写入或关闭之后不能修改文件内容。

    Hadoop YARN

    介绍

    Hadoop YARN框架

    1. YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave。
    2. ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。
    3. 当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster。它负责向ResourceManager申请资源,并要求NodeManager启动时可以占用一定资源的任务。
    4. 由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。
    • ResourceManager
      全局的资源管理器,整个集群中只有一个,负责集群资源的统一管理和调度分配。
      • 处理客户端请求
      • 启动/监控ApplicationMaster
      • 监控NodeManager
      • 资源分配与调度
    • ApplicationMaster
      管理一个在YARN内运行的应用程序的每个实例,负责协调来自ResourceManager的资源,开通NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。
      • 数据切分
      • 为应用程序申请资源,并分配给内部任务
      • 任务监控与容错
    • NodeManager
      整个集群中有多个NodeManager,负责单节点资源管理和使用。
      NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
      定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态。
      • 单个节点上的资源管理
      • 处理来自ResourceManager的命令
      • 处理来自ApplicationMaster的命令
    • Container
      YARN中的资源抽象,封装某个节点上的多维资源。如内存、CPU、磁盘、网络等。当ApplicationMaster向ResourceManager申请资源时,ResourceManager向ApplicationMaster返回的资源便是用Container表示的。
      YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
      • 对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

    总结

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

    MapReduce

    • 将计算过程分为两个阶段:Map和Reduce
      • Map阶段并行处理输入数据
      • Reduce阶段对Map结果进行汇总
    • Shuffle连接Map和Reduce两个阶段
      • Map Task将数据写到本地磁盘
      • Reduce Task从每个Map Task上读取一份数据
    • 仅适合离线批处理
      • 具有很好的容错性和扩展性
      • 适合简单的批处理任务
    • 缺点明显
      • 启动开销大,过多使用磁盘导致效率低下等
    初心回归,时光已逝!
  • 相关阅读:
    P2158 仪仗队
    P1582 倒水
    2019.7.22-7.27暑假集训总结
    python3 手动输入时上下键乱码(不支持翻看命令记录)
    Macbook 系统升级后,每次打开应用鼠标指针隐藏
    1分钟Ubuntu下搭建http web server apache2
    3分钟Ubuntu系统下配置静态IP和DHCP服务
    形容女生还在用beautiful,难怪没有女朋友
    insserv: warning: script 'S90dvc-core' missing LSB tags and overrides&dpkg: error processin
    Grammar Framework 1
  • 原文地址:https://www.cnblogs.com/yin1361866686/p/11713860.html
Copyright © 2011-2022 走看看