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计算框架

支持MapReduce、 Tez、 Spark、 Storm等多种计算框架,融合Batch Processing、 Interative Computing、 Realtime Computing

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

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

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

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

JobTracker、 TaskTracker

RM、 NM, mapreduce作为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).

1 预备知识--Hadoop简介的更多相关文章

  1. BBS - 预备知识

    一.中介模型 四个项目: 苑昊 博客(BBS) (7-8) CRM 1.权限组件 (3) 2.start组件 -- admin (5) 1.使用 2.源码 django 源码 (面向对象) 以源码为导 ...

  2. 《C++ Primer Plus》学习笔记 第1章 预备知识

    第一章 预备知识C++在C语言的基础上添加了对"面向对象编程"的支持和对"泛型编程"的支持.类 —— 面向对象模板 —— 泛型编程1.1 C++简介1.2 C+ ...

  3. WPF学习08:MVVM 预备知识之COMMAND

    WPF内建的COMMAND是GOF 提出的23种设计模式中,命令模式的实现. 本文是WPF学习07:MVVM 预备知识之数据绑定的后续,将说明实现COMMAND的三个重点:ICommand  Comm ...

  4. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  5. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  6. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...

  7. JAVA面向对象-----面向对象(基础预备知识汇总)

    终于整理好了面向对象基础预备知识,但是有点多,所以你们懂的,贴图,较长的代码我还是会排版出来的,我不想把时间浪费在排版上在word里排版一次已经很浪费时间了,所以请谅解. public class C ...

  8. Hadoop:Hadoop简介及环境配置

    http://blog.csdn.net/pipisorry/article/details/51243805 Hadoop简介 下次写上... 皮皮blog 配置hadoop环境可能出现的问题 每次 ...

  9. 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    上一部分预备知识在这 http://www.cnblogs.com/cgzl/p/9010978.html 如果您对ASP.NET Core很了解的话,可以不看本文, 本文基本都是官方文档的内容. A ...

随机推荐

  1. C++ 自定义错误类

    #include <iostream> #include <exception> using namespace std; struct MyException : publi ...

  2. jmeter 网速

    有人知道在jmeter 哪个里面哦 JMeterPlugins里面 network

  3. redis缓存穿透、缓存击穿、缓存雪崩

    缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透. 解决办法: 预校验 在控 ...

  4. python2和python3的区别——持续更新

    1.在 cookbook 上看到的,python3支持 *运算符 来接收迭代变量,如: a, *b = [, , , ] python2是不支持的! 2.在 cookbook 上看到的,python3 ...

  5. myeclipse10修改全局jsp编码格式为gbk

    myeclipse10修改全局jsp编码格式为gbk: window->prefenrence->general->content types->  展开:text->j ...

  6. spring boot与spring mvc的区别

    Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面 ...

  7. Lucene Scoring 评分机制

    原文出处:http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html Lucene 评分体系/机制(lucene scoring)是 ...

  8. android adapter的性能小结

    一般adapter的做法会重写getView方法 比如 @Override public View getView(int position, View convertView, ViewGroup ...

  9. eclipes常用快捷键

    Eclipes快捷键 alt + / 代码补全,自动提示 ctrl + o 显示类中的方法属性,再按一次ctrl + o,显示更多的变量 ctrl + d 删除当前行 ctrl + / 单行注释或者选 ...

  10. kmp算法中的next数组实例解释

    假设求串′ababaaababaa′的next数组 模式串 a b a b a a a b a b a a 下标 1 2 3 4 5 6 7 8 9 10 11 12 1.前两位:next数组前两位一 ...