大数据处理框架选型分析

合集下载

江苏银行大数据技术平台选型分析

江苏银行大数据技术平台选型分析
21 2015.11 中国金融电脑
V 观点 IEWPOINT
一、为什么要建设大数据技术平台
为此,江苏银行更近一步从数据容量和数据处理能力的 线性关系分析传统数据平台、MPP 和 Hadoop 的关系(如
截至 2015 年 6 月,江苏银行资产规模达到 1.2 万亿 图 1 所示)。
元,一方面,成立 8 年来,江苏银行积累了大量的内部
图 2 大数据平台新型应用模式
需要处理的数据量
平台,既要适应高并发低时延的移动互联网实时数据检 索需求,又要满足大体量数据的统计分析与业务建模要 求;要求总体技术方案具备高性价比,能够实现在同一
供基于大数据的应用系统实时检索的模式,与城市商业 银行目前的数据架构相适应,决定选择 Hadoop 平台。
遇瓶颈,江苏银行急需探索新的数据架构,采用新的数 着 Hadoop 开 源 社 区 的 不 断 发 展, 特 别 是 Spark2.0 的
据处理技术。
发布让 Hadoop 焕发了新的活力。Spark 2.0 具有 RDD
当前,银行业面临的挑战主要来自两个方面:利率 (Resilient Distributed Datasets)和 DAG(有向无环图)
经过慎重分析和实际测试,江苏银行将选择范围集 中在符合银行应用需求的成熟的具有高效技术支持的 Hadoop 发布产品。
三、大数据平台选型要点
服务器集群上针对不同应用动态灵活分配内存、CPU 等 硬件资源并支持动态扩展,在出现资源瓶颈时能够快速 解决。Hadoop 产品具有支持 x86 和可动态扩展的性能, 但目前大多数 Hadoop 平台在不同应用间资源有效隔离 方面存在一定缺陷。
2. 对 SQL 的兼容性 开源 Hadoop 对标准 SQL 及 PL/SQL 支持程度不高, 许多常用函数不支持,需要使用者编写程序实现。而银 行以往数据集市、数据仓库等应用大都基于 SQL 开发, 根据江苏银行的数据架构规划,数据集市、数据仓库将 迁移至 Hadoop 平台,为避免少则几百行多则上万行的 程序编写,SQL 兼容性成为 Hadoop 平台选择不可或缺 的考虑因素之一。 3. 对于通用开发框架和工具的支持程度 江苏银行应用系统采用数据库 + 中间件 + 应用的三 层模式,开发环境为 Java Hibernate 和 Spring 框架。为 此要求 Hadoop 平台下的 HDFS 库、Hbase 以及内存数 据库等组件能够通过 ODBC 或 JDBC 连接,以实现数据 库对应用开发人员透明,并支持诸如 BI、ETL、数据挖 掘等工具,数据源可以根据实际需要选择配置 Oracle 或 Hadoop。 4. 具备事务的基本特性

大数据组件选型方法

大数据组件选型方法

大数据组件选型方法随着大数据技术的逐渐普及,越来越多的公司和组织开始意识到大数据所带来的商业价值。

然而,在选取适合自己的大数据组件时,不同的组件有各自独特的特性和优缺点,因此,选取适合自己的大数据组件需要根据自己的需求和场景来做出决策。

本文将从以下几个方面,介绍大数据组件选型的方法和注意事项。

一、需求分析在选取大数据组件之前,首先需要做的就是进行需求分析。

这个阶段需要考虑的问题如下:1. 需要处理哪些数据?2. 数据的体量和规模是多少?3. 需要用到哪些处理方式和分析方法?4. 需要实时分析还是离线分析?5. 公司的信息系统架构和技术水平如何?6. 需要考虑的安全和隐私需求是什么?通过对以上问题进行详细的分析,可以从需求层面上确定自己的大数据组件选型方向。

二、常用的大数据组件常用的大数据组件包括但不限于以下几种:1. Apache Hadoop:是最为流行的大数据处理框架之一,可处理PB级别的数据。

2. Apache Spark:是一个快速而通用的大数据处理引擎,在处理数据时比Hadoop更为迅速。

