热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark中的流数据处理方案

本文介绍了在星环大数据平台TDH中实现实时数据处理的原理.1. 什么是流数据?流式处理中假定流入系统的数据是持续不断的。它具有以下几个特点:数据实时到达;数据到达次序独立,不受应用

本文介绍了在星环大数据平台TDH中实现实时数据处理的原理.

1.  什么是流数据?

流式处理中假定流入系统的数据是持续不断的。它具有以下几个特点:

数据实时到达;

数据到达次序独立,不受应用系统所控制;

数据规模宏不能预知其最大值;

数据一经处理,除非特意保存,否则不能被再次取出处理,或者再次提取数据代价昂贵。

流数据在网站监控和网络监控;、信息系统异常检测、网页监控和金融服务等应用领域广泛出现,通过对流数据研究可以进行卫星云图监测、股市走向分析、网络攻击判断等。

在实际应用中,流数据的来源繁多,包括:TCP socket,Kafka,Flume,Twitter等。流数据通过Spark核心API、DataFrame SQL或者机器学习API处理,并可以持久化到本地文件、HDFS、数据库或者其它任意支持Hadoop输出格式的形式。

《Spark中的流数据处理方案》

图:数据流向示意图

2.流数据处理框架

在Spark技术被广泛接受之前,数据处理中的一大难题就是如何将批处理和实时处理结合起来。为了解决这个难题,人们提出了很多解决方案。随着Spark技术的发展,流数据计算系统和全量计算系统的统一成为了可能。Spark本身可以用于批处理,而构建在Kappa架构之上的Spark Streaming又可以用于实时计算,因此利用一套系统来应对批处理和实时计算相结合的业务完全是可行的。Kappa架构的核心思想包括以下三点:

用Kafka或者类似的分布式队列系统保存数据,可以任意指定数据量保存的天数。

当需要全量重新计算时,重新建立一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

当新的实例做完后,停止原有的流计算实例,并把原有的一些结果删除。

《Spark中的流数据处理方案》

图:Kappa架构图

如上图所示,假设系统通过Kafka接入实时数据(日志数据、json数据等),不同类型的实时数据通过Topic区分。在系统进行流数据处理时,指定不同的处理方法StreamJob给各个Topic。通过配置每隔一定时间会从Kafka消息队列中接收一批时序数据。这一批数据中包含了多个数据单元。当前批次的数据会被映射成一张二维关系表。通过流数据引擎处理的结果可以存在HBase等数据库中,也可以使用内存列式存储。应用程序可以通过SQL查询到处理结果,进行统计分析。

《Spark中的流数据处理方案》

图:流数据处理流程

3. 实时数据和批量数据混合处理方案

目前,大部分的实时信息分析系统的主要任务是要在不断产生的、海量的、格式多样的日常交易数据中快速发现问题,最好可以在问题发生时就发出预警。传统的数据库由于本身结构的限制,主要通过预设的条件,例如按月或按周的形式形成报表。这样就无法作到实时报警,快速反应。另一方面,单一使用流数据也无法利用所有有用的信息。一个高效的系统需要能够在综合利用历史存量数据的情况下,快速得到分析结果。

UDF (User-Defined Functions)是便于用户创建处理存储在Apache Hive中的数据的一种机制。用户可以自定义函数的输入输出参数。将UDF与StreamJob结合在一起使用可以实时的查询历史数据中相关内容用于实时数据的计算处理。随着UDF的不断演化,它可以被利用在其他Hadoop生态圈中的数据库上,例如:Hyperbase,Holodesk。虽然它的效率越来越高。在实际使用过程中,工程人员也要注意UDF的优化。

《Spark中的流数据处理方案》

图:实时数据和批量数据的混合处理

参考:

Transwarp – 新闻详情

Apache Kafka 


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
author-avatar
欢欢浮夸_704
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有