大数据处理——Hadoop解析(一)

概述

这个时代被称之为大数据时代,各行各业生产的数据量呈现爆发性增长,并且基于这些爆发性增长的数据做深层次的数据挖掘、分析。因此,我们可以很容易的感觉到,在这样一个大数据的时代,我们很多做事情的方法正在发生了改变。例如,基于大数据分析可以做疾病预测控制;基于大数据分析可以做交通流量预测控制;基于大数据分析可以做大型系统故障诊断预测;基于大数据分析可以做客户消费推荐。可以说,大数据时代可以解决很多以前非常难以解决的问题。可以这样讲,在这样一个时代,大数据可以让我们的生活变得更加美好。

突如其来的大数据时代,对技术界产生了巨大冲击。其最大的问题是如何存储如此巨大的数据量?如何处理如此巨大的数据量。针对这个问题,在Google的商业化系统之上,诞生了开源大数据处理系统Hadoop。

2003年Google发表了第一篇关于云计算的核心技术文章GFS,当时,Apache的技术团队意识到,GFS这种架构可以很好的解决网页搜索引擎建立过程中产生的海量文件的难题。因此,参考了GFS的技术架构,完成了一套大数据文件系统,并将之开源。该文件系统后来演变成Hadoop的核心项目HDFS。2004年Google再次发表云计算核心技术文章Mapreduce,解决了大型分布式计算中的编程模型问题。随后,Mapreduce的思想被应用于Hadoop的前身项目,并且开源。2006年,雅虎将Hadoop项目从Nutch搜索引擎项目中独立,成为Apache的一个单独子项目。自此,Hadoop项目得以蓬勃发展。

截止到2013年10月,Hadoop 2.2.0版本已经成功发布。Facebook、阿里巴巴、百度和腾讯都采用Hadoop部署了大数据处理平台。下面对Hadoop项目中的关键系统进行剖析。

分布式文件系统

在大数据应用的背景下,文件存储有以下几个方面的特点:

1,海量数据存储。在大数据应用的环境里,无论是文件的数量还是数据存储规模都是十分巨大的。因此,如果采用传统存储的模式,需要构建十分庞大的系统,并且需要传统存储支持十分灵活的可扩展性。因为,在大数据时代,存储的可扩展性显得十分重要,数据量在不断增加,存储的规模也需要随时跟进,因此,存储的可扩展性是面向海量数据存储的必然选择。传统存储基本都是面向单机高性能、单机高容量。而大数据存储需要面向低成本可扩扩展性,来应对不断增加的海量存储需求。因此,传统存储在大数据环境中遇到了瓶颈,因为客户的需求发生了变化。

2,大文件存储。在大数据应用环境中,存储的文件基本以大文件为主。这是一个十分重要的应用特征。面向Primary Storage领域的传统存储在设计的时候,主要考虑小文件的读写优化,因此,传统存储在大数据应用环境中,显得很是浪费,主要专注的一面没有很好的被应用,而用户需求的一面没有被重视。

3,读多写少的文件存储。在大数据应用环境中,读请求比写请求要多的多。尤其在互联网领域,写请求不是很多,但是读请求的数量十分巨大,因此,在读多写少的应用需求下,如何优化存储设计是需要考虑的。

4,并发访问。在大数据应用环境下,应用客户端的数量是十分巨大的,因此,如何避免文件系统数据访问瓶颈点,增强多客户并发访问的能力是分布式文件系统设计需要考虑的重要问题。

为了满足这种需求,Google提出了GFS的分布式文件系统架构,Hadoop分布式文件系统采用了该架构。这种分布式文件系统的结构如下所示:

从结构来讲,这种分布式文件系统是比较简单的。其主要分成两大部分,第一部分是用来管理文件目录结构以及文件元数据的控制器,这个控制器被称之为 NameNode;第二部分是用来存储数据的DataNode。当客户端需要访问一个文件的时候,其首先需要访问NameNode获取文件信息以及数据分布特征。从NameNode获取这些信息之后,后期访问文件的数据过程就不会经过NameNode,客户端和DataNode进行直接通信。这种分布式文件系统的数据访问属于“带外模式”,因此,可以具有很高的并发行,不同的客户端可以访问不同的DataNode。

