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. POJ 2486 Apple Tree(树形dp)

    http://poj.org/problem?id=2486 题意: 有n个点,每个点有一个权值,从1出发,走k步,最多能获得多少权值.(每个点只能获得一次) 思路: 从1点开始,往下dfs,对于每个 ...

  2. python 判断列表字符串元素首尾字符是否相同

    def match_words(words): ctr = for word in words: and word[] == word[-]: ctr += return ctr print(matc ...

  3. Java中HashMap 初始化时容量(参数)如何设置合适?

    问题引入 注:本文代码源自java 9. 阿里的插件对于初始化HashMap时,调用无参构造方法,提示如下: 那么问题来了,如果已知需要向 map 中 put n次,那么需要设定初始容量为多少? 单纯 ...

  4. hdu4280网络流之dinic

    这题就是个模板题,不过我是第一次写dinic,好久没用链式前向星又不会了... 时间:9126ms #include<map> #include<set> #include&l ...

  5. 将 Spring boot 项目打成可执行Jar包,及相关注意事项(main-class、缺少 xsd、重复打包依赖)

    最近在看 spring boot 的东西,觉得很方便,很好用.对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了. 但是,转念 ...

  6. 【hive】关于用户留存率的计算

    首先用户留存率一般是面向新增用户的概念,是指某一天注册后的几天还是否活跃,是以每天为单位进行计算的.一般收到的需求都是一个时间段内的新增用户的几天留存 (1)找到这个时间段内的新增用户(也可能含有地区 ...

  7. SGU 132. Another Chocolate Maniac 状压dp 难度:1

    132. Another Chocolate Maniac time limit per test: 0.25 sec. memory limit per test: 4096 KB Bob real ...

  8. 1月中旬值得一读的10本技术新书(机器学习、Java、大数据等)!

    1月中旬,阿里云云栖社区 联合 博文视点 为大家带来十本技术书籍(机器学习.Java.大数据等).以下为书籍详情,文末还有福利哦! 书籍名称:Oracle数据库问题解决方案和故障排除手册 内容简介 & ...

  9. 0基础小白怎么学好Java?

    自身零基础,我们应该先学好Java,小编给大家介绍一下Java的特性: Java语言是简单的 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.Java丢弃了C+ ...

  10. person小项目

    所用的IDE为idea,数据库用的是Navicat for MySQL. 好了,开始正题,今天要做person小项目,有以下几个步骤: Navicat for MySQL数据库的构建,以及如何建per ...