hadoop最终复习稿一.docx

上传人:b****0 文档编号:9465545 上传时间:2023-05-19 格式:DOCX 页数:30 大小:1.60MB
下载 相关 举报
hadoop最终复习稿一.docx_第1页
第1页 / 共30页
hadoop最终复习稿一.docx_第2页
第2页 / 共30页
hadoop最终复习稿一.docx_第3页
第3页 / 共30页
hadoop最终复习稿一.docx_第4页
第4页 / 共30页
hadoop最终复习稿一.docx_第5页
第5页 / 共30页
hadoop最终复习稿一.docx_第6页
第6页 / 共30页
hadoop最终复习稿一.docx_第7页
第7页 / 共30页
hadoop最终复习稿一.docx_第8页
第8页 / 共30页
hadoop最终复习稿一.docx_第9页
第9页 / 共30页
hadoop最终复习稿一.docx_第10页
第10页 / 共30页
hadoop最终复习稿一.docx_第11页
第11页 / 共30页
hadoop最终复习稿一.docx_第12页
第12页 / 共30页
hadoop最终复习稿一.docx_第13页
第13页 / 共30页
hadoop最终复习稿一.docx_第14页
第14页 / 共30页
hadoop最终复习稿一.docx_第15页
第15页 / 共30页
hadoop最终复习稿一.docx_第16页
第16页 / 共30页
hadoop最终复习稿一.docx_第17页
第17页 / 共30页
hadoop最终复习稿一.docx_第18页
第18页 / 共30页
hadoop最终复习稿一.docx_第19页
第19页 / 共30页
hadoop最终复习稿一.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

hadoop最终复习稿一.docx

《hadoop最终复习稿一.docx》由会员分享,可在线阅读,更多相关《hadoop最终复习稿一.docx(30页珍藏版)》请在冰点文库上搜索。

hadoop最终复习稿一.docx

hadoop最终复习稿一

1.Hdfs和Mapreduce核心

2.扩展存储Hbase,MDB

3.搭建平台的思路(平台堆栈)

4.分布式协调zookeeper

5.分布式概念,系统,框架(1道题)

6.cap理论

题型:

简答题(15道)

Java编程填空题(几分)

5、Hadoop是由哪几个组件组成

hadoop是一套处理大数据的生态系统,包括文件存储HDFS,计算框架

MapReduce调度框架Yarn,数据库Hbase,数据仓库Hive,协调与锁服务

zookeeper,关系型数据库与Hbase转换工具sqoop,工作流模块Oozie,机器学习模块mahout.数据流模块pig

方式一、 Hadoop 是什么?

 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构, 主要解决,海量数据的存储和海量数据的分析计算问题。

 广义上来说,HADOOP 通常是指一个更广泛的概念——HADOOP 生态圈。

方式二、Hadoop 的优势

1 .高可靠性:

 Hadoop 假设计算元素和存储会出现故障,它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。

2.高扩展性:

在集群间分配任务数据,可方便的扩展数以千计的节点。

3.高效性:

在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。

4.高容错性:

自动保存多份副本数据,并且能够自动将失败的任务重新分配。

方式三、 Hadoop的 组成

1.HadoopHDFS:

一个高可靠、高吞吐量的分布式文件系统。

2.HadoopMapReduce:

一个分布式的离线并行计算框架。

3.HadoopYARN:

作业调度与集群资源管理的框架。

4.HadoopCommon:

支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。

方式四、YARN 架构概述

1. ResourceManager(rm):

处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;

2. NodeManager(nm):

单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;

3.  ApplicationMaster:

数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。

4. Container:

对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

方式五、大数据技术生态体系

1. Sqoop:

sqoop 是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库(例如:

 MySQL,Oracle 等)中的数据导进到Hadoop 的 HDFS 中,也可以将 HDFS的数据导进到关系型数据库中。

2.Flume:

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

3.Kafka:

它 是一种高吞吐量的分布式发布订阅消息系统,它的特性在于:

(1)通过磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息存储也能够保持长时间的稳定性能。

(2)高吞吐量,即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息。

(3)支持通过 Kafka 服务器和消费机集群来分区消息。

支持Hadoop 并行数据加载。

4.Storm 为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。