3. Apache Storm:是一种分布式的流式处理器,可实现实时大数据处理。

4. Apache Cassandra:是一种高度可扩展的分布式数据库,具有高度容错性和高可用性。

5. Apache Kafka:是一种高吞吐量的分布式消息系统,可使不同应用程序之间的数据交换更为高效。

三、选型注意事项在做出自己的大数据组件选型决策时,需要注意以下几个方面:1. 功能和特性:不同的大数据组件都有自己独特的功能和特性。

在选型时需要明确自己的需求,并选择最适合自己需求的组件。

2. 成本和效率:大数据组件的成本和效率也是需要考虑的因素。

在选型时需要综合考虑这两个方面,选择最具有性价比的组件。

3. 可扩展性和兼容性:大数据处理是一个高度动态的领域,选择可扩展性高和兼容性好的组件是非常重要的。

4. 社区支持度和文档资料:好的大数据组件需要有一个活跃的社区和丰富的文档资料,以保证在使用中出现问题时能够得到及时的帮助和解决方案。

利用Hadoop进行大数据处理的技术解析

利用Hadoop进行大数据处理的技术解析

利用Hadoop进行大数据处理的技术解析随着信息技术的快速发展,大数据已经成为当今社会的热门话题。

大数据的处理对于企业和组织来说,是一项重要的任务。

而Hadoop作为一种开源的分布式计算框架,已经成为大数据处理的首选技术。

本文将对利用Hadoop进行大数据处理的技术进行解析。

一、Hadoop的概述Hadoop是一个由Apache基金会开发的开源软件框架,用于处理大规模数据集的分布式计算。

它采用了分布式文件系统(HDFS)和分布式计算框架(MapReduce)的结构,可以在廉价的硬件上进行高效的数据处理。

二、Hadoop的技术组成1. HDFS(Hadoop Distributed File System)HDFS是Hadoop的分布式文件系统,它将大数据集分割成多个块,并将这些块存储在不同的计算机节点上。

这样可以实现数据的高可靠性和高可用性。

2. MapReduceMapReduce是Hadoop的核心计算框架,它将数据处理任务分为两个阶段:映射(Map)和归约(Reduce)。

映射阶段将输入数据分割成多个小块,并在不同的计算节点上进行并行处理。

归约阶段将映射阶段的结果进行合并和计算,最终得到最终的结果。

3. YARN(Yet Another Resource Negotiator)YARN是Hadoop的资源管理器,它负责管理集群中的计算资源,并分配给不同的任务。

YARN的出现使得Hadoop可以同时运行多个计算任务,提高了系统的利用率和性能。

三、Hadoop的优势1. 可扩展性Hadoop可以在廉价的硬件上进行横向扩展,可以根据需求增加计算节点和存储节点。

这使得Hadoop可以处理大规模的数据集,适应不断增长的数据需求。

2. 容错性Hadoop的分布式文件系统和计算框架具有高度的容错性。

当某个节点出现故障时,Hadoop可以自动将任务重新分配给其他可用的节点,保证数据的完整性和任务的顺利执行。

大数据架构设计

大数据架构设计

大数据架构设计在当今数字化时代,数据已经成为企业和组织的重要资产。

如何有效地管理和利用这些海量的数据,以获取有价值的信息和洞察,成为了摆在众多企业面前的关键问题。

大数据架构设计就是为了解决这个问题而应运而生的。

大数据架构设计并非是一蹴而就的简单任务,它涉及到多个层面的考虑和复杂的技术组件。

首先,我们需要明确大数据的特点。

大数据通常具有大容量、高速度和多种类型这三个显著特征,也就是所谓的“3V”特性。

容量大意味着数据量巨大,可能达到 PB 级甚至 EB 级;速度高表示数据的生成和处理速度非常快,需要实时或近实时的处理能力;多种类型则涵盖了结构化数据(如数据库中的表格)、半结构化数据(如 XML 或 JSON 格式)以及非结构化数据(如文本、图像、音频和视频)。

在设计大数据架构时,数据存储是一个关键的环节。

传统的关系型数据库在处理大数据时往往显得力不从心,因此出现了一系列专门用于大数据存储的技术和工具。

