目录

大数据

数据类型

大数据技术的特点

Hadoop

Hadoop硬件架构

HDFS与常规文件系统

Hadoop核心服务

HDFS工作原理

名称节点服务器

数据节点服务器

辅助名称节点服务器

结论


大数据

顾名思义,大数据是使用传统数据处理应用程序在常规文件系统中存储、维护或访问的复杂且难以存储、维护或访问的海量数据。这组庞大的数据的来源是什么。

  1. 典型的大型证券交易所
  2. 手机
  3. 视频共享门户,如YouTube,Vimeo,Dailymotion等。
  4. 社交网络,如脸书、推特、LinkedIn等。
  5. 网络传感器
  6. 网页、文本和文档
  7. 网络日志
  8. 系统日志
  9. 搜索索引数据
  10. 闭路电视图像

数据类型

数据可以标识为以下三种类型:

  1. 结构化数据:以表格格式呈现并存储在RDMS(关系数据库管理系统)中的数据
  2. 半结构化数据:没有正式数据模型并以XML,JSON等形式存储的数据。
  3. 非结构化数据:没有预定义数据模型的数据,如视频、音频、图像、文本、网络日志、系统日志等。

大数据技术的特点

具有典型数据处理应用程序的常规文件系统面临以下挑战:

  1. 数量——来自不同来源的数据量很高,并且可能每天都在增加
  2. 速度——单个处理器、有限的RAM和有限的基于存储的系统不足以处理如此大量的数据
  3. 多样性——来自不同来源的数据各不相同

因此,大数据技术应运而生:

  • 它有助于以成本和时间有效的方式存储,管理和处理大量和多样化的数据。
  • 它以本机形式分析数据,可以是非结构化、结构化或流式处理。
  • 它从实时事件中实时捕获数据。
  • 它具有定义非常明确且强大的系统故障机制,可提供高可用性。它处理系统正常运行时间和停机时间:
  • 使用商用硬件进行数据存储和分析
  • 跨集群维护相同数据的多个副本
  • 它将数据存储在不同机器的块中,然后根据需要合并它们。

Hadoop

Hadoop是一个平台或框架,有助于在单个或分布式文件存储中存储大量和多样化的数据。它是开源的,用Java编程,由Apache基金会分发。它有一个称为HDFS(Hadoop分布式文件系统)的分布式文件系统,可以在分布式文件存储和MapReduce之间存储和快速数据传输并处理数据。

因此,Hadoop有两个主要组件:

  • HDFS是一个专门设计的文件系统,用于使用流访问模式在并行服务器之间存储和传输数据。
  • MapReduce处理数据。

Hadoop硬件架构

需要了解一些关键术语:

  • 商品硬件:PC/服务器使用廉价的硬件可用于制作集群。
  • 集群:在网络中互连的一组商用PC/服务器
  • 节点:每个商用PC/服务器都称为节点

hadoop数据组织形式 hadoop数据的种类_大数据

因此,Hadoop支持分布式架构的概念。上图显示了一组互连的节点如何组成集群,以及集群如何通过Hadoop框架互连。

  • 每个集群中的节点数取决于网络速度
  • 从群集到节点的上行链路为3到4 Gb/s
  • 集群之间的上行链路为1 GB/秒

HDFS与常规文件系统

常规文件系统

Hadoop分布式文件系统

每个数据块的大小很小,只有4KB

每个数据块的大小为64 MB或120 MB

如果2KB文件存储在一个块中,则剩余的2 KB未使用或浪费

如果将50 MB的文件存储在一个块中,则可以使用剩余的14 MB

访问块的速度慢

提供对数据块的高吞吐量访问

大数据访问存在磁盘I/O问题,主要是因为多寻道操作

在单次搜索后按顺序读取大量数据

为管理系统提供花哨且用户友好的界面

提供用于管理文件系统的有限接口

仅创建每个数据块的一个副本。如果数据块被擦除,数据将丢失

默认为每个数据块创建3个副本,并将它们分发到整个集群的计算机上,以实现可靠、快速的数据访问

  • HDFS在操作系统定义的文件系统之上公开一个专门设计的文件系统。
  • 它方便用户将数据存储在文件中。
  • 它维护带有目录和文件的分层文件系统。
  • HDFS支持不同的文件I/O操作,如创建、删除、重命名、移动等。

Hadoop核心服务

Hadoop遵循主从架构。Hadoop中运行有5种服务:

  1. NameNode
  2. Secondary NameNode
  3. JobTracker
  4. DataNode
  5. TaskTracker

NameNode,Secondary NameNode和JobTracker称为主服务而DataNode和TaskTracker称为从属服务。

每个主服务可以相互通信,每个从属服务可以相互通信。既然DataNode是NameNode的从属服务,他们可以互相交谈,TaskTracker是JobTracker的从属服务,他们也可以互相交谈。

HDFS工作原理

HDFS组件包括不同的服务器,如NameNode,DataNode和Secondary NameNode。

名称节点服务器

