ITPub博客

首页 > 大数据 > 数据挖掘 > 大数据六大核心技术

大数据六大核心技术

原创 数据挖掘 作者:好程序员 时间:2020-12-03 13:57:13 0 删除 编辑

  大数据六大核心技术, 目前,大数据领域每年都会涌现出大量新的技术,成为大数据获取、存储、处理分析或可视化的有效手段。大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度。

   1 、大数据生命周期

   底层是基础设施,涵盖计算资源、内存与存储和网络互联,具体表现为计算节点、集群、机柜和数据中心。在此之上是数据存储和管理,包括文件系统、数据库和类似YARN 的资源管理系统。然后是计算处理层,如 hadoop MapReduce Spark ,以及在此之上的各种不同计算范式,如批处理、流处理和图计算等,包括衍生出编程模型的计算模型,如 BSP GAS 等。数据分析和可视化基于计算处理层。分析包括简单的查询分析、流分析以及更复杂的分析 ( 如机器学习、图计算等 ) 。查询分析多基于表结构和关系函数,流分析基于数据、事件流以及简单的统计分析,而复杂分析则基于更复杂的数据结构与方法,如图、矩阵、迭代计算和线性代数。一般意义的可视化是对分析结果的展示。但是通过交互式可视化,还可以探索性地提问,使分析获得新的线索,形成迭代的分析和可视化。基于大规模数据的实时交互可视化分析以及在这个过程中引入自动化的因素是目前研究的热点。

   2 个领域垂直打通了上述的各层,需要整体、协同地看待。一是编程和管理工具,方向是机器通过学习实现自动最优化、尽量无需编程、无需复杂的配置。另一个领域是数据安全,也是贯穿整个技术栈。除了这两个领域垂直打通各层,还有一些技术方向是跨了多层的,例如“内存计算”事实上覆盖了整个技术栈。

   2 、大数据技术生态

   大数据的基本处理流程与传统数据处理流程并无太大差异,主要区别在于:由于大数据要处理大量、非结构化的数据,所以在各处理环节中都可以采用并行处理。目前,Hadoop MapReduce Spark 等分布式处理方式已经成为大数据处理各环节的通用处理方法。

   Hadoop 是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。 Hadoop 是一个数据管理系统,作为数据分析的核心,汇集了结构化和非结构化的数据,这些数据分布在传统的企业数据栈的每一层。 Hadoop 也是一个大规模并行处理框架,拥有超级计算能力,定位于推动企业级应用的执行。 Hadoop 又是一个开源社区,主要为解决大数据的问题提供工具和软件。虽然 Hadoop 提供了很多功能,但仍然应该把它归类为多个组件组成的 Hadoop 生态圈,这些组件包括数据存储、数据集成、数据处理和其他进行数据分析的专门工具。

   低成本、高可靠、高扩展、高有效、高容错等特性让Hadoop 成为最流行的大数据分析系统,然而其赖以生存的 HDFS MapReduce 组件却让其一度陷入困境——批处理的工作方式让其只适用于离线数据处理,在要求实时性的场景下毫无用武之地。因此,各种基于 Hadoop 的工具应运而生。为了减少管理成本,提升资源的利用率,有当下众多的资源统一管理调度系统,例如 Twitter Apache Mesos Apache YARN Google Borg 、腾讯搜搜的 Torca Facebook Corona( 开源 ) 等。 Apache Mesos Apache 孵化器中的一个开源项目,使用 ZooKeeper 实现容错复制,使用 Linux Containers 来隔离任务,支持多种资源计划分配 ( 内存和 CPU) 。提供高效、跨分布式应用程序和框架的资源隔离和共享,支持 Hadoop MPI Hypertable Spark 等。 YARN 又被称为 MapReduce 2.0 ,借鉴 Mesos YARN 提出了资源隔离解决方案 Container ,提供 Java 虚拟机内存的隔离。对比 MapReduce 1.0 ,开发人员使用 ResourceManager ApplicationMaster NodeManager 代替了原框架中核心的 JobTracker TaskTracker 。在 YARN 平台上可以运行多个计算框架,如 MR Tez Storm Spark 等。

   基于业务对实时的需求,有支持在线处理的Storm Cloudar Impala 、支持迭代计算的 Spark 及流处理框架 S4 Storm 是一个分布式的、容错的实时计算系统,由 BackType 开发,后被 Twitter 捕获。 Storm 属于流处理平台,多用于实时计算并更新数据库。 Storm 也可被用于“连续计算” (Continuous Computation) ,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式 RPC ”,以并行的方式运行昂贵的运算。 Cloudera Impala 是由 Cloudera 开发,一个开源的 Massively Parallel Processing(MPP) 查询引擎。与 Hive 相同的元数据、 SQL 语法、 ODBC 驱动程序和用户接口 (HueBeeswax) ,可以直接在 HDFS HBase 上提供快速、交互式 SQL 查询。 Impala 是在 Dremel 的启发下开发的,不再使用缓慢的 Hive+MapReduce 批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎 ( Query Planner Query Coordinator Query Exec Engine 3 部分组成 ) ,可以直接从 HDFS 或者 HBase 中用 SELECT JOIN 和统计函数查询数据,从而大大降低了延迟。

   Hadoop 社区正努力扩展现有的计算模式框架和平台,以便解决现有版本在计算性能、计算模式、系统构架和处理能力上的诸多不足,这正是 Hadoop2.0 版本“ YARN ”的努力目标。各种计算模式还可以与内存计算模式混合,实现高实时性的大数据查询和计算分析。混合计算模式之集大成者当属 UC Berkeley AMP Lab 开发的 Spark 生态系统,如图 3 所示。 Spark 是开源的类 Hadoop MapReduce 的通用的数据分析集群计算框架,用于构建大规模、低延时的数据分析应用,建立于 HDFS 之上。 Spark 提供强大的内存计算引擎,几乎涵盖了所有典型的大数据计算模式,包括迭代计算、批处理计算、内存计算、流式计算 (Spark Streaming) 、数据查询分析计算 (Shark) 以及图计算 (GraphX) Spark 使用 Scala 作为应用框架,采用基于内存的分布式数据集,优化了迭代式的工作负载以及交互式查询。与 Hadoop 不同的是, Spark Scala 紧密集成, Scala 像管理本地 collective 对象那样管理分布式数据集。 Spark 支持分布式数据集上的迭代式任务,实际上可以在 Hadoop 文件系统上与 Hadoop 一起运行 ( 通过 YARN Mesos 等实现 ) 。另外,基于性能、兼容性、数据类型的研究,还有 Shark Phoenix Apache Accumulo Apache Drill Apache Giraph Apache Hama Apache Tez Apache Ambari 等其他开源解决方案。预计未来相当长一段时间内,主流的 Hadoop 平台改进后将与各种新的计算模式和系统共存,并相互融合,形成新一代的大数据处理系统和平台。

   3 、大数据采集与预处理

   在大数据的生命周期中,数据采集处于第一个环节。根据MapReduce 产生数据的应用系统分类,大数据的采集主要有 4 种来源:管理信息系统、 Web 信息系统、物理信息系统、科学实验系统。对于不同的数据集,可能存在不同的结构和模式,如文件、 XML 树、关系表等,表现为数据的异构性。对多个异构的数据集,需要做进一步集成处理或整合处理,将来自不同数据集的数据收集、整理、清洗、转换后,生成到一个新的数据集,为后续查询和分析处理提供统一的数据视图。针对管理信息系统中异构数据库集成技术、 Web 信息系统中的实体识别技术和 DeepWeb 集成技术、传感器网络数据融合技术已经有很多研究工作,取得了较大的进展,已经推出了多种数据清洗和质量控制工具,例如,美国 SAS 公司的 Data Flux 、美国 IBM 公司的 Data Stage 、美国 Informatica 公司的 Informatica Power Center

   4 、大数据存储与管理

   传统的数据存储和管理以结构化数据为主,因此关系数据库系统(RDBMS) 可以一统天下满足各类应用需求。大数据往往是半结构化和非结构化数据为主,结构化数据为辅,而且各种大数据应用通常是对不同类型的数据内容检索、交叉比对、深度挖掘与综合分析。面对这类应用需求,传统数据库无论在技术上还是功能上都难以为继。因此,近几年出现了 oldSQL NoSQL NewSQL 并存的局面。总体上,按数据类型的不同,大数据的存储和管理采用不同的技术路线,大致可以分为 3 类。第 1 类主要面对的是大规模的结构化数据。针对这类大数据,通常采用新型数据库集群。它们通过列存储或行列混合存储以及粗粒度索引等技术,结合 MPP(Massive Parallel Processing) 架构高效的分布式计算模式,实现对 PB 量级数据的存储和管理。这类集群具有高性能和高扩展性特点,在企业分析类应用领域已获得广泛应用 ; 2 类主要面对的是半结构化和非结构化数据。应对这类应用场景,基于 Hadoop 开源体系的系统平台更为擅长。它们通过对 Hadoop 生态体系的技术扩展和封装,实现对半结构化和非结构化数据的存储和管理 ; 3 类面对的是结构化和非结构化混合的大数据,因此采用 MPP 并行数据库集群与 Hadoop 集群的混合来实现对百 PB 量级、 EB 量级数据的存储和管理。一方面,用 MPP 来管理计算高质量的结构化数据,提供强大的 SQL OLTP 型服务 ; 另一方面,用 Hadoop 实现对半结构化和非结构化数据的处理,以支持诸如内容检索、深度挖掘与综合分析等新型应用。这类混合模式将是大数据存储和管理未来发展的趋势。

   5 、大数据计算模式与系统

   计算模式的出现有力推动了大数据技术和应用的发展,使其成为目前大数据处理最为成功、最广为接受使用的主流大数据计算模式。然而,现实世界中的大数据处理问题复杂多样,难以有一种单一的计算模式能涵盖所有不同的大数据计算需求。研究和实际应用中发现,由于MapReduce 主要适合于进行大数据线下批处理,在面向低延迟和具有复杂数据关系和复杂计算的大数据问题时有很大的不适应性。因此,近几年来学术界和业界在不断研究并推出多种不同的大数据计算模式。

   所谓大数据计算模式,即根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象(abstraction) 或模型 (model) 。例如, MapReduce 是一个并行计算抽象,加州大学伯克利分校著名的 Spark 系统中的“分布内存抽象 RDD ”, CMU 著名的图计算系统 GraphLab 中的“图并行抽象” (Graph Parallel Abstraction) 等。传统的并行计算方法,主要从体系结构和编程语言的层面定义了一些较为底层的并行计算抽象和模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合这些高层特征考虑更为高层的计算模式。

   根据大数据处理多样性的需求和以上不同的特征维度,目前出现了多种典型和重要的大数据计算模式。与这些计算模式相适应,出现了很多对应的大数据计算系统和工具。由于单纯描述计算模式比较抽象和空洞,因此在描述不同计算模式时,将同时给出相应的典型计算系统和工具,如表1 所示,这将有助于对计算模式的理解以及对技术发展现状的把握,并进一步有利于在实际大数据处理应用中对合适的计算技术和系统工具的选择使用。

   6 、大数据分析与可视化

   在大数据时代,人们迫切希望在由普通机器组成的大规模集群上实现高性能的以机器学习算法为核心的数据分析,为实际业务提供服务和指导,进而实现数据的最终变现。与传统的在线联机分析处理OLAP 不同,对大数据的深度分析主要基于大规模的机器学习技术,一般而言,机器学习模型的训练过程可以归结为最优化定义于大规模训练数据上的目标函数并且通过一个循环迭代的算法实现,如图 4 所示。因而与传统的 OLAP 相比较,基于机器学习的大数据分析具有自己独特的特点。

   基于机器学习的大数据分析算法目标函数和迭代优化过程

   (1) 迭代性:由于用于优化问题通常没有闭式解,因而对模型参数确定并非一次能够完成,需要循环迭代多次逐步逼近最优值点。

   (2) 容错性:机器学习的算法设计和模型评价容忍非最优值点的存在,同时多次迭代的特性也允许在循环的过程中产生一些错误,模型的最终收敛不受影响。

   (3) 参数收敛的非均匀性:模型中一些参数经过少数几轮迭代后便不再改变,而有些参数则需要很长时间才能达到收敛。

   这些特点决定了理想的大数据分析系统的设计和其他计算系统的设计有很大不同,直接应用传统的分布式计算系统应用于大数据分析,很大比例的资源都浪费在通信、等待、协调等非有效的计算上。

   传统的分布式计算框架MPI(message passing interface ,信息传递接口 ) 虽然编程接口灵活功能强大,但由于编程接口复杂且对容错性支持不高,无法支撑在大规模数据上的复杂操作,研究人员转而开发了一系列接口简单容错性强的分布式计算框架服务于大数据分析算法,以 MapReduce Spark 和参数服务器 ParameterServer 等为代表。

   分布式计算框架MapReduce 将对数据的处理归结为 Map Reduce 两大类操作,从而简化了编程接口并且提高了系统的容错性。但是 MapReduce 受制于过于简化的数据操作抽象,而且不支持循环迭代,因而对复杂的机器学习算法支持较差,基于 MapReduce 的分布式机器学习库 Mahout 需要将迭代运算分解为多个连续的 Map Reduce 操作,通过读写 HDFS 文件方式将上一轮次循环的运算结果传入下一轮完成数据交换。在此过程中,大量的训练时间被用于磁盘的读写操作,训练效率非常低效。为了解决 MapReduce 上述问题, Spark 基于 RDD 定义了包括 Map Reduce 在内的更加丰富的数据操作接口。不同于 MapReduce 的是 Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS ,这些特性使得 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的大数据分析算法。基于 Spark 实现的机器学习算法库 MLLIB 已经显示出了其相对于 Mahout 的优势,在实际应用系统中得到了广泛的使用。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2739092/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    155234