这种分布式文件系统的一个缺点在于处理小文件。因为每次文件访问操作都会访问NameNode。如果处理小文件,那么NameNode将会被经常访问,因此,NameNode将会成为整个系统的瓶颈。幸运的是,在大数据应用环境下,主要的处理的是大文件,因此,这种分布式文件系统架构可以满足大数据应用需求。

这种分布式文件系统具有很强的存储可扩展性。如果用户想要扩展存储容量,只需要增加一个DataNode就可以了,并且将这个DataNode加入到NameNode中进行管理。DataNode的扩展对于客户端而言是透明的。DataNode的扩展一方面会扩展存储容量,另一方面还可以扩展系统整体数据吞吐量。这种架构最大的问题在于拥有潜在瓶颈点NameNode,采用NameNode最大的好处是降低了设计实现的复杂度。

NameNode是整个系统的元数据服务器,因此,性能和单点故障成为NameNode设计过程中需要考虑的首要问题。为了提高性能,NameNode可以采用性能比较高的服务器,并且可以采用集群的方式提高元数据处理的性能。另外,为了避免单点故障,可以采用HA的方式增强NameNode的可靠性。为此,很多厂商提出了各种HA的解决方案,保证NameNode可以在最短的时间内Failover,提高整个系统的服务质量和可靠性。NameNode的设计优化是Hadoop分布式文件系统得以应用的重点。

数据可靠性也是Hadoop分布式文件系统需要考虑的问题。为了降低整个系统的成本,DataNode可以采用成本低廉的服务器搭建。在这些服务器中可以不采用传统存储中的RAID解决方案,这样可以尽最大可能的降低单点存储成本。在这种没有采用RAID的分布式文件存储系统中如何保证数据可靠性呢?Hadoop的思路和GFS是相同的,采用多份复制的策略保证数据可靠性。普通的文件采用3份复制的策略,重要的文件采用6份复制的策略。在写文件的时候,数据被写入一个DataNode,然后这个DataNode再将复制数据写入其他DataNode。多份复制的好处是实现简单,最为重要的是还可以将读写进行分离,并且可以并发读请求。多份复制的缺点也是显而易见的,大量的数据复制导致存储空间的利用率大为降低。为了提高数据存储空间利用率,在分布式存储系统中引入Erasure Code。Erasure Code可以实现类似传统RAID算法效果的数据冗余,但是,需要DataNode具有一定的数据计算能力,因此,该算法的引入会对整个系统的写性能造成一定影响。另外,由于Erasurce Code将数据拆分,采用数据冗余编码的方式达到增强数据可靠性的目的,因此,无法起到多份复制方法中读写分离、读并发的目的,难免对读性能也会造成一定影响。存储空间利用率和性能是互斥的,因此如何平衡这两方面的需求是设计需要考虑的。Facebook在Erasure Code方面做了很多工作,2013年发表了一篇针对Erasurce Code在大数据中应用的一篇文章《XORing Elephants: Novel Erasurce Codes for Big Data》。

Hadoop分布式文件系统是在大数据存储系统中一种常用的结构,参照这种结构,淘宝开发了TFS用于存储淘宝电商系统中的图片、视频文件,并且针对淘宝自身的特点进行了优化。其最大的优化包括:

1)简化NameNode文件目录结构。淘宝的存储文件没有必要采用复杂的目录树去管理,扁平的结构就可以满足要求,每个文件可以使用一个64位的ID来描述即可。

2)淘宝中的图片有大有小,对于这种小文件首先将其合并成一个大文件,最后进行大文件存储。这一个思路和Facebook的Haystack系统是类似的。

Hadoop分布式文件存储系统在大数据处理中起到了一个基石的作用,后面的分布式数据处理和分布式数据库都可以架构在Hadoop FS的基础之上。

<待续>

大数据处理——Hadoop解析(一)

时间: 2024-10-29 10:20:36

大数据处理——Hadoop解析(一)的相关文章

0基础搭建Hadoop大数据处理-编程

Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和要点总结. Hadoop是一个强大的并行框架,它允许任务在其分布式集群上并行处理.但是编写.调试Hadoop程序都有很大难度.正因为如此,Hadoop的开发者开发出了Hadoop Eclipse插件,它在Hadoop的开发环境中嵌入了Eclipse,从而实现了开发环境的图形化,降低了编程难度.在安装

