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. 将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。总结下。

    可以为Date原型添加如下的方法: Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth() ...

  2. 雷林鹏分享:Ruby 数组(Array)

    Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负 ...

  3. nyoj1273 河南省第九届省赛_"宣传墙"、状压DP+矩阵幂加速

    宣传墙 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 ALPHA 小镇风景美丽,道路整齐,干净,到此旅游的游客特别多.CBA 镇长准备在一条道路南 面 4*N 的墙上做 ...

  4. LINUX QQ

    查询龙井QQ http://www.longene.org/forum/viewtopic.php?f=6&t=4700

  5. 前端工程构建工具——Yeoman

    一.Yeoman 简介 通常在开发新项目时我们都需要配置工程环境,开发目录,需要下载一些库.框架文件(如 jQuery.Backbone 等),配置编译环境(Less.Sass.Coffeescrip ...

  6. java并发编程:线程安全管理类--原子操作类--AtomicBoolean

    1.类AtomicBoolean

  7. Bitdefender Total Security 2014 Free 6 Months & 12 month License Key

    German Only – Bitdefender Total Security 2014 Free 6 Months Serial License Keyhttp://www.bitdefender ...

  8. day02Java基础学习笔记

    自动类型转换:容量小的类型自动转换为容量大的数据类型.数据类型按容量大小排序为: byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型 1.各种进制的表现形式和特点 二 ...

  9. Java 复制一个文件到另外一个目录下

    因为项目部署在jboss上面,在上传一些图片的时候,把他上传到当前项目的下,比如:(这里是以Windows服务器为例的,当然linux也是一样的) D:\jboss-eap-6.4\domain\se ...

  10. SQL中注意数据类型对性能的影响

    在数据存储的时候有时我们不太注意字符编码对性能影响,但小问题往往造成很大的影响.在数据量小的时候感觉不出来,一旦上到百万级以上的时候就非常明显了 看下面两个SQL语句 ---SQL1 SELECT * ...