NameNode服务器是负责以下工作的单个实例服务器:

  • 维护文件系统命名空间
  • NameNode行为类似于一本书的目录。它知道每个数据块的位置。
  • 管理文件系统层次结构中的文件和目录。
  • 它使用名叫FsImage的文件来存储整个文件系统命名空间,包括块到文件和文件系统属性的映射。此文件存储在NameNode服务器的本地文件系统中。
  • 它使用名叫EditLog的事务日志来记录对文件系统元数据发生的每个更改。此文件存储在NameNode服务器的本地文件系统中。
  • 如果HDFS中发生任何I/O操作,则更新NameNode服务器的元数据文件。
  • 元数据文件被加载到NameNode服务器的内存中。每当有新DataNode服务器加入集群时,内存中的元数据文件都会更新,然后在本地文件系统中保留文件的镜像作为检查点。
  • Metadata大小仅限于NameNode服务器中可用的RAM。
  • NameNode是一个关键的故障点。如果失败,整个群集将失败。
  • 但是NameNode服务器可以从辅助名称节点服务器部分恢复。

数据节点服务器

群集中可能有任意数量的DataNode服务器,具体取决于网络类型和存储系统的类型。它负责以下工作:

  • 存储和维护数据块
  • 定期向NameNode服务器报告以更新元数据信息
  • 当有来自客户端或NameNode服务器的请求时存储和检索块
  • 从NameNode执行读取,写入请求,根据以下指令执行块创建,删除和复制
  • 每个DataNode服务器在特定持续时间内发送Heartbeat和BlockReport到NameNode服务器。
  • 如果任何DataNode服务器在特定持续时间内没有向NameNode服务器报告,则NameNode服务器认为该DataNode服务器已死并删除该DataNode服务器的元数据信息。

辅助名称节点服务器

可以有一个辅助NameNode服务器的实例。它负责以下工作:

  • 维护NameNode服务器备份
  • 它不被视为NameNode服务器的灾难恢复,但NameNode服务器可以从该服务器部分还原。
  • 定期通过编辑日志保留命名空间镜像

当客户端请求Hadoop存储文件时,请求会转到NameNode服务器。例如,文件大小为300MB。由于每个数据块的大小为64MB,因此文件将被分成5个数据块,其中4个等于64MB,第5个等于44MB,并将它们存储在具有3个副本的同一集群中的5个不同的数据节点服务器中。在这里,数据块被inputsplit.NameNode服务调用,然后保留信息,如数据块的存储位置,块的大小等。此信息称为元数据。

以下是操作的完整流程:

  1. 该文件分为5个输入拆分,分别表示a.jpgb.jpgc.jpgd.jpge.jpg原始文件名为photo.jpg并且文件大小300 MB
  2. 客户端向NameNode服务器发送具有此详细信息的请求,询问DataNode服务器有哪些可用的数据块来存储它们。
  3. NameNode服务器使用DataNode服务器的详细信息响应客户端,该服务器有足够的空间来存储文件。假设它发送以下详细信息:

InputSplit

DataNode Server

a.jpg

Data Node Server 1

b.jpg

Data Node Server 3

c.jpg

Data Node Server 5

d.jpg

Data Node Server 6

e.jpg

Data Node Server 7

  1. 一旦客户端收到来自NameNode服务器的响应,它就会开始请求DataNode服务器存储文件。它开始向DataNode服务器1发送第一个inputsplit a.jpg
  2. 一旦DataNode服务器1收到请求后,将a.jpg存储在其本地文件系统中,并请求复制到DataNode服务器3。
  3. 一旦DataNode服务器3收到请求,它就会在其本地文件系统中存储a.jpg,并请求另一个复制到DataNode服务器7。
  4. 一旦DataNode服务器7收到请求,它就会在其本地文件系统中存储a.jpg,并将确认发送回DataNode服务器3,说明该文件已正确存储。
  5. 然后,DataNode服务器3将确认发送回DataNode服务器1,说明该文件已在DataNode服务器3和5中正确复制。
  6. 然后,DataNode服务器1将确认发送回客户端,说明文件已正确存储和复制。
  7. DataNode服务器1、3和5发送BlockReport到NameNode服务器更新元数据信息。
  8. 对其他输入拆分重复相同的过程。
  9. 如果DataNode服务器1、3和5中的任何一个停止发送Heartbeat和BlockReport,NameNode服务器认为DataNode服务器已死,并选择另一台DataNode服务器来替换a.jpg inputsplit的复制。
  10. 应该有一个用Java或任何其他语言编写的程序来处理文件photo.jpg。客户端将此程序发送到Hadoop的JobTracker组件。JobTracker组件从NameNode服务器获取元数据信息,然后与相关DataNode服务器的TaskTracker组件通信以处理文件。JobTracker和TaskTracker之间的通讯叫Map。DataNode服务器的inputslit数量等于Mapper的数量。在上面的示例中,将有5个映射器运行来处理photo.jpg文件。
  11. TaskTracker组件会继续向JobTracker组件报告,如果它们正在正确处理请求或它们是否处于活动状态。如果有任何TaskTracker停止报告给JobTracker,则JobTracker将相同的任务分配给inputslipt存储复制的TaskTracker其中一个。
  12. JobTracker根据TaskTracker的距离和正在运行的映射器数量将任务分配给TaskTracker。
  13. 每个Mapper为每个分配的任务生成一个输出文件。在此示例中,将有5个映射器生成5个不同的输出文件。将有一个Reducer,其将合并这5个输入文件并向正在运行的DataNode服务器报告,其中Reducer在运行,例如DataNode服务器4。然后,DataNode服务器4将通过提供元数据与NameNode服务器通信,说明有一个名为output.jpg的输出文件已被处理并准备使用。
  14. 一旦处理完成100%并生成输出.jpg文件,客户端将继续监视并与NameNode服务器通信。NameNode服务器响应客户端说该文件已处理并准备在DataNode服务器4中使用。
  15. 然后客户端直接向DataNode服务器4发送请求并获取输出.jpg文件