大数据特点:5V

IBM 提出大数据具有 5V 特点,分别为:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)

Volume:巨大的数据量,采集、存储计算的量都非常大。大数据的起始计量单位至少是 PB(1000TB)、EB(100万TB)或ZB(10亿TB)。

8 bit = 1 Byte 一字节
1024 B = 1 KB (KiloByte) 千字节
1024 KB = 1 MB (MegaByte) 兆字节
1024 MB = 1 GB (GigaByte) 吉字节
1024 GB = 1 TB (TeraByte) 太字节
1024 TB = 1 PB (PetaByte) 拍字节
1024 PB = 1 EB (ExaByte) 艾字节
1024 EB = 1 ZB (ZetaByte) 泽字节
1024 ZB = 1 YB (YottaByte) 尧字节
1024 YB = 1BB(Brontobyte)珀字节
1024 BB = 1 NB (NonaByte) 诺字节
1024 NB = 1 DB (DoggaByte)刀字节

Velocity:因为要保证数据的时效性,数据增长速度和处理速度必须要迅速。比如搜索引擎要求几分钟前的新闻都能够被用户查询到,个性化推荐算法尽可能要求实时完成推荐。这是大数据区别于传统数据挖掘的显著特征。

Variety:种类和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等,多类型的数据对数据的处理能力提出了更高的要求。

Value:数据价值密度相对较低。随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低。那么如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题。

Veracity:数据的准确性和可信赖度,即为数据的质量

Hadoop 简介

Hadoop 是 Apache 软件基金会 旗下的一个 开源分布式计算平台。以分布式文件系统 HDFS(Hadoop Distributed File System) 和 MapReduce(Google MapReduce 的开源实现) 为核心的 Hadoop,为用户提供了系统底层透明的分布式基础构架。

HDFS 的高容错性、高伸缩性、高性能等优点允许用户将 Hadoop 部署在廉价的硬件上,形成分布式系统,它负责数据的分布式存储和备份,文件写入后只能读取,不能修改;MapReduce 分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,包括 Map(映射)和 Reduce(规约)两个过程。

用户可以利用 Hadoop 轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算存储能力,完成海量数据的处理。

简而言之,Hadoop 是适合大数据的分布式存储计算的平台。狭义上来说,hadoop 就是单独指代 hadoop 这个软件;广义上来说,hadoop 指代大数据的一个生态圈,包括很多其他的软件。从上面的 Hadoop 介绍可以总结出 Hadoop 具有如下几个概念。

Hadoop 是一个框架。

Hadoop 适合处理大规模数据。

Hadoop 被部署在一个集群上。

Hadoop特点

1.高可靠性。数据存储不仅有多个备份,而且集群设置在不同机器上,可以防止一个节点宕机而造成的机器损坏。

2.高扩展性。Hadoop 是在可用的计算机集群间分配数据并完成计算任务。为集群添加新的节点并不复杂,所以集群可以很容易进行节点的扩展,扩大集群。

3.高效性。Hadoop 能够在节点之间动态地移动数据,在数据所在节点进行并发处理,并保证各个节点的动态平衡,因此处理速度非常快。

4.高容错性。Hadoop 的分布式文件系统 HDFS 在存储文件时会在多个节点或多台机器上存储文件的备份副本,当读取该文档出错或某一台机器宕机了,系统会调用其他节点上的备份文件,保存程序顺利运行。如果启动的任务失败,Hadoop 会重新运行该任务或启用其他任务来完成这个任务没有完成的部分。

5.低成本。Hadoop 是开源的,不需要支付任何费用即可下载安装使用,节省了购买软件的成本。此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

6.可构建在廉价机器上。Hadoop 对机器的配置要求不高,大部分普通商用服务器就可以满足要求。

Hadoop 核心

分布式文件系统——HDFS

1、HDFS 架构及简介