例如,Hadoop 的分布式文件系统(HDFS)能够将数据分散存储在多个节点上,实现了横向扩展,从而能够处理海量的数据。

此外,NoSQL 数据库如 MongoDB、Cassandra 等,它们在处理非结构化和半结构化数据方面具有独特的优势,能够提供高并发的读写性能和灵活的数据模型。

数据处理框架也是大数据架构的重要组成部分。

Apache Spark 是目前广泛使用的大数据处理框架之一,它提供了快速的内存计算能力,能够在大规模数据集上进行高效的数据分析和机器学习任务。

与传统的 MapReduce 框架相比,Spark 的性能更加出色,并且支持多种编程语言,使得开发人员能够更加方便地进行数据处理和分析。

除了存储和处理,数据的采集和摄入同样不容忽视。

Flume、Kafka 等工具常用于数据的采集和传输。

Flume 能够从各种数据源(如日志文件、网络流量等)收集数据,并将其传输到指定的存储系统中。

Kafka则是一个分布式的消息队列系统,能够实现高吞吐量的数据传输和缓冲,确保数据的可靠摄入和处理。

大数据处理与分析的框架和应用

大数据处理与分析的框架和应用

大数据处理与分析的框架和应用近年来,数据量的爆炸式增长已成为业界和国家关注的热点话题。

为了更好地应对数据量的增长,大数据处理和分析的框架受到了广泛关注和应用。

本文将介绍大数据处理和分析的框架以及其在不同行业中的应用。

一、大数据处理和分析的框架1. Apache HadoopApache Hadoop是一个开源的大数据处理框架,主要用于存储和处理分布式数据,具有高可靠性、高可扩展性和低成本等优点。

Hadoop中的两个核心组件是Hadoop Distributed File System (HDFS)和MapReduce,其中HDFS是一种文件系统,而MapReduce则是一种数据处理程序。

2. Apache SparkApache Spark是另一个开源的大数据处理框架,主要用于实时数据处理和分析。

相对于Hadoop的MapReduce,Spark的处理速度更快,更适合处理实时数据。

Spark也支持批量数据处理和数据流处理。

3. Apache FlinkApache Flink是一种流式数据处理框架,与Spark类似,可以用于处理实时数据和批量数据。

与Spark不同的是,Flink使用基于流的计算模型,可以实时处理数据流,而不需要对数据进行缓存。

Flink提供了丰富的API和使用场景,包括批量数据处理、数据流处理、迭代计算等。

二、大数据处理和分析在不同行业中的应用1. 金融行业在金融行业中,大数据处理和分析可以用于风险评估、欺诈检测、客户关系管理等方面。

通过分析交易记录、用户行为和市场数据,可以帮助金融机构预测市场走势和客户需求,从而优化业务流程和提高盈利能力。

2. 医疗行业在医疗行业中,大数据处理和分析可以用于医学研究、药物开发、医疗服务优化等方面。

通过分析患者数据、药物试验数据和疾病数据,可以帮助医疗机构提高治疗效果和服务质量,优化药物研发流程。

3. 零售行业在零售行业中,大数据处理和分析可以用于市场营销、供应链管理、投资预测等方面。

大数据和数据分析的技术框架

大数据和数据分析的技术框架

大数据和数据分析的技术框架随着互联网的快速发展和智能设备的普及,大数据和数据分析成为推动社会进步和经济发展的重要力量。

大数据指的是规模庞大、类型多样、处理速度快的数据集合,而数据分析则是通过对大数据的采集、处理和分析,从中提取有价值的信息和洞察。

大数据和数据分析的技术框架是支撑其实现的关键。

在这个框架中,有几个核心要素:数据采集、数据存储、数据处理和数据分析。

这些要素相互依赖、相互作用,构成了大数据和数据分析的技术生态系统。

首先,数据采集是大数据和数据分析的基础。

数据采集包括数据的获取、传输和存储。

在互联网时代,数据来源多种多样,可以是传感器、社交媒体、移动应用、电子商务平台等。

数据的传输和存储则需要依赖网络和云计算等技术,确保数据的安全和可靠性。

其次,数据存储是大数据和数据分析的关键环节。

