1大数据简介大数据是这个时代最热门的话题之一。但是什么是大数据呢?它描述了一个庞
1 大数据简介
大数据是这个时代最热门的话题之一。但是什么是大数据呢?它描述了一个庞大的数据集,并且正在以惊人的速度增长。大数据除了体积(Volume)和速度(velocity)外,数据的多样性(variety)和准确性(veracity)也是大数据的一大特点。让我们详细讨论体积、速度、多样性和准确性。这些也被称为大数据的4V特征。
1.1 Volume
数据体积(Volume)指定要处理的数据量。对于大量数据,我们需要大型机器或分布式系统。计算时间随数据量的增加而增加。所以如果我们能并行化计算,最好使用分布式系统。数据可以是结构化数据、非结构化数据或介于两者之间的数据。如果我们有非结构化数据,那么情况就会变得更加复杂和计算密集型。你可能会想,大数据到底有多大?这是一个有争议的问题。但一般来说,我们可以说,我们无法使用传统系统处理的数据量被定义为大数据。现在让我们讨论一下数据的速度。
1.2 Velocity
越来越多的组织机构开始重视数据。每时每刻都在收集大量的数据。这意味着数据的速度在增加。一个系统如何处理这个速度?当必须实时分析大量流入的数据时,问题就变得复杂了。许多系统正在开发,以处理这种巨大的数据流入。将传统数据与大数据区别开来的另一个因素是数据的多样性。
1.3 Variety
数据的多样性使得它非常复杂,传统的数据分析系统无法正确地分析它。我们说的是哪一种?数据不就是数据吗?图像数据不同于表格数据,因为它的组织和保存方式不同。可以使用无限数量的文件系统。每个文件系统都需要一种不同的方法来处理它。读取和写入JSON文件与处理CSV文件的方式不同。现在,数据科学家必须处理数据类型的组合。您将要处理的数据可能是图片、视频、文本等的组合。大数据的多样性使得分析变得更加复杂。
1.4 Veracity
你能想象一个逻辑错误的计算机程序产生正确的输出吗?同样,不准确的数据将提供误导的结果。准确性,或数据正确性,是一个重要的问题。对于大数据,我们必须考虑数据的异常。
2 Hadoop 介绍
Hadoop是一个解决大数据问题的分布式、可伸缩的框架。Hadoop是由Doug Cutting和Mark Cafarella开发的。Hadoop是用Java编写的。它可以安装在一组商用硬件上,并且可以在分布式系统上水平扩展。
在商品硬件上工作使它非常高效。如果我们的工作是在商品硬件,故障是一个不可避免的问题。但是Hadoop为数据存储和计算提供了一个容错系统。这种容错能力使得Hadoop非常流行。
Hadoop有两个组件:第一个组件是HDFS(Hadoop Distributed File System),它是一个分布式文件系统。第二个组件是MapReduce。HDFS用于分布式数据存储,MapReduce用于对存储在HDFS中的数据执行计算。
2.1 HDFS介绍
HDFS用于以分布式和容错的方式存储大量数据。HDFS是用Java编写的,在普通硬件上运行。它的灵感来自于谷歌文件系统(GFS)的谷歌研究论文。它是一个写一次读多次的系统,对大量的数据是有效的。HDFS有两个组件NameNode和DataNode。
这两个组件是Java守护进程。NameNode负责维护分布在集群上的文件的元数据,它是许多datanode的主节点。HDFS将大文件分成小块,并将这些块保存在不同的datanode上。实际的文件数据块驻留在datanode上。HDFS提供了一组类unix-shell的命令。但是,我们可以使用HDFS提供的Java filesystem API在更细的级别上处理大型文件。容错是通过复制数据块来实现的。
我们可以使用并行的单线程进程访问HDFS文件。HDFS提供了一个非常有用的实用程序,称为distcp,它通常用于以并行方式将数据从一个HDFS系统传输到另一个HDFS系统。它使用并行映射任务复制数据。
2.2 MapReduce介绍
计算的MapReduce模型最早出现在谷歌的一篇研究论文中。Hadoop的MapReduce是Hadoop框架的计算引擎,它在HDFS中对分布式数据进行计算。MapReduce已被发现可以在商品硬件的分布式系统上进行水平伸缩。它也适用于大问题。在MapReduce中,问题的解决分为Map阶段和Reduce阶段。在Map阶段,处理数据块,在Reduce阶段,对Map阶段的结果运行聚合或缩减操作。Hadoop的MapReduce框架也是用Java编写的。
MapReduce是一个主从模型。在Hadoop 1中,这个MapReduce计算由两个守护进程Jobtracker和Tasktracker管理。Jobtracker是处理许多任务跟踪器的主进程。Tasktracker是Jobtracker的从节点。但在Hadoop 2中,Jobtracker和Tasktracker被YARN取代。
我们可以使用框架提供的API和Java编写MapReduce代码。Hadoop streaming体模块使具有Python和Ruby知识的程序员能够编写MapReduce程序。
MapReduce算法有很多用途。如许多机器学习算法都被Apache Mahout实现,它可以在Hadoop上通过Pig和Hive运行。
但是MapReduce并不适合迭代算法。在每个Hadoop作业结束时,MapReduce将数据保存到HDFS并为下一个作业再次读取数据。我们知道,将数据读入和写入文件是代价高昂的活动。Apache Spark通过提供内存中的数据持久性和计算,减轻了MapReduce的缺点。
PySpark SQL