大数据导论(二)Hadoop简介。


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

Google(自称)为云计算概念的提出者,在自身多年的搜索引擎业务中构建了突破性的GFS(Google File System),从此文件系统进入分布式时代。除此之外,Google在GFS上如何快速分析和处理数据方面开创了MapReduce并行计算框架,让以往的高端服务器计算变为廉价的x86集群计算,也让许多互联网公司能够从IOE(IBM小型机、Oracle数据库以及EMC存储)中解脱出来,例如:淘宝早就开始了去IOE化的道路。然而,Google之所以伟大就在于独享技术不如共享技术,在2002-2004年间以三大论文的发布向世界推送了其云计算的核心组成部分GFS、MapReduce以及BigTable。

Google虽然没有将其核心技术开源,但是这三篇论文已经向开源社区的大牛们指明了方向,一位大牛:Doug Cutting使用Java语言对Google的云计算核心技术(主要是GFS和MapReduce)做了开源的实现。后来,Apache基金会整合Doug Cutting以及其他IT公司(如Facebook等)的贡献成果,开发并推出了Hadoop生态系统。

Hadoop是一个搭建在廉价PC上的分布式集群系统架构,它具有高可用性、高容错性和高可扩展性等优点。由于它提供了一个开放式的平台,用户可以在完全不了解底层实现细节的情形下,开发适合自身应用的分布式程序。

整体框架

Hadoop系统的设计思想是层次化的设计结构,和OSI等设计思想类似,即,同层次之间不交互,每层只知道自己的工作,处理来自下一层提供的数据、信息。

Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成。


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

HDFS是一个分布式文件系统。有着高容错性的特点,并且设计用来部署在低廉的硬件上,适合那些有着超大数据集的应用程序。它是Hadoop系统的基础。 Yarn是一种Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,主要思想是概念”Map(映射)”和”Reduce(归约)”。它也是Hadoop系统的重要组成部分。 Pig是一个基于Hadoop的大规模数据分析平台,Pig为复杂的海量数据并行计算提供了更高层次的抽象,从而有了一个更为简易的操作和编程接口。 Hive是基于Hadoop的一个工具,提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 Giraph是一个迭代的图计算系统。Giraph计算的输入是由点和直连的边组成的图。发源于Facebook,可以进行社交网络的计算等等。 Strom、Spark、Flink是实时的内存计算框架,在某些任务上的运算速度能够提高100倍。 HBase、Cassandra、MongoDB是开源的,基于列存储模型的分布式NoSQL数据库系统。能够处理更大规模的数据量、稀疏表等问题。但是正是因为是开源的问题,存在一系列问题。 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

下图是一个典型的Hadoop试验集群的部署结构。


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

Hadoop各组件之间是如何依赖共存的呢?下图为你展示:


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

Hadoop的核心设计


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

HDFS

HDFS是一个高度容错性的分布式文件系统,可以被广泛的部署于廉价的PC之上。它以流式访问模式访问应用程序的数据,这大大提高了整个系统的数据吞吐量,因而非常适合用于具有超大数据集的应用程序中。

HDFS的架构如下图所示。HDFS架构采用主从架构(master/slave)。一个典型的HDFS集群包含一个NameNode节点和多个DataNode节点。NameNode节点负责整个HDFS文件系统中的文件的元数据保管和管理,集群中通常只有一台机器上运行NameNode实例,DataNode节点保存文件中的数据,集群中的机器分别运行一个DataNode实例。在HDFS中,NameNode节点被称为名称节点,DataNode节点被称为数据节点。DataNode节点通过心跳机制与NameNode节点进行定时的通信。


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

NameNode

可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。

DataNode

是文件存储的基本单元。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。

Client

就是需要获取分布式文件系统文件的应用程序。

下面来看看在HDFS上如何进行文件的读/写操作:


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

文件写入:

Client向NameNode发起文件写入的请求 NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。 Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

文件读取:

Client向NameNode发起文件读取的请求 NameNode返回文件存储的DataNode的信息。 Client读取文件信息。

MapReduce

MapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成,不需要编程人员关心这些内容。

下图是一个MapReduce的处理过程:


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。

如果这样解释还是太抽象,可以通过下面一个具体的处理过程来理解:(WordCount实例)


大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介

Hadoop的核心是MapReduce,而MapReduce的核心又在于map和reduce函数。它们是交给用户实现的,这两个函数定义了任务本身。

map函数:接受一个键值对(key-value pair)(例如上图中的Splitting结果),产生一组中间键值对(例如上图中Mapping后的结果)。Map/Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。 reduce函数:接受一个键,以及相关的一组值(例如上图中Shuffling后的结果),将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)(例如上图中Reduce后的结果)

但是,Map/Reduce并不是万能的,适用于Map/Reduce计算有先提条件:

① 待处理的数据集可以分解成许多小的数据集;

② 而且每一个小数据集都可以完全并行地进行处理;

若不满足以上两条中的任意一条,则不适合使用Map/Reduce模式;

本文数据库(综合)相关术语:系统安全软件

分页:12
转载请注明
本文标题:大数据导论(二)Hadoop简介 数据库 数据库学习 Hadoop简介
本站链接:http://www.codesec.net/view/532755.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(27)