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. UVa 10328 Coin Toss(Java大数+递推)

    https://vjudge.net/problem/UVA-10328 题意: 有H和T两个字符,现在要排成n位的字符串,求至少有k个字符连续的方案数. 思路:这道题目和ZOJ3747是差不多的,具 ...

  2. UVa 11889 最小公倍数

    https://vjudge.net/problem/UVA-11889 题意: 输入两个整数A和C,求最小的整数B使得lcm(A,B)=C. 思路: 首先C是A的公倍数,如果C%A不为0肯定是无解的 ...

  3. django urlencode

    from django.utils.http import urlquote a = urlquote('分享') print(a)

  4. 【Python】解决测试依赖之 Mock模块的基本使用

    什么是mock? Mock,顾名思义,模拟,在我们日常生活中或者影视作品中见得最多的可能就是预备飞行员的模拟训练,印象比较深的是电影<萨利机长>中的模拟器,经过几千次模拟,人们得出机长萨利 ...

  5. 递归--练习10--noi1696逆波兰表达式

    递归--练习10--noi1696逆波兰表达式 一.心得 递归大法好 二.题目 1696:逆波兰表达式 总时间限制:  1000ms 内存限制:  65536kB 描述 逆波兰表达式是一种把运算符前置 ...

  6. 将java打jar包成linux后台服务service

    将java打jar包成linux后台服务service 第一步:将java程序打成jar包 build.gradle配置文件中加spring-boot-gradle-plugin插件,具体配置如下(配 ...

  7. POJ 3087 Shuffle'm Up bfs

    题目链接:Shuffle'm Up 除了英文题有点恶心.发现模拟 + bfs 就可以过的时候,就是水了. 一个bug 就是filp函数得到string s12失败了.恩.据大腿告知,string 并不 ...

  8. npm设置仓库

    如果国外官方的npm仓库下载速度很慢的话,可以考虑更换npm仓库,加快下载包的速度. 1.通过config命令 npm config set registry https://registry.npm ...

  9. <NET CLR via c# 第4版>笔记 第10章 属性

    10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 属性可以只读或只写,而字段访问总是可读和可写的(一个例外是 readonly 字段仅在构造器中可写). 属性方法可能抛出异 ...

  10. secureCRT不能输入

    用secureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效. 解决: Session Options -> Connection -> Se ...