天人们在吃饭,睡觉,工作,娱乐都会产生数据——大量的数据。根据IBM(国际机器商业公司)记录,人类每天会产生2.5万亿字节的数据,这相当于一堆DVD到达月球又返回来,我们发送的所有文本,和我们上传到工业传感器指标的照片,以及机器之间的通信这么大的量。
这是“大数据”成为一个很普遍的短语的重要原因。简单来讲,人们所谈论的大数据是指针对大量的数据,然后对它进行分析,最后把它转变成有用的东西的一种能力。
精确的来讲,什么是大数据?
然而,大数据远不止这些,它是关于:
1、通常从多个来源,获取大量的数据,
2、不仅仅只是大量的数据,而且都是不同类型的数据——就是在同一时间获取多种类型的数据,还有那些随时间变化的数据——他们并不需要在第一时间转换成一种特定的模式或者变成一致的,
3、用这样的一种方式去分析数据,就是允许针对相同的数据池依据不同目的进行不间断的分析
4、可以快速完成这些,即使是一些实时的数据
在早期,工业提出,用首字母所写的方式来描述上述四个方面中的其中三个:VVV,分别是大量的(大量的数据),多样化(不同类型的数据,数据随时间变化的事实)以及速度(快速)。
大数据VS数据仓库
这个VVV首字母缩写缺失的是数据不需要进行永久性的改变(或转换)来对数据分析的关键概念。针对不同需求来对相同的数据池进行分析和可以对依据不同目的而收集的数据来进行分析。
相比而言,数据仓库是为了满足特定的需求来对特定的数据进行分析而建立的,而且数据结构化然后转化为特定的格式,在这个过程中,基本上毁坏了原始的数据,特定的需求指的就是——没有别的——提取,转换,加载(ETL)。数据仓库的ETL仅限于对特定数据进行特定分析的处理。当你所有的数据都被存储在你的交换系统中时是极好的,但是在当今互联网连接的世界中,来自各个地方的数据并不是这样的。
但是,你不要以为大数据使数据仓库过时了。虽然,大数据系统让你用随之而来的无结构化的数据进行工作,但是你所获得的查询结果远远不及数据仓库的复杂性,毕竟,数据仓库是为了深入数据而设计的,它可以做的很精确,因为它把全部的数据转化成同一种形式,这样可以让你做一些事情,例如,为了深入钻取而构建立方体。数据仓库的供应商花了好多年的时间使他们的查询引擎最佳化,查询引擎是用来回答业务环境中典型的询问。
大数据可以让你从更多的来源中分析更多的数据,但是分辨率更低。因此,我们在很长一段时间内与传统的数据仓库和新型的大数据一起生活。
在大数据之后,有了技术性的突破
为了完成大数据的四个需求面——大量,多样化啊,非破坏化得使用,以及快速——需要有多种技术性的突破,包括分布式文件系统(Hadoop)的发展,一种快速了解不同数据的方法(首先是谷歌的MapReduce,然后是最近的Apache Spark),一个根据需求来进行访问和移动数据的云/互联网的基础设施。
直到大约十几年前,在任何一个时间都不可能去操控相对少量的数据。(是的,当时我们都认为我们的数据仓库是巨大的,然而自从互联网产生并且与各地的数据开始连接之后,这种环境发生了明显的转变。)数据的存储量,计算能力,对从多个数据源收集的不同格式的数据的处理能力的局限性,使得所有的任务都是不可能完成的。
接下来,在2003年左右,谷歌的研究者开发了MapReduce,该编程技术通过首先将数据映射到一系列键/值对来简化处理大数据集,然后对类似的键值进行计算把它们减少到单个的值,在成百上千的低成本的机器上来并行处理每一个数据块。这种巨大的并行性允许谷歌从越来越大量的数据中更快的产生查询结果。
在2003年左右,谷歌创造了两个突破,使大数据变得可能:一个是Hadoop,它是由两个关键的服务组成:
1、使用Hadoop分布式文件系统(HDFS)实现数据的可靠存储
2、使用MapReduce技术使处理并行数据高效化
Hadoop是使一系列的的商品,在无共享的服务器上运行的,在Hadoop这个集合上按照你的意愿来添加和删除服务;系统检测并补偿在任何服务器上的硬件或系统问题。换句话说,Hadoop是可以自我修复的,尽管系统发生改变或故障,它还是可以传递数据——运行大规模的、高性能的处理作业。
尽管Hadoop为数据存储和并行处理提供了一个平台,但是真正有价值的还是技术的附加、交叉集成和自定义实现。为此,Hadoop提供了子项目,它给平台增加了新的功能:
Hadoop Common:支持Hadoop的其他的子项目的普遍实用工具
Chukwa:一个是为了管理更大的分布式系统数据收集系统
HBase:可扩展的分布式数据库支持大量的结构化数据
窗体顶端
HHDGRG窗体底端
HDFS: 一种分布式系统,可以对应用程序数据提供高吞吐量访问
Hive:提供数据摘要和即席查询的数据仓库基础设施
MapReduce:用于在计算集群上分布式处理大型数据集的软件框架
Pig:并行计算的高级数据流语言和执行框架
ZooKeeper:分布式应用程序的高性能协调服务
Hadoop平台的大多数实施方案至少包含这些子项目中的一些,因为他们通常是开发大数据所必需的。例如,大多数组织选择使用HDFS作为主要的分布式系统,把HBase作为数据库,它可以存储十亿行的数据,MapReduce的使用和最新的Spark几乎是给定的,因为他们给Hadoop平台带来了速度和灵活性。
使用MapReduce,开发人员可以在分布式处理器集群或者独立计算机上创建一个并行处理大量的非结构化数据的程序。MapReduce框架可以分为两个功能区域:
Map:把工作包发送到分布式集群的不同节点的功能
Reduce:整理工作并把结果解析成单个值的功能
MapReduce的主要优点之一就是它是容错的,它是通过监视集群中的每个节点来完成的;预计每个节点会周期性地报道已经完成的工作和状态更新,如果每个节点保持静默的时间比预计间隔长,那么主节点会记录下来,并把这个工作重新分配给其他节点。
Apache Hadoop,它是一个把MapReduce作为核心的开源框架,在两年之后开发出来。最初建成索引的搜索引擎是Nutch,而Hadoop现在几乎被用于广泛的大数据工作的主要行业。由于Hadoop的分布式文件系统和YARN(另一个资源协商者),这个软件让用户可以在数以千计的设备上传播大量的数据,就好像它们全都在一台巨大的机器上。
2009年,加州大学伯克利分校的研究人员开发了ApacheSpark作为MapReduce的替代品,因为Spark使用内存存储执行并行计算,因此它可以比MapReduce快100倍。Spark可以作为一个单独的框架或在Hadoop内部工作。
即使是使用Hadoop,你仍然需要一种存储和访问数据的方式。这通常是通过如MongoDB、CouchDB以及Cassandra这些数据库来完成,这专门适用于处理分布在大型机器上非结构化或半结构化的数据。与数据仓库不同的是,大量的并多类型的数据会被融合成统一的格式然后存储在单个数据存储中,这些工具不会改变底层属性和数据的位置---邮件还是邮件,传感器数据还是传感器数据---事实上,它们可以被存储在任何地方。
尽管如此,在一个机器集群的数据库中想要存储大量的数据仍然不是容易的,除非你用它做了一些事情。这就是大数据分析的原理,像Tableau、Splunk和Jasper BI工具可以让你从语法上分析数据,以识别模式,提取意义并揭示新的见解。你所做的事情会因你的需求而不同。