大数据的存储需要解决数据量大、数据类型多样和数据访问速度快的问题。

传统的关系型数据库已经无法满足大数据存储的需求,因此出现了一系列新的数据存储技术,如分布式文件系统、列式数据库和内存数据库等。

这些技术可以将数据分布在多个节点上,提高数据的处理和访问效率。

数据处理是大数据和数据分析的核心环节。

数据处理包括数据清洗、数据集成、数据转换和数据加载等步骤。

数据清洗是指对数据进行去重、去噪、填充缺失值等处理,以保证数据的质量和一致性。

数据集成是将来自不同来源的数据进行整合和融合,以便进行后续的分析。

数据转换是将数据从一种格式转换为另一种格式,以适应不同的分析需求。

数据加载是将数据导入到数据存储系统中,以供后续的分析和查询。

最后,数据分析是大数据和数据分析的核心任务。

数据分析包括描述性分析、预测性分析和决策性分析等多个层次和领域。

描述性分析是对数据进行统计和概述,以了解数据的特征和趋势。

预测性分析是基于历史数据和模型,对未来进行预测和预测。

决策性分析是基于数据分析的结果,对问题进行分析和决策。

除了核心要素外,大数据和数据分析的技术框架还需要考虑数据安全、数据隐私和数据伦理等问题。

大数据分析解决方案

大数据分析解决方案

大数据分析解决方案引言随着数据量不断增长,大数据分析已经成为许多企业和组织的重要需求。

通过大数据分析,企业可以发现隐藏在海量数据中的有价值信息,从而做出更明智的决策。

然而,大数据分析并不是一项简单的任务,它涉及到处理和分析庞大的数据集,需要强大的计算和存储能力,以及先进的算法和工具。

因此,为了解决这些挑战,需要采用一套完整的大数据分析解决方案。

解决方案概览大数据分析解决方案主要包括数据采集、数据存储、数据处理和数据可视化四个主要步骤。

下面将对每个步骤进行详细介绍。

数据采集数据采集是大数据分析的第一步,也是非常关键的一步。

在数据采集阶段,需要从各种数据源中收集数据,并将其转化为可供分析的格式。

常见的数据源包括数据仓库、传感器、日志文件、社交媒体等。

为了实现高效的数据采集,可以使用各种数据采集工具和技术,如爬虫、ETL(Extract-Transform-Load)工具等。

数据存储数据存储是指将采集到的数据存储在适当的存储系统中,以便后续的数据处理和分析。

由于大数据的特点,传统的关系型数据库往往无法满足存储需求。

因此,大数据分析解决方案通常采用分布式存储系统,如Hadoop Distributed File System (HDFS)和Amazon S3等。

这些分布式存储系统可以提供高容量、高可靠性和高扩展性的数据存储能力。

数据处理数据处理是大数据分析的核心步骤之一,它涉及到处理和分析庞大的数据集。

为了实现高效的数据处理,可以采用并行计算和分布式计算技术。

常见的数据处理工具和框架包括Hadoop、Spark等。

这些工具和框架提供了丰富的数据处理算法和函数库,可以帮助用户进行复杂的数据分析和挖掘。

数据可视化数据可视化是将分析结果以可视化的方式展示给用户的过程。

通过数据可视化,用户可以更直观地理解和探索数据。

常见的数据可视化工具和技术包括Tableau、Power BI等。

这些工具提供了丰富的图表和图形,可以帮助用户设计出美观而又易懂的数据可视化界面。

大数据分析的三大框架和实践案例

大数据分析的三大框架和实践案例

大数据分析的三大框架和实践案例随着信息技术的发展,大数据已经成为了当今世界不可忽视的一个风口。

如何通过大数据的分析来推动产业的发展,提高效率和精准度,成为了各行各业中的热门话题。

在这样的背景下,大数据分析的三大框架——数据采集、数据处理和数据分析,以及具体的应用案例备受关注。

本文将分别阐述这三大框架的基本原理和相应的应用案例。

一、数据采集数据采集是大数据分析的第一步,目的是从各种来源获取尽可能大量的数据,同时保证数据的准确性和完整性。

