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

Spark系列1:开篇之组件云集

引言Spark是一种基于内存的开源计算框架,其设计的目的是全栈式的解决批处理、结构化查询、流计算、图计算和机器学习业务场景,其通用性还体现在对存储层(如:HDF

引言

Spark是一种基于内存的开源计算框架,其设计的目的是全栈式的解决批处理、结构化查询、流计算、图计算和机器学习业务场景,其通用性还体现在对存储层(如:HDFS)和资源管理层(Mesos、Yarn)的支持,基于在大数据处理领域的突出表现,使得Spark在医疗、电信、电商和金融等领域得到了快速推广和使用。

Spark的生态系统如图1.1所示,作为开源的分布式计算框架,Spark主要包括Spark Core和在Spark Core基础之上建立的应用框架Spark SQL、Spark Streaming、MLlib和GraphX。图1.1的生态系统被AMPlab称为伯克利数据分析栈,下边对其中主要组件进行简单介绍。

图1.1 Spark生态系统

   Spark    

 作为Spark生态系统的核心,Spark主要基于内存计算功能,不仅包含MapReduce,还包含其他很多算子,如reduceByKey、groupByKey、foreach、join和filter等,Spark将数据抽象成RDD,有效的扩充了Spark编程模型,同时Spark使用函数式编程语言scala,使编程更简洁高效。

Spark SQL


Spark SQL在设计之初是为了将Hive数据仓库移植到Spark平台(对Shark的优化),为了避免过于依赖HIve,Spark SQL仅依赖于HQL Parser、HIve metostore和Hive SerDe,由Hive解析器生成语法树,之后的查询过程有Spark计算框架完成。

在Spark1.3开始支持DataFrames,使得Spark SQL能够充当分布式SQL查询引擎,后续笔者会对其进行详细介绍。

Spark Streaming

作为Spark的流处理框架(准流处理),Spark Streaming具有可扩展性、高吞吐量和可容错性等特点,Spark Streaming输入的数据来源可以是Kafka、Flume、Twitter、ZeroMQ、Kinesis等消息系统,也可是是传统TCP传输的原始数据,经过Spark一些列算子(类似于批处理算子)处理以后,最终将结果存储到文件系统、数据库或者实时监控界面中。如图1.2所示:

图1.2  Spark Streaming的输入与输出


GraphX

GraphX是基于Spark的上层分布式图计算框架,主要处理社交网站等节点和边模型的问题,因为Spark能很好支持迭代计算,处理效率非常高,目前国内淘宝在图计算方面的应用较多,后续笔者会展开进行详细讨论。

MLlib

作为Spark在机器学习领域的重要应用,MLlib实现了逻辑回归、SVM、随机森林、K-means、奇异值分解等多种机器学习算法,充分发挥Spark在迭代计算上的优势,比传统的MapReduce模型要快一百倍以上,能对大规模的数据应用机器学习模型,能让机器学习算法在基于大数据的预测、推荐和模式识别等方面应用广泛。

Tachyon

在过去的Spark基于内存的计算的模式中往往所存在以下几个问题:

  • 当两个Spark作业需要共享数据时,必须通过写磁盘操作。比如:作业1要先把生成的数据写入HDFS,然后作业2再从HDFS把数据读出来。在此,磁盘的读写可能造成性能瓶颈。

  • 由于Spark会利用自身的JVM对数据进行缓存,当Spark程序崩溃时,JVM进程退出,所缓存数据也随之丢失,因此在工作重启时又需要从HDFS把数据再次读出。

  • 当两个Spark作业需操作相同的数据时,每个作业的JVM都需要缓存一份数据,不但造成资源浪费,也极易引发频繁的垃圾收集,造成性能的降低。

为了解决上述问题,Tachyon诞生了,Tachyon设计的主要目的是将计算功能与内存管理功能分离,使内存管理脱离JVM,这样的设计能提升Spark的计算效率。后续笔者会对Tachyon的原理进行详细的分析。





推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
  • 【漫画解析】数据已删,存储空间为何未减?揭秘背后真相
    在数据迁移过程中,即使删除了原有数据,存储空间却未必会相应减少。本文通过漫画形式解析了这一现象背后的真相。具体来说,使用 `mysqldump` 命令进行数据导出时,该工具作为 MySQL 的逻辑备份工具,通过连接数据库并查询所需数据,将其转换为 SQL 语句。然而,这种操作并不会立即释放存储空间,因为数据库系统可能保留了已删除数据的碎片信息。文章进一步探讨了如何优化存储管理,以确保数据删除后能够有效回收存储空间。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
author-avatar
tingting
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有