1.1 平台设计

随着云时代的到来,数据格式和规模正在以前所未有的速度增长。对海量数据增长的合理存储和管理有利于为行业的预测分析提供支持,并有效应对大数据背景下的机遇和挑战,融合传统的数据挖掘方法和大数据方法,构建计算机技术创新管理平台,进行智能分析预测和评估预测。最终,企业将新技术应用于管理和决策的能力得到提高。

在信息经济早期,企业只是作为资源收集和存储数据,最多只需进行简单的统计分析,而数据的内在价值通常被忽略。随着存储和分析技术的进步,企业进一步挖掘和处理收集的数据,并逐渐意识到主动掌握数据的重要性。开发数据潜在价值的能力成为企业的核心竞争力之一,数据的价值显示出其在智能科技时代的重要地位。大数据首次提出后在医学领域被成熟使用,当前被应用到多个业务开发领域,如自然语言处理、图像和语音识别、汽车自动驾驶、风险预警等。在数据大爆炸时代,业界提供和使用数据服务是目前这个时代的必然结果。要高效准确地使用数据,前提是数据的高效存储和管理,根据不同的应用需求采取适当的数据存储模型,以便更高效地、实时地处理和分析数据。通过大数据的技术,相关数据被收集、存储和管理,然后进行分析和处理,以挖掘出可以提供给高层领导做决策判断的、具有潜在价值的信息。在大数据环境下,用户对存储服务以及数据的可用性、可靠性和持久性提出了更高的要求。为了防止数据丢失或损坏,保证数据的私密性,用户的存储系统环境至关重要。

传统的数据存储技术在海量数据存储管理和安全中的应用存在滞后现象。目前,在行业数据不断发展的情况下,存在大量的非结构化数据和半结构化数据。对这些数据进行合理的处理和分析,挖掘有价值的信息,符合大数据政策决策和服务提供的要求,而构建数据模型是大数据分析和预测的前提和基础。当前,为了构建大数据应用平台,数据工程师需要研究基于Hadoop数据平台的大数据存储体系结构,建立应用平台为行业分析、报表、预测和决策等功能提供数据服务,同时为大数据存储管理提供可行的技术解决方案。基于Hadoop的大数据平台可以有效地并行处理海量数据,用户可以在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的优势进行高速运算和存储。Hadoop实现了一个分布式文件系统,有高容错性的特点,并且被设计用来部署在低廉的硬件上;而且提供高吞吐量访问应用程序的数据,适合有超大数据集的应用程序。Hadoop框架最核心的设计是HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。Spark同样是Apache软件基金会的顶级项目,可以理解为在Hadoop基础上的一种改进,是加州大学伯克利分校AMP实验室开源的类似Hadoop MapReduce的通用并行框架。相比于Hadoop,Spark可以说是青出于蓝而胜于蓝。Hadoop的MapReduce是面向磁盘的,因此受磁盘读写性能的约束。MapReduce在处理迭代计算、实时计算、交互式数据查询等方面并不高效,但是这些计算却在图计算、数据挖掘和机器学习等相关应用领域中很常见。而Spark是面向内存的,使得Spark能够为多个不同数据源的数据提供近乎实时的处理性能,适用于需要多次操作特定数据集的应用场景。在相同的实验环境下处理相同的数据,若在内存中运行,那么Spark要比MapReduce快100倍。其他方面,如处理迭代运算、计算数据分析类报表、排序等,Spark都比MapReduce快很多。此外,Spark在易用性、通用性等方面也比Hadoop更强。

大数据平台的业务应用需求包括数据采集、数据收集、数据分析和数据应用,需要构建统一的数据应用平台,用于数据实时加载,存储和处理不同类型的数据。数据处理工具和服务被集成,以管理异构数据。结构化和非结构化的数据仓库分析工具也被集成。该平台可以通过任何终端设备随时随地实现大数据共享和协同访问的集中;应用平台可以支持新业务开发和业务战略的建模,并推动行业洞察力的发展,进行实时预警分析。如何收集和存储大量数据,如何集成异构数据,如何挖掘和处理大型数据集,这些都是大数据平台需要关心的问题。数据收集、数据存储、数据处理、数据分析和数据应用将是智慧经济时代企业绩效的基本任务,基于数据的判断和决策将成为企业发展的技能和手段。

大数据平台的设计需要符合大数据管理,整合异构数据,定制用户需求,为应用领域的行业发展提供专业的分析功能。大数据应用平台可以满足大数据量、多样式和快速流量数据的处理需求。它还具备实现海量数据采集、存储、处理和分析的能力,满足企业应用高可靠性、易扩展性、强容错性、高可用性、高安全性和高保密性的基本要求,现有技术与平台兼容,实现数据存储和处理。大数据应用平台符合两个标准体系,即系统安全标准体系和服务管理标准体系。基于Spark和Hadoop的大数据平台和数据仓库,其数据集成功能实现了大量的数据存储、分析、处理和使用,包括前端、核心层、管理层、数据层和应用层等。办公自动化、风险评估、数据采集、智能分析和实时处理相结合,打造数据集成管理平台。通过数据仓库和分析工具的集成,可以构造实时预测分析解决平台。基于Spark和Hadoop大数据平台架构,依托HDFS、MapReduce和MongoDB等分布式架构,部署在更便宜的硬件设备上,实现了高吞吐量数据应用访问机制。HDFS作为开源的分布式文件系统,支持高容错的数据存储和管理,采用主从模式集群结构实现数据存储选项和命名空间,数据库存储和最佳策略选择。