这个过程涉及到多方面的因素,如数据源选择、数据的清洗和标准化等。

其中,数据源选择是关键的一步,正确的选择数据源能够极大地提高数据的可靠性和有效性。

以航空安全为例,数据源可包括机场大屏幕的实时信息、航空公司官方网站的航班信息、机场运管系统的航班实际信息等。

为了确保结果的准确性,我们应该同时采用多个数据源,通过数据清洗和标准化排除冗余数据和不必要的信息。

二、数据处理数据处理通常包括数据存储和数据分析两个部分。

其中数据存储包括数据的存储方式、对数据的索引和检索以及数据的备份等。

数据分析包括数据的分类、分析、挖掘和预测等,涵盖了大数据分析中的核心部分。

数据的存储方式通常分为分布式存储和关系型数据库。

分布式存储具有高可靠性、大容量等优势,适合数据量较大、更新较频繁的领域,如电商等。

关系型数据库则更适合数据量较小、更新不频繁的场景。

基于数据存储的实现,我们可以对数据进行分类、分析和挖掘。

基于分类、分析的结果可以进行预测,以实现线性或非线性的趋势分析。

三、数据分析数据分析是大数据分析中最核心、也最具挑战性的部分。

它包括数据的探索性分析、相关性分析和预测分析等。

数据探索性分析可以标识出数据中的异常、离群值,帮助我们抓住关键指标。

相关性分析可以帮助我们发现变量之间的关系、变化趋势和问题根源。

预测分析则可以为我们提供未来行动计划。

在不同的领域中,数据分析的应用场景也有所不同。

以医疗领域为例,分析医疗系统中的海量数据能够有助于“精准医疗”的实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大数据处理框架选型分析前言说起大数据处理,一切都起源于Google公司的经典论文:《MapReduce:Simplied Data Processing on Large Clusters》。

在当时(2000年左右),由于网页数量急剧增加,Google公司内部平时要编写很多的程序来处理大量的原始数据:爬虫爬到的网页、网页请求日志;计算各种类型的派生数据:倒排索引、网页的各种图结构等等。

这些计算在概念上很容易理解,但由于输入数据量很大,单机难以处理。

所以需要利用分布式的方式完成计算,并且需要考虑如何进行并行计算、分配数据和处理失败等等问题。

针对这些复杂的问题,Google决定设计一套抽象模型来执行这些简单计算,并隐藏并发、容错、数据分布和均衡负载等方面的细节。

受到Lisp和其它函数式编程语言map、reduce思想的启发,论文的作者意识到许多计算都涉及对每条数据执行map操作,得到一批中间key/value对,然后利用reduce操作合并那些key值相同的k-v对。

这种模型能很容易实现大规模并行计算。

事实上,与很多人理解不同的是,MapReduce对大数据计算的最大贡献,其实并不是它名字直观显示的Map和Reduce思想(正如上文提到的,Map和Reduce思想在Lisp等函数式编程语言中很早就存在了),而是这个计算框架可以运行在一群廉价的PC机上。

MapReduce的伟大之处在于给大众们普及了工业界对于大数据计算的理解:它提供了良好的横向扩展性和容错处理机制,至此大数据计算由集中式过渡至分布式。

以前,想对更多的数据进行计算就要造更快的计算机,而现在只需要添加计算节点。

话说当年的Google有三宝:MapReduce、GFS和BigTable。

但Google三宝虽好,寻常百姓想用却用不上,原因很简单:它们都不开源。

于是Hadoop应运而生,初代Hadoop的MapReduce和HDFS即为Google的MapReduce和GFS的开源实现(另一宝BigTable的开源实现是同样大名鼎鼎的HBase)。

自此,大数据处理框架的历史大幕正式的缓缓拉开。

一、基础1.大数据的定义“大数据”一词的确切定义其实是很难给出的,因为不同的人(供应商、从业者、商业公司等)对它的理解也并不完全一致。

通常来讲,大数据是:- 大数据集- 用于处理大数据集的某类技术此处的“大数据集”是指一个数据集的数据量太大以至于无法使用传统工具或单机方式来处理和存储,而处理技术包括数据接入、数据持久化存储、数据计算和分析、数据展示(可视化)等等。

