flink hadoop 从0~1分布式计算与大数据项目实战(2) HADOOP 介绍

hadoop 是什么

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

什么是hdfs 

1.HDFS的概念
HDFS是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流式数据访问和处理超大文件的需求而开发的分布式文件系统。整个系统可以运行在由廉价的商用服务器组成的集群之上,它所具有的高容错性、高可靠性、高可扩展性、高可用性、高吞吐率等特征,为海量数据提供了不怕故障的存储,给超大数据集的应用处理带来了很多便利。2.HDFS产生的背景
数据量的不断增大导致数据在一个操作系统管辖的范围内存储不下,为了存储这些大规模数据,需要将数据分配到更多操作系统管理的磁盘中存储,但是这样处理会导致数据的管理和维护很不方便,所以迫切需要一种系统来管理和维护多台机器上的数据文件,这种系统就是分布式文件管理系统,而HDFS只是分布式文件管理系统中的一种。3.HDFS的设计理念
HDFS的设计理念来源于非常朴素的思想:即当数据文件的大小超过单台计算机的存储能力时,就有必要将数据文件切分并存储到由若干台计算机组成的集群中,这些计算机通过网络进行连接,
而HDFS作为一个抽象层架构在集群网络之上,对外提供统一的文件管理功能,对于用户来说感觉像在操作一台计算机一样,根本感受不到HDFS底层的多台计算机,而且HDFS还能够很好地容忍节点故障且不丢失任何数据。
下面来看一下HDFS的核心设计目标。
(1)支持超大文件存储
支持超大文件存储是HDFS最基本的功能。
这里的“超大文件”指大小达到TB(1TB=1024GB)、PB(1PB=1024TB)级别的文件。随着未来技术水平的发展,数据文件的规模还可以更大。
(2)流式数据访问
流式数据访问是HDFS选择的最高效的数据访问方式。
流式数据访问可以简单理解为:读取数据文件就像打开水龙头一样,可以不停地读取。因为HDFS上存储的数据集通常是由数据源生成或从数据源收集而来,接着会长时间在此数据集上进行各种分析,而且每次分析都会涉及该数据集的大部分甚至全部数据,所以每次读写的数据量都很大,因此对整个系统来说读取整个数据集所需要的时间要比读取第一条记录所需要的时间更重要,即HDFS更重视数据的吞吐量,而不是数据的访问时间。所以HDFS选择采用一次写入、多次读取的流式数据访问模式,而不是随机访问模式。
(3)简单的一致性模型
在HDFS中,一个文件一旦创建、写入、关闭,一般不需要再进行修改。这样就可以简单地保证数据的一致性。
(4)硬件故障的检测和快速应对
利用大量普通硬件构成的集群平台中,硬件出现故障是常见的问题。一般的HDFS系统是由数十台甚至成百上千台存储着数据文件的服务器组成,大量的服务器就意味着高故障率,但是HDFS在设计之初已经充分考虑到这些问题,认为硬件故障是常态而不是异常,所以如何进行故障的检测和快速自动恢复也是HDFS的重要设计目标之一。
总之,HDFS能够很好地运行在廉价的硬件集群之上,以流式数据访问模式来存储管理超大数据文件。这也是HDFS成为大数据领域使用最多的分布式存储系统的主要原因

hdfs 系统架构

hdfs 数据流图

hadoop 典型应用场景

数据仓库
数据挖掘于分析

什么是hadoop yarn

YARN是一个通用的资源管理系统。它是在Hadoop 1.0的基础上演化而来的。YARN充分吸取了Hadoop1.0的优点,同时又增加了很多新的特性,具有比Hadoop1.0更先进的设计理念和思想
Apache Hadoop另一种资源协调者(Yet Another Resource Negotiator, YARN)是一种新的Hadoop资源管理器,它是一个通用的资源管理系统,可为上层应用提供统一的资源管理和调度服务,它的引入为集群在资源利用、资源的统一管理调度和数据共享等方面带来了巨大的好处。
YARN产生的原因主要是为了解决原MapReduce框架的不足。最初MapReduce的开发者还可以周期性地在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的局限性,在原MapReduce框架上进行修改变得越来越困难,所以MapReduce的开发者决定从架构上重新设计MapReduce,使下一代的MapReduce框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率以及能支持除了MapReduce计算框架外更多的计算框架。

