Hadoop的概述和特点

Hadoop官网:https://hadoop.apache.org

一、hadoop概述

1、服务器(节点)
可以理解为我们的一台笔记本/台式机,在这里可以认为是我们的一台虚拟机
后面学习中,我们会把一台服务器称为一个节点

一个公司里,会有很多服务器。尤其是hadoop集群大到上千台服务器搭建成集群
2、机架
负责存放服务器的架子
3、什么是Hadoop?
Hadoop是一个适合海量数据的分布式存储(hdfs)和分布式计算(mr)的平台

Hadoop 在某种程度上将多台计算机组织成了一台计算机(做同一件事),
那么 HDFS 就相当于这台计算机的硬盘,而 MapReduce 就是这台计算机的 CPU 控制器

举例:购物平台:淘宝、京东
4、Hadoop的三大组件
hadoop是一个统称,目前hadoop主要包含三大组件

(1)hdfs:是一个分布式存储框架,适合海量数据存储
(2)mapreduce:是一个分布式计算框架,适合海量数据计算
(3)yarn:是一个资源调度平台,负责给计算框架分配计算资源

hadoop1.x系列是没有yarn的

hadoop2.x系列开始才有的yarn

5、hadoop版本介绍(了解一下)
目前,hadoop已经演变为大数据计算的代名词,形成了一套完善的大数据计算的生态系统,所以针对hadoop也出现了很多版本

Apache hadoop(需要我们手动搭建)
官方版本

Cloudera hadoop(CDH)
使用下载最多的版本,稳定,有商业支持(收费),在Apache的基础上打上了一些patch。推荐使用。

HortonWorks(HDP)
基于Apache的版本进行了集成,结合Ambari可以实现平台化快速安装部署
6、分布式存储(HDFS)
(1)具有主从架构
(2)去中心化架构----zookeeper

在主从架构中:
主节点:Namenode,负责存储元数据
从节点:Datanodes,负责存储数据本身

通常情况下,主节点有一个备用的Nameinode,防止单节点故障

HDFS集群由单个名称节点组成,主服务器管理文件系统名称空间并控制客户机对文件的访问。
此外,还有许多数据节点,通常是集群中每个节点一个,它们管理连接到运行它们的节点的存储

hadoop 处理图 hadoop cpu_hadoop

7、分布式存储的详细介绍
在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件(因为一个大文件可能被分为了很多个block块)

为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。
我们把这种组织形式称为命名空间(namespace)
命名空间由namenode管理
命名空间管理着整个服务器集群中的所有文件。

集群中不同的节点承担不同的职责。
负责命名空间职责的节点称为主节点,namenode放在master上面
负责存储真实数据职责的节点称为从节点,datanode放在node1、node2...上面
主节点负责管理文件系统的文件结构(说白了就是目录),从节点负责存储真实的数据,称为主从式结构(master-slaves)

用户操作时,应该先和主节点打交道,查询数据在哪些从节点上存储,然后再到从节点读取。
在主节点上,为了加快用户访问的速度,会把整个命名空间信息都放在内存中,当存储的文件越多时,那么主节点就需要越多的内存空间。

在从节点存储数据时,有的原始数据文件可能很大,有的可能很小,大小不一的文件不容易管理,那么可以抽象出一个独立的存储文件单位,称为块(block),一个block块是128M

数据存放在集群中,可能因为网络原因或者节点硬件原因造成访问失败,最好采用副本(replication)机制,把数据同时备份到多台节点中,这样数据就安全了,数据丢失或者访问失败的概率就小了。
8、hafs架构分析
(1)负责数据的分布式存储
(2)主从结构
	主节点,一般有2个:namenode
	从节点,有多个:datanode
(3)namenode负责
	接收用户操作请求,是用户操作的入口
	维护文件系统的目录结构,称作命名空间
(4)datanode负责
	存储数据
9、yarn架构分析
(1)资源的调度和管理平台
(2)主从结构
	主节点,一般有2个:ResourceManager
	从节点,有很多个: NodeManager
(3)ResourceManager负责
	集群资源的分配与调度
	MapReduce、Storm、Spark等应用,必须实现ApplicationMaster接口,才能被RM管理
(4)NodeManager负责
	单节点资源的管理(CPU+内存)
10、mapreduce架构分析
(1)依赖磁盘io的批处理计算模型(mapreduce基于磁盘,spark基于内存)
(2)主从结构
	主节点,只有一个: MRAppMaster
	从节点,就是具体的task
(3)MRAppMaster负责
	接收客户端提交的计算任务
	把计算任务分给NodeManager的Container中执行,即任务调度
	Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)
	Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster
	Container的运行是由ApplicationMaster向资源所在的NodeManager发起的监控Container中Task的执行情况
(4)Task负责:
	处理数据

二、Hadoop的特点(SEER)

(1)扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
(2)成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
(3)高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
(4)可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务