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).

猜你喜欢

转载自www.cnblogs.com/yhq1314/p/10769913.html