HDFS(Hadoop Distributed File System)是 Hadoop 项目的核心子项目,主要负责集群数据的存储与读取,HDFS 是一个主/从(Master/Slave) 体系结构的分布式文件系统。HDFS 支持传统的层次型文件组织结构,用户或者应用程序可以创建目录,然后将文件保存在这些目录中。文件系统名字空间的层次结构和大多数现有的文件系统类似,可以通过文件路径对文件执行创建、读取、更新和删除操作。但是由于分布式存储的性质,它又和传统的文件系统有明显的区别。HDFS 的基本架构如下图所示:

HDFS 文件系统主要包括一个 NameNode、一个 Secondary NameNode 和多个 DataNode,其中 NameNode、Secondary NameNode 运行在 Master 节点,DataNode 运行在 Slave 节点上。

1.元数据。元数据不是具体的文件内容,它有三类重要信息:第一类是文件和目录自身的属性信息,例如文件名、目录名、父目录信息、文件大小、创建时间和修改时间等;第二类记录文件内容存储的相关信息,例如文件分块情况、副本个数、每个副本所在的DataNode信息等;第三类用来记录HDFS中所有DataNode的信息,用于DataNode管理。

2.NameNode。NameNode 用于存储元数据以及处理客户端发出的请求。在 NameNode 中存放元数据的文件是 fsimage 文件。在系统运行期间,所有对元数据的操作都保存在内存中,并被持久化到另一个文件 edits 中。当 NameNode 启动的时候,fsimage 会被加载到内存,然后对内存里的数据执行 edits 所记录的操作,以确保内存所保留的数据处于最新的状态。

 3.Secondary NameNode。Secondary NameNode 用于备份 NameNode 的数据,周期性将 edits 文件合并到 fsimage 文件并在本地备份,将新的 fsimage 文件存储到 NameNode,取代原来的 fsimage,删除 edits 文件,创建一个新的 edits 继续存储文件修改状态。

4.DataNode。DataNode 是真正存储数据的地方。在 DataNode 中,文件以数据块的形式进行存储。当文件传到 HDFS 端时以 128MB 的数据块将文件进行切割,将每个数据块存到不同的或相同的 DataNode 并且备份副本,一般默认 3 个,NameNode 会负责记录文件的分块信息,确保在读取该文件时可以找到并整合所有块。

5.数据块。文件在上传到 HDFS 时根据系统默认文件块大小把文件分成一个个数据块,Hadoop 2.x 开始默认 128MB 为一个数据块,比如要存储大小为 129MB 的文件时,则被分成两个数据块来存储。数据块会被存储到各个节点,每个数据块都会备份副本。

2、HDFS分布式原理

分布式系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,实现最终的整体功能。利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。

那什么是分布式文件系统呢?分布式文件系统是分布式系统的一个子集,其解决的问题就是数据存储。也就是说,分布式文件系统是横跨在多台计算机上的存储系统,存储在分布式文件系统上的数据自动分布在不同的节点上。

而 HDFS 作为一个分布式文件系统,主要体现在以下三个方面。

HDFS 并不是单机文件系统,它是分布在多个集群节点上的文件系统。节点之间通过网络通信进行协作,提供多个节点的文件信息,让每个用户都可以看到文件系统的文件,让多机器上的多用户分享文件和存储空间。

文件存储时被分布在多个节点上,需注意数据存储不是以文件为单位进行存储的,而是将一个文件分成一个或多个数据块存储。而数据块在存储时并不是都存储在一个节点上,而是被分布存储在各个节点中,并且数据块会在其他节点存储副本。

数据从多个节点读取。读取一个文件时,从多个节点中找到该文件的数据块,分布读取所有数据块,直到最后一个数据块读取完毕。

3、HDFS特点

HDFS 的优点:

高容错性。HDFS上传的数据自动保存多个副本,可以通过增加副本的数据来增加它的容错性。如果某一个副本丢失,HDFS 会复制其他机器上的副本,而我们不必关注它的实现。

适合大数据的处理。HDFS 能够处理 GB、TB 甚至 PB 级别的数据,规模达百万,数量非常大。(1PB=1024TB、1TB=1014GB)

流式数据访问。HDFS 以流式数据访问模式来存储超大文件,一次写入,多次读取,即文件一旦写入,则不能修改,只能增加。这样可以保持数据的一致性。

