在当今世界,数据量正以指数级速度增长。据估计,每天至少产生2.5千万亿字节的数据。这也就解释了为什么大数据领域在全球范围内迅速发展,并且充满了巨大的机遇。本文将聚焦于大数据的基础知识,探讨大数据的用途,并简要介绍一个名为Hadoop的大数据框架。这篇文章适合初学者,将帮助快速进入大数据的世界。
假设在一个平行宇宙中,(Zark Muckerburg)有一个创建名为“FaceCook”的社交媒体平台的绝妙想法。用户可以在该平台上与朋友分享照片、视频、文章等内容。将遇到的第一个问题是数据存储。数据将包括结构化和非结构化内容,包含文本、图像、视频等。因此,需要一个强大的系统来安全地存储数据。
大数据的精确定义是使用5V模型。
体量(Volume)
:需要存储的数据量非常大,可能是多个PB甚至更多。速度(Velocity)
:指的是数据的高速累积。想象一下,FaceCook上每分钟有数百万用户发布内容。多样性(Variety)
:大数据可能包括结构化(表格)、非结构化(图片、视频等)和半结构化(日志文件)数据。大数据中有各种类型的数据。真实性(Veracity)
:指的是数据的不确定性和不一致性。这种不一致性的原因可能是数据来源众多、数据类型不同等。这可能导致数据非常混乱。价值(Value)
:数据本身没有价值,除非经过提取、清洗和深入分析以获得对其的洞察。因此,可以从大数据中生成价值。最简单直接的方法是设置一个单一的中心化数据库,并使用它来检索和存储FaceCook用户发布的内容。起初,这种方法可能看起来可行,但随着用户基数的增加,数据库的大小也会增加。这将导致服务器工作负载过高,从而有数据丢失的风险,因为过载。单一数据库的可扩展性也不强,所以这种方法行不通。
为什么不分散工作量呢?单一数据库中心的问题是处理可能会变慢。可以简单地将数据分成部分,并在每台计算机实例中存储一个部分。这被称为分布式文件系统
。在这里,通过计算机网络连接的文件服务器集群被形成。假设想要在分布式文件系统中存储4GB的数据,可以将数据分成4部分,并在4个文件服务器集群中存储数据。
但是,如果由于某些技术问题,PC1被摧毁了,这将导致部分数据不可用。想象一下,由于公司失败而失去了一半的帖子,会起诉公司。
因此,需要一个工具来存储和管理大数据。它还应该提供容错能力和良好的性能。这时,Hadoop就出现了。
Hadoop是一个开源框架,用于高效地存储和处理从GB到PB大小的大型数据集。与使用单一的中心化数据库服务器存储数据不同,Hadoop通过集群多个普通计算机来实现容错和并行处理。Hadoop由四个主要模块组成:
本文将重点关注HDFS。
Apache Hadoop分布式文件系统(HDFS)遵循主从架构,其中集群由单个NameNode(主)和所有其他节点作为DataNodes(从)组成。NameNode的主要活动包括:
DataNodes的主要活动包括:
在Hadoop 2.x架构中,默认情况下,数据首先被分成128MB大小的块。除了最后一个块外,所有块的大小都应该是128MB。
已经讨论过,即使集群中的单个节点失败,也可能发生部分或全部数据丢失。为了防止这种情况,Hadoop有一个称为块复制
的特性。在HDFS中,数据块被复制并存储在其他DataNodes中,以实现更好的容错性。默认情况下,复制因子(集群中应保留多少块副本)为3,但可以根据用户需求进行调整。