yarn的原理以及架构设计

1)YARN上运行的应用程序
运行在YARN上的应用程序主要分为两类:
● 短应用程序,是指一定时间内(可能是秒级、分钟级或小时级,尽管天级或更长的时间也存在,但非常少)可运行完成并正常退出的应用程序,比如MapReduce作业等。● 长应用程序,是指不出意外,永不终止运行的应用程序,通常是一些服务,比如Storm Service(主要包括Nimbus和Supervisor两类服务)、HBase Service(包括Hmaster和RegionServer两类服务)等,而它们本身作为一个框架提供了编程接口供用户使用。
(2)YARN的工作流程
尽管长、短两类应用程序的作用不同,短应用程序直接运行数据处理程序,长应用程序用于部署服务(服务之上再运行数据处理程序),但这二者运行在YARN上的流程是相同的 

yarn的数据流图

map reduce分布式计算介绍

MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理问题。2004年,Google发表了一篇关于分布式计算框架MapReduce的论文,重点介绍了MapReduce的基本原理和设计思想。同年,开源项目Lucene(搜索索引程序库)和Nutch(搜索引擎)的创始人Doug Cutting发现MapReduce正是其所需要的解决大规模Web数据处理的重要技术,因而模仿Google的MapReduce,基于Java设计开发了一个后来被称为Hadoop MapReduce的开源并行计算框架和系统。尽管Hadoop MapReduce还有很多局限性,但人们普遍认为,Hadoop MapReduce是目前为止最为成功、最易于使用的大数据并行处理技术。
简单地说,MapReduce是面向大数据并行处理的计算模型、框架和平台。具体包含以下3层含义。
1)MapReduce是一个并行程序的计算模型与方法。
MapReduce是一个编程模型,该模型主要用来解决海量数据的并行计算。它借助函数式编程和“分而治之”的设计思想,提供了一种简便的并行程序设计模型,该模型将大数据处理过程主要拆分为Map(映射)和Reduce(化简)两个模块,这样即使用户不了解分布式计算框架的内部运行机制,只要能够参照Map和Reduce的思想描述清楚要处理的问题,即编写map函数和reduce函数,就可以轻松地实现大数据的分布式计算。当然这只是简单的MapReduce编程。实际上,对于复杂的编程需求,只需要参照MapReduce提供的并行编程接口,也可以简单方便地完成大规模数据的编程和计算处理。
2)MapReduce是一个并行程序运行的软件框架。
MapReduce提供了一个庞大但设计精良的并行计算软件框架,它能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布式存储、数据通信、容错处理等并行计算涉及的很多系统底层的复杂细节问题都交由MapReduce软件框架统一处理,大大减少了软件开发人员的负担。
3)MapReduce是一个基于集群的高性能并行计算平台。
Hadoop中的MapReduce是一个易于使用的软件框架,基于此框架编写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠的方式并行处理TB或PB级别的数据集。2.MapReduce的基本设计思想
MapReduce面向大规模数据处理,其基本设计思想如下。
(1)分而治之
MapReduce对大数据并行处理采用“分而治之”的设计思想。如果一个大数据文件可以分为具有同样计算过程的多个数据块,并且这些数据块之间不存在数据依赖关系,那么提高处理速度最好的办法就是采用“分而治之”的策略对数据进行并行化计算。MapReduce就是采用这种“分而治之”的设计思想,对相互间不具有或有较少数据依赖关系的海量数据,用一定的数据划分方法对数据进行分片,然后将每个数据分片交由一个任务去处理,最后再汇总所有任务的处理结果。简单地说,MapReduce就是“任务的分解与结果的汇总”

mapreduce 架构图

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峡谷电光马仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值