• 1 预备知识--Hadoop简介


    1 预备知识--Hadoop简介

    Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算
    框架为核心,为用户提供了一套底层透明的分布式基础设施
    Hadoop框架中最核心设计就是:HDFS和MapReduce。 HDFS提供了海量数据的存储,MapReduce提供了对数据的计算。
    Hadoop框架中最核心的设计就是: HDFS 和MapReduce
    --HDFS是Hadoop分布式文件系统,具有高容错性、高伸缩性,允许用户基于廉价硬件部署,构建分布式存储系统,为分布式计算存储提供了底层支持
    --MapReduce提供简单的API,允许用户在丌了解底层细节的情况下,开发分布式幵行程序,利用大规模集群资
    源,解决传统单机无法解决的大数据处理问题
    --设计思想起源于Google GFS、 MapReduce Paper
    Hadoop的优势
    弹性可扩展
    --通过简单增加集群节点,线性扩展集群存储和计算资源
    容错高健壮
    --故障检测和自动回复,允许通用硬件失效而不影响整个集群可用性
    成本低廉
    --采用廉价通用硬件部署,无需高端设备
    简单易用
    --API简单,允许用户不了解底层情况下,写出高效的分布式计算程序

    Hadoop核心项目
    HDFS: Hadoop Distributed File System 分布式文件系统
    MapReduce:幵行计算框架

    文件切分
    eg,block size = 64MB
    文件由数据块集合组成
    假设每块大小为 64MB
    每个数据块在本地文件系统中是以单独的文件进行存储
    eg, 复制因子 = 3
    默认布局规则:
    第一份拷贝写入创建文件的节点 (快速写入)
    第二份拷贝写入同一个rack内的节点(减少跨rack的网络流量)
    第三份拷贝写入位于不同rack的节点(应对交换机故障)

    Hadoop1.0 架构解析之HDFS
    HDFS分布式文件系统:
      NameNode:
        维护整个文件系统的文件目录树,文件目录的元信息和文件数据块索引
        以FsImage和EditLog形式存储在本地
        整个系统的单点,存在SPOF
      SecondaryNameNode:
        又名CheckPoint Node,定期合幵FsImage和EditLog
        不接收客户端的请求,作为NameNode的冷备
      DataNode:
        实际存储数据的单元
        以Block为单位
        数据以普通文件形式保存在本地文件系统
      Client:
        与HDFS交互,进行读写、创建目录,创建文件、复制、删除等操作
        HDFS提供了多种客户端:命令行Shell,Java API,Thrift接口,C library,WebHDFS等

    HDFS容错机制
    故障类型:
      磁盘错误和故障
      DataNode故障 :数据块自动复制到剩余的节点以保证满足复制因子,namenode侦测datanode故障
      交换机/机架故障
      NameNode故障 :备用namenode,冷备
      数据中心故障

    HDFS水平扩展与再平衡
    添加datanode,namenode节点侦测到新的datanode加入集群内,数据块再均衡和在分发。

    Hadoop1.0 架构解析之MapReduce
    MapReduce分布式计算框架:
      JobTracker:
        负责集群资源监控和作业调度
        通过心跳监控所有TaskTracker的健康状况
        监控Job的运行情况、执行进度、资源使用,交由任务调度器负责资源分配
        任务调度器可插拔:FIFO Scheduler、 Capacity Scheduler、 FIFO Scheduler
      TaskTracker:
        具体执行Task的单元
        以slot为单位等量划分本节点的资源,分为Map Slot和Reduce Slot
        通过心跳周期性向JobTracker汇报本节点的资源使用情况和任务运行进度
        接收JobTracker的命令执行相应的操作(启动新任务、杀死任务等)
      Client:
        提交用户编写的程序到集群
        查看Job运行状态

    Hadoop2.0 架构
    Hadoop2.0 架构解析之HDFS 2.0
    HDFS 1.0的问题:
      --NameNode SPOF,NameNode挂掉整个集群不可用
      --内存受限,整个集群的size受限于NameNode的内存空间大小

    HDFS 2.0:
      --引入NameNode HA,Active/Standby NameNode,支持Auto-Failover
      --引入HDFS Federation,支持多个NameNode,每个NameNode只负责一部分目录,多个NameNode协作达到水平扩展

    NameNode HA
      Active NameNode对外提供服务,Standby NameNode同步Active NameNode的元数据,以待切换
      所有DataNode同时向两个NameNode汇报数据块信息
      元数据信息存储在共享存储中,可选
        --JournalNode(推荐):奇数个,基于Paxos协议
        --NFS
      支持auto failover和manual failover:
      --auto-failover:基于ZooKeeper,zkfc监测NameNode的健康状况,并向ZooKeeper注册。
      当NameNode挂掉时,进行锁竞争,获得锁的NameNode转换为Active NameNode
      --manual failover:手工切换,适用于NameNode升级

    HDFS Federation
      --使用多个独立的namespace,每个DataNode要向集群中所有的NameNode注册,
    且周期性地向所有NameNode发送心跳和块报告,并执行来自所有NameNode的命令
      --一个block pool由属于同一个namespace的数据块组成,每个datanode可能会存储集群中所有block pool的数据块
    优点:水平扩展,隔离

    Hadoop2.0 架构解析之YARN
    Yet Another Resource Negotiator
    核心思想:
      --将mrv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现
      --ResourceManager:负责整个集群的资源管理和调度
      --ApplicationMaster:负责应用程序相关的事务,比如任务调度,任务监控和容错
      --NodeManager:每个节点的资源和任务管理器,定期向RM汇报本节点的资源使用情况和Container运行情况,接收和处理AM的请求(如启动和杀死Container)
      --Container:资源划分的最小单位,动态的,由应用程序指定
    双层调度的思想,使得多种计算框架能够共享一个集群的资源
      --MapReduce on Yarn,Spark on Yarn,Storm on Yarn,HBase on Yarn(Hoya)
      --每个应用程序对应自己的ApplicationMaster

    Hadoop2.0 架构解析之MAPREDUCE
      --MapReduce原理和运行流程不MRv1一样,API保持向后兼容
      --不同的是,在2.0,mapreduce作为Hadoop Yarn的其中一种application
      --一些概念的变化
    mrv1         mrv2
    JobTracker        MRAppMaster
    TaskTracker       NodeManager
    Slot          Container

    Hadoop 1.0 vs 2.0

    1.0

    2.0

    只支持MapReduce一个Batch Processing计算框架

    支持MapReduceTezSparkStorm等多种计算框架,融合Batch ProcessingInterative ComputingRealtime Computing

    集群管理受JobTracker限制, 很难扩展

    引入了新的资源管理框架Yarn

    集群资源利用率低, 配置固定的Map/Reduce Slot数,不可复用

    Container化, 没有固定的Map/Reduce Slot, 可动态资源分配, 可复用

    JobTrackerTaskTracker

    RMNMmapreduce作为Yarn之上的一个app

    Hadoop 2.0 架构

     Hadoop 生态圈

    Common
    A set of components and interfaces for distributed filesystems and general I/O
    (serialization, Java RPC, persistent data structures).
    Avro
    A serialization system for efficient, cross-language RPC and persistent data storage.
    MapReduce
    A distributed data processing model and execution environment that runs on large clusters of commodity machines.
    HDFS
    A distributed filesystem that runs on large clusters of commodity machines.
    Pig
    A data flow language and execution environment for exploring very large datasets.
    Pig runs on HDFS and MapReduce clusters.
    Hive
    A distributed data warehouse. Hive manages data stored in HDFS and provides a
    query language based on SQL (and which is translated by the runtime engine to
    MapReduce jobs) for querying the data
    HBase
    A distributed, column-oriented database. HBase uses HDFS for its underlying
    storage, and supports both batch-style computations using MapReduce and point
    queries (random reads).
    ZooKeeper
    A distributed, highly available coordination service. ZooKeeper provides primitives
    such as distributed locks that can be used for building distributed applications.
    Sqoop
    A tool for efficient bulk transfer of data between structured data stores (such as
    relational databases) and HDFS.
    Oozie
    A service for running and scheduling workflows of Hadoop jobs (including MapReduce, Pig, Hive, and Sqoop jobs).

  • 相关阅读:
    WPF数据绑定机制是如何实现
    C#自定义特性的使用
    MVVMLight学习笔记(一)---MVVMLight概述
    C# Autofac学习笔记
    EFCodeFirst快速搭建入门
    SQL having与where用法区别
    EventWaitHandle 类
    C# EF 使用 (CodeFirst模式)
    wmi 远程启动程序
    Centos 7 的一些 基础知识
  • 原文地址:https://www.cnblogs.com/yhq1314/p/10769913.html
Copyright © 2020-2023  润新知