这是管理队列及工作者集群的另一种方式。

 Storm 也可被用于“连续计算”(continuouscomputation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。

5.Spark 是当前最流行的开源大数据内存计算框架。

可以基于Hadoop 上存储的大数据进行计算。

6.Oozie 是一个管理Hdoop 作业(job)的工作流程调度管理系统。

Oozie 协调作业就是通过时间(频率)和有效数据触发当前的Oozie 工作流程。

7.HBase 是一个分布式的、面向列的开源数据库。

HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

8.Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。

其优点是学习成本低,可以通过类SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

9.R 语言:

R 是用于统计分析、绘图的语言和操作环境。

R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

10.ApacheMahout 是个可扩展的机器学习和数据挖掘库,当前Mahout 支持主要的4 个用例:

推荐挖掘:

搜集用户动作并以此给用户推荐可能喜欢的事物。

聚集:

收集文件并进行相关文件分组。

分类:

从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。

频繁项集挖掘:

将一组项分组,并识别哪些个别项会经常一起出现。

11.Zookeeper 是 Google 的 Chubby 一个开源的实现。

它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:

配置维护、名字服务、分布式同步、组服务等。

ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

什么是分布式系统?

分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。

也就是说分布式系统背后是由一系列的计算机组成的,但用户感知不到背后的逻辑,就像访问单个计算机一样。

一个标准的分布式系统应该具有以下几个主要特征:

分布性

分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

透明性

系统资源被所有计算机共享。

每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。

同一性

系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行地运行。

通信性

系统中任意两台计算机都可以通过通信来交换信息。

1,HDFS:

HDFS:

分布式文件系统,是Hadoop体系中数据存储管理的基础。

它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。

HDFS简化了文件的一致性模型,通过流式数据访问(1一次写入,多次读取。

文件一旦写入不能修改,只能追加。

2,它能保证数据的一致性。

),提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

 

将文件切分成指定大小的数据块并以多副本(默认:

128M)的存储在多个计算机上;

数据切分、多副本、容错等操作是对用户透明的。

特点:

扩展性&容错性&海量数量存储

HDFS缺点(不适用适用HDFS的场景):

 

1、低延时数据访问 

    1)比如毫秒级的来存储数据,这是不行的,它做不到。

    2)它适合高吞吐率的场景,就是在某一时间内写入大量的数据。

但是它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

2、小文件存储 

    1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。

这样是不可取的,因为NameNode的内存总是有限的。

    2)小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。

3、并发写入、文件随机修改

    1)一个文件只能有一个写,不允许多个线程同时写。

 

    2)仅支持数据append(追加),不支持文件的随机修改。

HDFS构架原则:

1.元数据与数据分离:

文件本身的属性(即元数据)与文件所持有的数据分离

2.主/从架构:

一个HDFS集群是由一个NameNode和一定数目的DataNode组成

3.一次写入多次读取:

HDFS中的文件在任何时间只能有一个Writer。

当文件被创建,接着写入数据,最后,一旦文件被关闭,就不能再修改

4.移动计算比移动数据更划算:

数据运算,越靠近数据(为了尽量减小全局带宽的消耗和读延时),执行运算的性能就越好,由于hdfs数据分布在不同机器上,要让网络的消耗最低,并提高系统的吞吐量,最佳方式是将运算的执行移到离它要处理的数据更近的地方,而不是移动数据

YARN的基本思想是将资源管理和作业调度/监控的功能分解为单独的守护进程(守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。

很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。

另一些只在需要的时候才启动,完成任务后就自动结束。

)。

这个想法是有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。

应用程序可以是单个作业,也可以是DAG作业。

1.ResourceManager,简称RM,ResourceManager是仲裁系统中所有应用程序之间资源的最终权威机构。

(大管理员)

整个集群同一时间提供服务的RM只有一个,它负责集群资源的统一管理和调度。

处理客户端的请求,例如:

提交作业或结束作业等。

监控集群中的NM,一旦某个NM挂了,那么就需要将该NM上运行的任务告诉AM来如何进行处理。

ResourceManager主要有两个组件:

Scheduler和ApplicationManager。

Scheduler是一个资源调度器,它主要负责协调集群中各个应用的资源分配,保障整个集群的运行效率。

Scheduler的角色是一个纯调度器,它只负责调度Containers,不会关心应用程序监控及其运行状态等信息。

同样,它也不能重启因应用失败或者硬件错误而运行失败的任务。

Scheduler是一个可插拔的插件,它可以调度集群中的各种队列、应用等。

在Hadoop的MapReduce框架中主要有两种Scheduler:

CapacityScheduler和FairScheduler。

参考:

另一个组件ApplicationManager主要负责接收job的提交请求,为应用分配第一个Container来运行ApplicationMaster,还有就是负责监控ApplicationMaster,在遇到失败时重启ApplicationMaster运行的Container。