Hadoop大数据处理读书笔记

几个关键性的概念 云计算:是指利用大量计算节点构成的可动态调整的虚拟化计算资源,通过并行化和分布式计算技术,实现业务质量可控的大数据处理的计算技术. NameNode:是HDFS系统中的管理者,它负责管理文件系统的命名空间,维护文件系统的文件树以及所有的文件和目录的元数据.这些信息存储在NameNode维护的两个本地磁盘文件:命名空间镜像文件和编辑日志文件.同时,NameNode中还保存了每个文件与数据块所在的DataNode的对应关系,这些信息被用于其他功能组件查找所需文件资源的数据服务器.

大数据处理仅有Hadoop是不够的

自从三大数据库厂商甲骨文.IBM和微软在2011年不约而同地宣布支持Hadoop后,在企业级市场上,Hadoop基本上也充当着大数据的代名词.时至今日,这种状况或许应该改变了. NoSQL日渐重要 由于Hadoop的高调,很少有人注意到,在宣布支持Hadoop的同一年,这三大关系型数据库厂商还分别宣布支持非关系型数据库NoSQL. 作为开源软件,NoSQL(Not only SQL,不仅仅是SQL)的诞生和发展也是为了满足Web 2.0特别是社交网络对于数据库“三高”的需求,即对数据库高并发的读

基础搭建Hadoop大数据处理-编程

Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和要点总结. Hadoop是一个强大的并行框架,它允许任务在其分布式集群上并行处理.但是编写.调试Hadoop程序都有很大难度.正因为如此,Hadoop的开发者开发出了Hadoop Eclipse插件,它在Hadoop的开发环境中嵌入了Eclipse,从而实现了开发环境的图形化,降低了编程难度.在安装

如何低成本、高效率搭建Hadoop/Spark大数据处理平台

原文链接 随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键. 为了让用户以最简便地方式享用阿里云全球资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,近日,阿里云在成都云栖大会上发布了一款Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,单实例提供最高56核CPU,224GB内存,168TB本地盘容量,5GB/S总吞吐,PPS达120万+.这对Hadoo

Hadoop大数据处理 电子书 PDF 下载 制作 定制 服务

作者简介 刘军,1994年至2003年,就读于北京邮电大学信息工程学院,获得博士学位.2003年至2007年,IBM中国研究院担任高级研究员及部门经理,研究方向为电信开放业务平台及IP融合网络管理.2007年至2012年,创办欢城(北京)科技有限公司,为中国网页游戏产业开创者之一,研发的产品曾多次获得互联网业界奖项.2012年至今,北邮任教,在宽带网络监控教研中心从事电信网络数据分析相关教学与研究工作. 本人背靠海量纸质图书,可以制作各种纸质书籍的电子化,有需要可以Q:1481449626Had

hadoop大数据处理平台与案例

大数据可以说是从搜索引擎诞生之处就有了,我们熟悉的搜索引擎,如百度搜索引擎.360搜索引擎等可以说是大数据技处理技术的最早的也是比较基础的一种应用.大概在2015年大数据都还不是非常火爆,2015年可以说是大数据的一个分水岭.随着互联网技术的快速发展,大数据也随之迎来它的发展高峰期. 整个大数据处理技术的核心基础hadoop.mapreduce.nosql系统,而这三个系统是建立在谷歌提出的大表.分布式文件系统和分布式计算的三大技术构架上,以此来解决海量数据处理的问题.虽然说大数据处理技术最早兴

大数据技术原理与应用——大数据处理架构Hadoop

Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构. Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中. Hadoop的核心是分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce. Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力. Hadoop的特性 Hadoop是一个能够对大量数据进

安装关系型数据库MySQL 安装大数据处理框架Hadoop

安装关系型数据库MySQL 安装大数据处理框架Hadoop 简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中重要的事件.主要版本.主要厂商: 国内外Hadoop应用的典型案例. (1)Hadoop的介绍: Hadoop最早起源于Nutch,Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能.但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题.2003年.2004年谷歌发表的两篇论文为该问题提供了可行的解决方案,即