2.大数据的特征大数据系统的基本需求与传统系统并没有本质上的不同。

但大数据系统虽然具有海量的数据规模,但是对数据的接入和处理速度上也有较高的要求,而且在每个阶段都要对数据进行处理。

这些特点还是为设计解决方案时提供了新的挑战。

在2001年,美国Gartner公司的Doug Laney首先提出了“3V”模型来描述大数据处理系统与传统数据处理系统的不同:Volume待处理数据的规模在很大程度决定了系统是否为大数据系统。

大数据系统中的数据规模可能比传统处理系统中的数据集大几个数量级,这也为数据处理和存储带来了更多的挑战。

由于数据处理和存储等工作超出了单台计算机所能达到的性能极限,所以大数据系统通常采用集群方式。

集群方式更加考验资源的分配和协调,集群管理和任务分配算法变得越来越重要。

Velocity大数据与其他数据系统另一个显著的差异体现在数据的“流动”速度。

在大数据系统中,数据经常从多种数据源流入系统,并且以一种近实时的方式进行处理。

数据被持续不断的接入、修改、处理和分析以便能够跟得上新数据的接入速度。

由于近实时处理可以尽早的提供有价值的信息,目前很多商业公司更加青睐于实时处理系统而不是传统的批处理系统。

Variety大数据系统的问题通常是其他系统所不具备的,因为它所处理的数据来源广泛。

数据源可以是应用程序的日志信息,也可以是社交媒体的用户信息,甚至是物理设备传感器的采集数据。

不论何种数据,大数据系统的目标都是在海量数据中寻找有用的数据。

3.大数据处理流程那么大数据系统实际上是如何处理数据的呢?虽然不同公司的架构设计不尽相同,但我们可以总结出一个基本的流程。

下面介绍的流程虽然不是适用于所有情况,但它们确实被广泛使用。

大数据处理的基本流程是:- 接入数据到系统中- 将数据持久化到存储系统- 计算和分析数据- 展示结果(可视化)4.大数据处理框架的定义说完了大数据,我们来说说本文的重点——大数据处理框架。

大数据处理框架负责对大数据系统中的数据进行计算。

数据包括从持久存储中读取的数据或通过消息队列等方式接入到系统中的数据,而计算则是从数据中提取信息的过程。

除了大数据处理框架,有些同学可能还听到过“大数据计算框架”、“大数据框架”,这些术语没有严格的区分,但基本可以理解为是一种东西,只不过是对“big data processing framework”不同的翻译(大数据框架是“big data framework”的翻译)。

还有一个名词是“大数据处理引擎”,那么这个“引擎”和我们说的“框架”又有什么关系呢?其实并没有区分他们的权威的定义,但一般来说,前者是实际负责处理操作的组件,而后者可以理解为用来完成同样工作的一系列组件。

比如Apache Hadoop可以看做是以MapReduce为默认处理引擎的处理框架。

二、数据处理框架分类不论是系统中存在的历史数据,还是持续不断接入系统中的实时数据,只要数据是可访问的,我们就可以对数据进行处理。

按照对所处理的数据形式和得到结果的时效性分类,数据处理框架可以分为两类:- 批处理系统- 流处理系统批处理是一种用来计算大规模数据集的方法。

批处理的过程包括将任务分解为较小的任务,分别在集群中的每个计算机上进行计算,根据中间结果重新组合数据,然后计算和组合最终结果。

当处理非常巨大的数据集时,批处理系统是最有效的。

典型的批处理系统就是Apache Hadoop。

而流处理则对由连续不断的单条数据项组成的数据流进行操作,注重数据处理结果的时效性。

典型的流处理系统有Apache Storm,Apache Samza。

还有一种系统,同时具备批处理与流处理的能力,这种称为混合处理系统,比如Apache Spark,Apache Flink。

接下来我们来详细介绍这三种处理系统。

三、批处理系统批处理系统在大数据世界中有着悠久的历史。

批处理系统主要操作大量的、静态的数据,并且等到全部处理完成后才能得到返回的结果。

