大数据技术是企业数字化建设中非常重要的信息技术,为数据应用系统提供强大的数据处理能力。面对海量数据资源,大数据技术可以很高效率地从数据中提取出有价值的业务信息,挖掘重要的行业知识,同时,可以基于数据资源面向大量用户提供具有高可靠性的数据服务。大数据技术是推动数字化创新的基础技术产能,促进了更广泛的、性能更佳的数据应用,越来越多的企业在构建数字化转型底层能力时都开始关注大数据技术方面的投资。
大数据技术和一般的软件开发技术相比有诸多的不同之处,逐渐从传统的软件开发技术中分化出来形成专门的技术栈。因此,从事IT开发的技术人员通常把大数据技术作为单独的技能来进行学习和提升,IT开发团队也会设置专门的大数据应用开发和运营岗位。
那么,大数据技术都包括哪些内容呢?下面将从大数据存储、大数据收集、大数据计算,以及大数据集群管理等几个方面对大数据技术进行介绍:
1.大数据存储
对于大数据技术来说,为了能够对海量数据进行处理,最重要的就是先要能够对这种大规模级别的数据进行存储。随着大数据存储技术的不断发展,企业对数据进行存储的成本急剧下降,这样企业在数字化转型的进程中,能够更加主动、积极地进行数据资源的积累和管理。大数据存储技术采用的是分布式存储架构,即在互联网的条件下,使用多台机器协作的方式来对数据进行存储,而每台数据存储节点都可以是成本低廉的普通机器。大数据存储技术是整个大数据技术生态的“起点”。
大数据存储技术包括很多具体的基础软件框架,适用于不同的数据存储场景。这里主要介绍分布式文件系统和分布式结构化存储。本质上,所有数据类型都是文件,分布式文件系统的出现在大数据生态中几乎是最早。Google最先提出了名为GFS(Google File System),并在2003年发表的论文《The Google File System》中公布了其技术架构和实现方法。GFS具有非常好的可扩展性和容错性,通过增加机器节点的方式,可以任意扩充企业存储文件的能力。
HDFS是GFS的开源版本,很多大型互联网企业以及转型中的传统企业在数据中台建设时,使用的数据存储技术引擎大多为HDFS。HDFS允许企业对海量不同组织形式(K-V格式数据、行式文本数据、行列混合数据、列式存储等)的数据资源进行集中备份和管理,HDFS对非结构化数据和半结构化数据的存储兼容性更好,对于结构化数据(如日常事务数据)的存储,其实更适合采用专门的列式数据库存储引擎。
HBase是基于HDFS的一种基于Key-Value的列簇式数据存储引擎,用于解决在分布式数据存储架构上对结构化表格数据的存储问题。HBase可以通过HBase Shell和HBase API两种方式进行数据访问。随着企业数据规模的快速增长,传统的关系型数据库的“分表策略”会给数据的维护和管理带来巨大的复杂性,而HBase本质上是一种针对大数据典型应用的新型NoSQL数据库管理系统,其特点在于数据的组织和查询策略均以“列”编码为关键条件来执行。
2.大数据收集
所谓大数据收集,就是指将各个业务系统中随着企业日常经营活动而动态生成的数据自动地同步到数据仓库、数据湖等面向数据分析与应用的数据存储载体的技术。从数据收集的数据对象类型看,大数据收集技术主要包括关系型数据的收集和非关系型数据的收集,二者的区分标准在于所同步的数据源是否为关系型数据表。
关系型数据库的收集主要有两种方式,一是直连同步,二是日志解析,前者的主要技术框架为有DataX、Sqoop等,而后者的主要技術框架有Maxwell、Canal等;非关系型数据库的收集对象以日志数据为主,常采用面向流数据的实时同步技术解决方案。
Flume作为一种典型的针对流数据源的技术引擎,其基本组成部分是Agent,通过Agent彼此之间相关串联来完成数据流的路由。在Flume的具体使用过程中,常与消息队列大数据技术中间件Kafka搭配使用。Kafka本质上是一个分布式的消息存储集群,可以存储流数据源产生的缓存信息,用来消除数据生产者和数据消费者之间的直接依赖关系,让对流数据源的采集和存储操作更加灵活。Kafka把基于“推”的数据同步模式,变成了基于“拉”的数据同步模式,使得数据消费端掌握了数据获取的“主动权”。
图22. 大数据技术体系
3.大数据计算
大数据计算主要解决在面向海量数据源的处理任务时,在吞吐和效率方面技术瓶颈。为满足前端不同类型的数据应用需求,大数据计算技术需要提供离线批处理计算、交互式分析计算,以及流式实时计算三种数据分析场景的基础能力。
(1)离线批处理计算
离线批处理计算的本质是为了应对数据分析的规模性问题,对数据进行离线批处理计算的典型场景包括数据预处理、数据建模、数据标注,以及统计分析等对大数据资源进行价值挖掘的相关活动。大数据离线批处理的计算引擎建立在分布式存储架构之上的,也是整个大数据技术的核心能力。MapReduce是Google提出的最早的分布式离线计算引擎,与GFS和BigTable统称为Google大数据的“三剑客”。MapReduce的本质是“分而治之”的思想,通过多台计算节点联网同时工作的策略,解决大规模数据的批量分析任务痛点。
Hadoop和Spark是两套重要且流行的大数据技术生态,各自底层的计算引擎实现逻辑都参考了MapReduce的解决方案。除了支持大规模数据分析处理的分布式编程与计算能力,Hadoop和Spark都封装实现了更高语义层次的技术模块。在Hadoop生态中,有结构化查询引擎Hive、机器学习库Mashout,以及流计算引擎Pig等;Spark生态中的结构化查询引擎、机器学习库、流计算引擎分别为Spark SQL、MLib、Spark Streaming。
(2)交互式分析计算
离线批量分析不同,交互式分析十分强调人与机器的敏捷互动与信息交互过程。在交互式分析中,机器根据人的指令在“可容忍”的时间延迟内,给予用户相应的查询和计算结果返回。在交互式分析场景下,数据分析活动并非“一蹴而就”,需要进行多次的操作、反馈、迭代,其本质上是一种探索式的数据分析方式。交互式分析包括面向结构化数据的分析交互和面向文本数据的分析交互等主要类型。
结构化数据的交互分析旨在满足针对数据仓库中大规模数据的OLAP需求。现有的大数据技术框架中对于交互式OLAP操作主要有两种底层技术实现思路,分别为ROLAP(Relational OLAP)和MOLAP(Multidimensional OLAP)。其中,ROLAP是基于关系型数据库的OLAP操作,底层数据存储形式仍然为关系型数据库表格。当前比较主流的ROLAP数据查询引擎包括Cloudera等公司开发的Impala和Facebook开发的Presto;MOLAP的核心数据结构是数据立方体(Cube),数据立方体是结构化数据表格经过预处理得到的中间结果,被“预存”在内存空间中以供随时调用,其采用的是一种“空间换时间”的典型技术策略。当前比较主流的MOLAP数据查询引擎有Druid和Kylin等。
Elastic Search(ES)是一种面向大数据的信息检索引擎,同时也是一种分布式的文档存储工具,可以有效解决大规模文本的快速搜索需求。ES引入了索引的机制,可以将索引文件进行分片,将其存储在多个计算节点上,实现高并发的数据查询。在ES技术框架的支撑下,用户可以对非结构化文本信息进行高效的交互式分析,持续迭代地挖掘文本中蕴含的关键业务信息。
(3)流式实时计算
流式计算本质是一种“持续在线”的智能算法服务,从业务上游边采集信息,边输出分析结果,是包括业务风险监控、主题流量跟踪、商品动态推荐等线上数字化应用在内的重要组成部分。一般来说,完整的流式数据处理的技术链路包括数据采集、数据缓存、数据实时分析、数据结果存储等主要步骤。其中,数据采集可以使用Flume框架,数据缓存可以是Kafka,数据实时分析是流数据处理的核心部分,采用流式计算引擎,典型的有Apache Storm和Spark Streaming两种主要的开源框架,最终数据计算结果写入的数据存储载体可以采用Redis、MySQL或HBase等。
4.大数据集群管理
在大数据技术架构下,采用的基础架构是分布式架构,在处理数据的存储和计算需求时,需要协调多台计算节点的具体工作任务。因此,在大数据技术中还需要引入大数据集群管理的底层基础功能。从本质上来说,大数据集群管理技术解决的是多台机器之间共同合作的问题。大数据集群管理技术包括分布式协调服务和资源管理与调度两部分内容。
分布式协调服务可以对整个集群的配置文件进行集中的配置和更新,避免了运维工程师人工对集群中上百个计算节点记录的关键信息进行逐个更新、修改、同步的繁琐操作,有效实现了大数据环境中重要配置信息在集群中被全部机器节点自动共享。ZooKeeper是一种非常重要的分布式协调服务技术组件,其本质上是一个分布式文件管理系统,存储的是保障整个分布式集群运行的技术元数据。除此以外,ZooKeeper可提供域名服务、分布式同步、组服务等重要功能等。
另外,资源管理与调度是指在大数据集群中,面对复杂的计算任务,可在各个计算节点之间动态地完成任务的“合理”分配活动,目的是保证每个计算节点的承担数据处理任务的可实现负载均衡。当前大数据技术中常见的资源调度技术组件有YARN、Mesos、Kubernetes(K8S)等。