2.NodeManager,简称NM,(执行者,小员工)

整个集群中会有多个NM,它主要负责自己本身节点的资源管理和使用,

定时向RM汇报本节点的资源使用情况。

接收并处理来自RM的各种命令,例如:

启动Container。

NM还需要处理来自AM的命令,例如:

AM会告诉NM需要启动多少个Container来跑task。

单个节点的资源管理

NodeManager进程运行在集群中的节点上,每个节点都会有自己的NodeManager。

NodeManager是一个slave服务:

它负责接收ResourceManager的资源分配请求,分配具体的Container给应用。

同时,它还负责监控并报告Container使用信息给ResourceManager。

通过和ResourceManager配合,NodeManager负责整个Hadoop集群中的资源分配工作。

ResourceManager是一个全局的进程,而NodeManager只是每个节点上的进程,管理这个节点上的资源分配和监控运行节点的健康状态。

下面是NodeManager的具体任务列表:

接收ResourceManager的请求,分配Container给应用的某个任务

和ResourceManager交换信息以确保整个集群平稳运行。

ResourceManager就是通过收集每个NodeManager的报告信息来追踪整个集群健康状态的,而NodeManager负责监控自身的健康状态。

管理每个Container的生命周期

管理每个节点上的日志

执行Yarn上面应用的一些额外的服务,比如MapReduce的shuffle过程

当一个节点启动时,它会向ResourceManager进行注册并告知ResourceManager自己有多少资源可用。

在运行期,通过NodeManager和ResourceManager协同工作,这些信息会不断被更新并保障整个集群发挥出最佳状态。

NodeManager只负责管理自身的Container,它并不知道运行在它上面应用的信息。

负责管理应用信息的组件是ApplicationMaster。

3.ApplicationMaster,简称AM,应用级别(小管理员)

每个应用程序都对应着一个AM。

例如:

MapReduce会对应一个、Spark会对应一个。

它主要负责应用程序的管理,

为应用程序向RM申请资源(Core、Memory),将资源分配给内部的task。

AM需要与NM通信,以此来启动或停止task。

遇到失败的任务还负责重启它。

4.Container,

封装了CPU、Memory等资源的一个容器

是一个任务运行环境的抽象。

Container是Yarn框架的计算单元,是具体执行应用task(如maptask、reducetask)的基本单位。

Container和集群节点的关系是:

一个节点会运行多个Container,但一个Container不会跨节点。

 

4,HIVE(数据仓库)

解决含量结构化日志,数据统计问题的,类似SQL语言。

离线分析,SQL语句利用HIVE引擎转化。

Hive--Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。

像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。

5,RConnectors

解决统计分析的

 

5,Mahout:

(数据挖掘算法库);

Mahout是一个机器学习和数据挖掘库,它提供的MapReduce包含很多实现,包括聚类算法、回归测试、统计建模。

通过使用ApacheHadoop库,可以将Mahout有效地扩展到云中。

7,Pig(数据流处理)

通过脚本的方式转成MapReduce提交到集群运算,离线分析;它是MapReduce编程的复杂性的抽象。

Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(PigLatin),其编译器将PigLatin翻译成MapReduce程序序列。

---------------------

Oozie工作流调度引擎

Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。

它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。

一层一层去审批,有一定的依赖关系,配置好,运行。

9,Zookeeper(分布式协作服务)

分布式的协调服务,管理框架,如解决单点故障切换问题;用于Hadoop的分布式协调服务。

Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群中,用于管理Hadoop集群

10,Flume(日志收集工具)

日志收集框架,应用场景:

日志的统计分析操作。

Flume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。

它基于一个简单而灵活的架构,并提供了数据流的流。

它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop中。

11,Sqoop(数据库ETL工具)

与传统数据库(关系型数据库)的数据传输与交换。

Sqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。

Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。

12,Hbase(实时分布式数据库):

链式的存储,结构化数据的可伸缩可扩展高性能面向链的数据库。

非常大,快速查询,秒级别查询上亿,可进行实时查询HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据,HBase使用Zookeeper进行管理。

---------------------

hadoop1.0MapReduce

1、首先用户程序(JobClient)提交了一个job,job的信息会发送到JobTracker,JobTracker是Map-reduce框架的中心,他需要与集群中的机器定时通信heartbeat,需要管理哪些程序应该跑在哪些机器上,需要管理所有job失败、重启等操作。

2、TaskTracker是Map-Reduce集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。

3、TaskTracker同时监视当前机器的tasks运行状况。