批处理系统中的数据集一般符合以下特征:- 有限:数据集中的数据必须是有限的(无限的数据一批就处理不完了啊。

连续不断的数据一般会使用流处理系统来进行处理,我们后面会讲到)- 持久:批处理系统处理的数据一般存储在持久存储系统上(比如硬盘上、数据库中)- 海量:极海量的数据通常只能使用批处理系统来处理。

批处理系统在设计之初就充分的考虑了数据量巨大的问题,实际上批处理系统也是为此而生的。

由于批处理系统在处理海量的持久数据方面表现出色,所以它通常被用来处理历史数据,很多OLAP (在线分析处理)系统的底层计算框架就是使用的批处理系统。

但是由于海量数据的处理需要耗费很多时间,所以批处理系统一般不适合用于对延时要求较高的场景。

Apache Hadoop说起大数据处理框架,永远也绕不开Hadoop。

Hadoop是首个在开源社区获得极大关注的大数据处理框架,在很长一段时间内,它几乎可以作为大数据技术的代名词。

在2.0版本以后,Hadoop由以下组件组成:- Hadoop分布式文件系统HDFS:HDFS是一种分布式文件系统,它具有很高的容错性,适合部署在廉价的机器集群上。

HDFS能提供高吞吐量的数据访问,非常适合在大规模数据集上使用。

它可以用于存储数据源,也可以存储计算的最终结果。

- 资源管理器YARN:YARN可以为上层应用提供统一的资源管理和调度,它可以管理服务器的资源(主要是CPU和内存),并负责调度作业的运行。

在Hadoop中,它被设计用来管理MapReduce 的计算服务。

但现在很多其他的大数据处理框架也可以将YARN作为资源管理器,比如Spark。

- MapReduce:即为Hadoop中默认的数据处理引擎,也是Google的MapReduce论文思想的开源实现。

使用HDFS作为数据源,使用YARN进行资源管理。

从今天的眼光来看,MapReduce作为Hadoop默认的数据处理引擎,存在着很多的不足。

比如:编程模型抽象程度较低,仅支持Map和Reduce两种操作,需要手工编写大量的代码;Map的中间结果需要写入磁盘,多个MR之间需要使用HDFS交换数据,因此不适合迭代计算(机器学习、图计算);任务的启动和调度开销较大等。

随着更多高性能处理引擎的发展,目前在企业中使用MapReduce进行计算的应用已经呈下降趋势(HDFS及YARN仍然被广泛使用),但虽然如此,MapReduce作为最早的大数据处理引擎,仍然值得被我们铭记。

四、流处理系统批处理系统好理解,那什么是流处理系统呢?小学的时候我们都做过这么一道数学题:一个水池有一个进水管和一个出水管,只打开进水管8个小时充满水,只打开出水管6个小时流光水,那么同时打开进水管和出水管,水池多长时间充满水?好吧,这道题的答案是永远也充不满……因为出水管出水比较快嘛。

流处理系统就相当于这个水池,把流进来的水(数据)进行加工,比如加盐让它变成盐水,然后再把加工过的水(数据)从出水管放出去。

这样,数据就像水流一样永不停止,而且在水池中就被处理过了。

所以,这种处理永不停止的接入数据的系统就叫做流处理系统。

流处理系统与批处理系统所处理的数据不同之处在于,流处理系统并不对已经存在的数据集进行操作,而是对从外部系统接入的的数据进行处理。

流处理系统可以分为两种:- 逐项处理:每次处理一条数据,是真正意义上的流处理。

- 微批处理:这种处理方式把一小段时间内的数据当作一个微批次,对这个微批次内的数据进行处理。

不论是哪种处理方式,其实时性都要远远好于批处理系统。

因此,流处理系统非常适合应用于对实时性要求较高的场景,比如日志分析,设备监控、网站实时流量变化等等。

由于很多情况下,我们想要尽快看到计算结果,所以近些年流处理系统的应用越来越广泛。

下面我们来了解两种流处理系统。

Apache StormApache Storm是一种侧重于低延迟的流处理框架,它可以处理海量的接入数据,以近实时方式处理数据。

Storm延时可以达到亚秒级。

Storm含有如下关键概念:- Topology:Storm topology中封装了实时应用程序的逻辑。

相关文档
最新文档