在核心层,大数据平台和数据仓库集成平台之间实现连接,实现数据仓库和智能分析系统的智能预警和实时分析以及集成,使用分析工具进行可视化分析,形成电子化报告和分析报告,如图1-1所示为大数据处理架构。Hadoop和Spark是两种不同的大数据处理框架,下面将两者整理在一幅图中,展示全貌。虽然它们是两种不同的大数据处理框架,但它们不是互斥的,Spark与Hadoop中的MapReduce是相互共生的关系。Hadoop提供了许多Spark中没有的功能,如分布式文件系统,而Spark提供了实时内存计算,速度非常快。有一点大家要注意,Spark并不一定依附于Hadoop才能生存,除了Hadoop的HDFS,还可以基于其他的云平台,只是大家一致认为Spark与Hadoop配合默契最好。HDFS是跨平台存储数据,MapReduce、Tez和Spark可以在多台机器之间互相通信、交换数据,以及完成复杂的计算。MapReduce是第一代计算引擎,Tez和Spark是第二代计算引擎。MapReduce的计算模型采用了Map和Reduce两个计算过程,但是这个模式随着数据量的增大,出现了效率问题。第二代的Tez和Spark将MapReduce变成通用模型,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更大的吞吐量。在更高层,需要Pig和Hive实现更抽象的语言层描述算法和数据处理流程。Pig是接近脚本方式描述MapReduce;Hive则用的是SQL,把脚本和SQL翻译成MapReduce程序,输入到计算引擎去计算,而从烦琐的MapReduce程序中解脱出来。Hive已成为大数据仓库的核心组件,维护简单,并且Hive可以与新一代通用计算引擎Tez、Spark和SparkSQL结合,实现运行效率的提高。目前数据仓库的构建思路就是采用:底层为HDFS;中间层为MapReduce、Tez和Spark;上层为Hive和Pig,或者HDFS上直接运行Impala、Drill和Presto。这种数据仓库的设计满足了中低速数据处理的要求。对于更高速的流计算数据处理,Storm是最流行的流计算平台。流计算的要求是达到更新更实时,在数据流进来的时候就进行处理,可以做到基本无延迟。

HBase是运行在HDFS之上的一种数据库,以键值对的形式存储数据,能够快速在主机内数十亿行数据中定位所需的数据并访问,而HDFS缺乏随即读写操作,不能满足实时需求。HBase底层依旧依赖HDFS作为其物理存储,这点类似于Hive。但是,Hive适合用来对一段时间内的数据进行分析查询,如用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询,其设计目的也不是支持实时的查询,因为它需要很长时间才可以返回结果。HBase则非常适合用来进行大数据的实时查询,可以对消息进行实时分析。对于Hive和HBase的部署来说,也有一些区别,Hive一般只要有Hadoop便可以工作,而HBase则还需要Zookeeper的帮助。另外,大数据处理系统还可以包括如下几种组件。

1.Mahout(数据挖掘算法库)

Mahout的主要目标是可扩展地实现机器学习领域的经典算法,帮助开发人员更方便快捷地创建智能应用程序。Mahout现在已经包含聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入和输出工具,与其他存储系统(如数据库、MongoDB或Cassandra)集成等数据挖掘支持架构。

2.Sqoop(数据ETL/同步工具)

Sqoop是SQL-to-Hadoop的缩写,主要用于在传统数据库和Hadoop之间传输数据。数据的导入和导出本质上是MapReduce程序,充分利用了并行化和容错性。Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。

3.Zookeeper(分布式协作服务)

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。Hadoop的许多组件都依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。

4.Flume(日志收集工具)

开源的日志收集系统具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统,当然也可用于收集其他类型的数据。

5.Oozie(工作流调度器)

Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行,能够管理一个复杂的系统,基于外部事件执行,外部事件包括数据的定时和数据的出现。Oozie工作流是放置在有向无环图中的一组动作,如Hadoop的MapReduce作业,或者Pig作业等,其中指定了动作执行的顺序。

6.Kafka(分布式消息队列)

开源的消息系统,主要用于处理活跃的流式数据。活跃的流式数据在Web网站应用中很常见,这些数据包括网站的点击量,用户访问了什么内容、搜索了什么内容等。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

7.Ambari(安装部署配置管理工具)

创建、管理、监视Hadoop的集群,是一个为了让Hadoop以及相关的大数据软件更容易使用的Web工具。

8.YARN(分布式资源管理器)

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。YARN是下一代Hadoop计算平台,是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。以上所有组件都在同一个集群上运转,所以需要组件进行调度系统;现在最流行的是YARN。大数据处理框架如图1-1所示。

图1-1 大数据处理框架