Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另一种重要的分布式计算系统。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而 Spark 使用内存来存储数据,因此Spark 可以提供超过 Hadoop 100 倍的运算速度。Spark 可以通过YARN(另一种资源协调者)在Hadoop集群中运行,但是现在的Spark也在往生态走,希望能够上下游通吃,一套技术栈解决大家多种需求。比如Spark SQL,对应着HadoopHive,Spark Streaming对应着Storm。
Storm 是Twitter主推的分布式计算系统,是Apache基金会的孵化项目。它在Hadoop的基础上提供了实时运算的特性,可以实时地处理大数据流。不同于Hadoop和Spark,Storm不进行数据的收集和存储工作,它直接通过网络实时地接收数据并且实时地处理数据,然后直接通过网络实时地传回结果。Storm擅长处理实时流式数据。比如日志、网站购物的点击流是源源不断的、按顺序的、没有终结的,所有通过Kafka等消息队列传来数据后,Storm就开始工作。Storm自己不收集数据也不存储数据,一边传来数据,一边处理,一边输出结果。
上面的三个系统只是大规模分布式计算底层的通用框架,通常也用计算引擎来描述它们。除了计算引擎外,想要做数据的加工应用,我们还需要一些平台工具,如开发IDE、作业调度系统、数据同步工具、BI模块、数据管理平台、监控报警等,它们与计算引擎一起构成大数据的基础平台。在这个平台上,我们可以做大数据的加工应用,开发数据应用产品。比如一个餐厅,为了做中餐、西餐、日料、西班牙菜,必须有食材(数据),配合不同的厨具(大数据底层计算引擎),加上不同的佐料(加工工具),才能做出不同类型的菜系。但是为了接待大批量的客人,还必须配备更大的厨房空间、更强的厨具、更多的厨师(分布式)。做的菜到底好吃不好吃,这又得看厨师的水平(大数据加工应用能力)。
3.4.3 Hadoop
Hadoop 由Apache基金会开发。它受到谷歌开发的Map/Reduce和 Google FileSystem(GFS)的启发。可以说Hadoop是谷歌的Map/Reduce和Google File System的开源简化版本。
Hadoop是一个分布式系统的基础架构。Hadoop提供一个分布式文件系统架构(HadoopDistributedFileSystem,HDFS)。HDFS有着高容错性的特点,并且设计用来部署在相对低成本的x86服务器上。而且它提供高传输率来访问应用程序的数据,适合有着超大数据集的应用程序。
Hadoop的MapReduce是一个能够对大量数据进行分布式处理的软件开发框架,是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点。
●高可靠性。Hadoop的海量存储和处理数据的能力极强,同时具备高可靠性。
高扩展性。Hadoop采用分布式设计,可以方便地扩展到数以千计的节点中。
●高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
第3章 数据
77