除此之外,HDFS 有以下的缺点。

不适合低延迟数据访问。如果要处理一些用户要求时间比较短的低延迟应用请求,则 HDFS 不适合,因为 HDFS 是为了处理大型数据集分析任务而设计的,目的是为达到高的数据吞吐量,但这是以高延迟作为代价来换取的。

无法高效存储大量小文件。因为 NameNode 会把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由 NameNode 的内存大小来决定的,即每存入一个文件都会在 NameNode 中写入文件信息。如果写入大多小文件的话,NameNode 内存会被占满而无法写入文件信息。而与多个小文件大小相同的单一文件只会写入一次文件信息到内存中,所以更适合大文件存储

不支持多用户写入及任意修改文件。在 HDFS 的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前 HDFS 还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。

分布式计算框架——MapReduce

(1)MapReduce 简介

MapReduce 是 Hadoop 核心计算框架,适用于大规模数据集(大于1TB)并行运算的编程模型,包括 Map(映射)和 Reduce(规约) 两部分。

当启动一个 MapReduce 任务时,Map 端会读取 HDFS 上的数据,将数据映射成所需要的键值对类型并传到 Reduce 端。Reduce 端接收 Map 端传过来的键值对类型的数据,根据不同键进行分组,对每一组键相同的数据进行处理,得到新的键值对并输出到 HDFS,这就是 MapReduce 的核心思想。

(2)MapReduce工作原理

一个完整的 MapReduce 过程包含数据的输入与分片、Map 阶段数据处理、Reduce 阶段数据处理、数据输出等阶段

读取输入数据。MapReduce 过程中的数据是从 HDFS 分布式文件系统中读取的。文件在上传到 HDFS 时,一般按照 128MB 分成了几个数据块,所以在运行 MapReduce 程序时,每个数据块都会生成一个 Map,但是也可以通过重新设置文件分片大小调整 Map 的个数,在运行 MapReduce 时会根据所设置的分片大小对文件重新分割(Split),一个分片大小的数据块就会对应一个Map。

Map 阶段。程序有一个或多个 Map,由默认存储或分片个数决定。针对 Map 阶段,数据以键值对的形式读入,键的值一般为每行首字符与文件最初始位置的偏移量,即中间所隔字符个数,值为这一行的数据记录。根据需求对键值对进行处理,映射成新的键值对,将新的键值对传到 Reduce 端。

Shuffle/Sort 阶段:此阶段是指从 Map 输出开始,传送 Map 输出到 Reduce 作为输入的过程。该过程会将同一个 Map 中输出的键相同的数据先进行一步整合,减少传输的数据量,并且在整合后将数据按照键排序。

Reduce 阶段:Reduce 任务也可以有多个,按照 Map 阶段设置的数据分区确定,一个分区数据被一个 Reduce 处理。针对每一个 Reduce 任务,Reduce 会接收到不同 Map 任务传来的数据,并且每个 Map 传来的数据都是有序的。一个 Reduce 任务中的每一次处理都是针对所有键相同的数据,对数据进行规约,以新的键值对输出到 HDFS。

3、集群资源管理器——YARN

(1)YARN 简介

Hadoop 的 MapReduce 架构称为 YARN(Yet Another Resource Negotiator,另一种资源协调者),是效率更高的资源管理核心。

(2)YARN 的基本构架

YARN 主要包含三大模块:Resource Manager(RM)、Node Manager(NM)、Application Master(AM)。其中,Resource Manager 负责所有资源的监控、分配和管理;Application Master 负责每一个具体应用程序的调度和协调;Node Manager 负责每一个节点的维护。对于所有的 applications,RM 拥有绝对的控制权和对资源的分配权。而每个 AM 则会和 RM 协商资源,同时和 Node Manager 通信来执行和监控 task。

在 Client 客户端,用户会向 Resource Manager 请求执行运算(或执行任务)。

在 NameNode 会有 Resource Manager 统筹管理运算的请求。

在其他的 DataNode 会有 Node Manager 负责运行,以及监督每一个任务(task),并且向 Resource Manager 汇报状态。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