TaskTracker需要把这些信息通过heartbeat发送给JobTracker,JobTracker会搜集这些信息以给新提交的job分配运行在哪些机器上。

但是随着集群规模个工作负荷的增长,原框架的问题便暴露出来了。

1、JobTracker是Map-reduce的集中处理点,存在单点故障

2、JobTracker完成了太多的任务,造成了过多的资源消耗,当map-reducejob非常多的时候,会造成很大的内存开销,潜在来说,也增加了JobTrackerfail的风险,这也是业界普遍总结出老hadoop的Map-Reduce只能支持4000节点主机的上限。

3、在TaskTracker端,以map/reducetask的数目作为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度到了一块,很容易出现OOM

4、在TaskTracker端,把资源强制划分为maptaskslot和reducetaskslot如果当系统中只有maptask或者只有reducetask的时候,会造成资源的浪费,也就是前面提到过的集群资源利用的问题。

5、源代码非常难读,因为一个类做了太多的事情,而代码量过多,造成class的任务不清晰,增加bug的修复和版本维护的难读。

Yarn架构

ØResourceManager是基于应用程序对资源的需求进行调度的;每一个应用程序需要不同类型的资源因此就需要不同的容器。

资源包括:

内存、CPU、磁盘、网络等。

可以看出,这同现在MapReduce固定类型的资源使用模式有显著区别,它给集群的使用带来负面的影响,资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序,调度插件可以基于现有的能力调度和公平调度模型。

ØNodeManager是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况(CPU内存磁盘网络)并且向调度器汇报。

ØApplicationMaster的职责有:

向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控他们的进程,处理任务的失败原因。

新旧对比

1、客户端不变,其调用API及接口大部分保持兼容,这也是为了开发使用者透明化,对原码不必做大的改变,但是原框架的JobTracker和TaskTracker不见了,取而代之的是ResourceManagerAppliactionMasterNodeManager三个部分。

2、ResourceManager是一个中心的服务,它做的事情是调度、启动每一个Job所属的ApplicationMaster、另外监控ApplicationMaster的存在情况。

Job里面所在的task的监控,重启等内容不见了,这就是ApplicationMaster存在的原因。

ResourceManager负责作业与资源的调度,接收JobSubmitter提交的作业,按照作业的上下文(context)信息,以及从NodeManager收集来的状态信息,启动调度过程,分配一个Container作为ApplicationMaster

3、NodeManager功能比较专一,就是负责Container状态的维护,并向RM保持心跳。

4、ApplicationMaster负责一个Job生命周期内的所有工作,类似老的框架中JobTracker,但注意每一个Job(不是每一种)都有一个ApplicationMaster,他可以运行在ResourceManager以外的机器上.

在Hadoop2.0中,YARN负责管理MapReduce中的资源(内存,CPU等)并且将其打包成Container.这样可以精简MapReduce,使之专注于其擅长的数据处理任务,将无需考虑资源调度.YARN会管理集群中所有机器的可用计算资源.基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求,然后YARN会通过分配Container来给每个应用提供处理能力,Container是YARN中处理能力的基本单元,是对内存,CPU等的封装.

Hadoop运行分三种方式:

单机、伪集群、集群。

¨ Hadoop部署好后,默认就是单机模式。

只在有任务的时候才会启动Hadoop进程,并且只有一个进程,该进程将完成所有计算任务。

¨ 必须要修改配置文件才能启动伪集群和集群模式。

这两种模式将按正常方式启动所有进程,也是常用的方式。

如果要启动伪集群模式,只要把这些配置为本机回环地址(localhost)即可。

如果要启动集群模式,只要把这些配置为集群中对应的主机名即可。

Hadoop启动后会在各节点启动WEB-UI,管理员可以通过浏览器访问指定端口来查看集群或各节点的基本信息。

NameNode的默认监听端口是50070,DataNode的默认监听端口是50075,Yarn资源管理器的默认监听端口是8088。

“一个分布式系统是若干个独立的计算机的集合,但是对该系统的用户来说,系统就像一台计算机一样。

硬件方面:

各个计算机都是自治的

• 软件方面:

用户将整个系统看作是一台计算机。

分布式系统的特点

经济性:

高的性能/价格比

性能:

能产生单个大型主机不能达到的绝对性能

应用的固有的分布性,例如:

• CSCW

• 工作流

4、可靠性高

• 多工系统的容错能力

5、可扩充性强

• 系统演进能力(evolution)

 

 

HDFS主从结构体系

ØNameNode:

主控制服务器,负责维护文件系统的命名空间(Namespace)并协调客户端对文件的访问,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2