apache ignite_使用Apache Ignite优化Spark作业性能(第1部分)

apache ignite

来看看他们是如何工作的!

本文的某些部分摘自我的书《 Apache Ignite的高性能内存计算》 。 如果您对这篇文章感兴趣,请查看本书的其余部分,以获取更多有用的信息。

Apache Ignite提供了多种方法来提高Spark作业的性能:Ignite RDD(将Ignite缓存表示为Spark RDD抽象)和Ignite IGFS(可透明地插入Spark部署中的内存文件系统)。 Ignite RDD允许轻松地在不同的Spark作业或应用程序之间共享内存中的状态。 使用Ignite内存共享RDD,任何Spark作业都可以将一些数据放入Ignite缓存中,其他Spark作业以后可以访问。 Ignite RDD是作为Ignite分布式缓存上的视图实现的,该缓存可以部署在Spark作业执行过程中或Spark工作者上。

在继续讨论更高级的主题之前,让我们看一下Spark的历史以及Ignite RDD可以解决哪些类型的问题。

AMPLab发明了Apache Spark来进行快速计算。 它建立在Hadoop MapReduce之上,并扩展了MapReduce模型以有效使用更多类型的操作,例如交互式查询和流处理。

Spark和Hadoop MapReduce之间的主要区别在于,在执行过程中,Spark尝试将数据保留在内存中,而Hadoop MapReduce将数据随机混入和移出磁盘。 Hadoop MapReduce花费大量时间将中间数据写入磁盘并回读。 消除了这些冗余磁盘操作,使Spark幅值更快。 Spark可以将数据(中间)存储在内存中,而无需任何I / O,因此您可以非常快速地对相同数据进行操作。

为了将数据存储到内存中,Spark提供了名为Spark RDD的特殊数据集。 Spark RDD代表Spark弹性分布式数据集。 Spark RDD具有Apache Spark大规模数据处理框架的基本组件。 下图显示了Spark RDD上的迭代操作。

请注意,上图是从Spark文档获得的。 Spark RDD是一个不变的,容错的分布式数据元素集合。 您可以将Spark RDD想象为内存中的Hadoop HDFS。 Spark RDD支持两种类型的操作:

  1. 转换,从现有数据集中创建新数据集
  2. 动作,通过在RDD上执行计算来返回值(如下图所示)

通过使用Spark转换功能来创建Spark RDD。 Spark转换功能可以从各种来源(例如文本文件)创建Spark RDD。 除了从文本文件创建Spark RDD外,还可以从外部存储(例如RDBMS,HBase,Cassandra或与Hadoop输入格式兼容的任何其他数据源)创建Spark RDD。

大多数时候,Spark RDD会从一个RDD转换为另一个新的Spark RDD,以便为将来的处理准备数据集。 让我们考虑一下Spark中的以下数据转换步骤:

  1. 加载文本文件,其中包含RDD1中任何机场的航空公司名称和到达时间。
  2. 将包含任何机场的航空公司名称和航班延误信息的文本文件加载到RDD2中。
  3. 通过航空公司名称将RDD1和RDD2加入,以获得RDD3。
  4. 映射到RDD3可以得到每个航空公司的RDD4不错的报告。
  5. 将RDD4保存到文件。
  6. 映射RDD2以提取某些航空公司的航班延误信息,以获得RDD5。
  7. 将RDD5汇总起来,就可以算出每家航空公司的延误航班数为RDD6。
  8. 将RDD6保存到HDFS中。

Spark RDD用于通过Spark动作对RDD数据集执行计算,例如
count
reduce 。 但是Spark RDD有一个问题:Spark RDD无法在Spark Jobs或SparkContext之间共享,因为Spark RDD已绑定到Spark应用程序。 使用本机Spark分发,在不同Spark作业之间共享RDD的唯一方法是将数据集写入HDFS或文件系统中的某个位置,然后将RDD放入其他作业中。 但是,使用Alluxio(以前称为Tachyon)或Apache Ignite可以实现相同的功能。

Apache Ignite的以内存为中心的体系结构以非常有效的方式实现了RDD共享。 Apache Ignite提供IgniteContext和IgniteRDD在Spark应用程序之间共享RDD。

  1. IgniteContext :IgniteContext是Spark-Ignite集成的主要入口点。 要创建Ignite上下文的实例,用户必须提供SparkContext的实例和创建IgniteConfiguration(配置工厂)的闭包。 Ignite上下文将确保所有涉及的作业实例中都存在服务器或客户端Ignite节点。 或者,可以将XML配置文件的路径传递给IgniteContext构造函数,该构造函数将用于正在启动的节点。
  2. IgniteRDD :IgniteRDD是Spark RDD抽象的实现,表示Ignite缓存的实时视图。 IgniteRDD并非一成不变; Ignite缓存中的所有更改(无论它们是由另一个RDD还是由缓存中的外部更改引起)都将立即对RDD用户可见。 IgniteRDD利用Ignite缓存的分区性质,并将分区信息提供给Spark执行程序。 IgniteRDD中的分区数量等于基础Ignite缓存中的分区数量。 IgniteRDD还通过以下方式向Spark提供关联信息
    getPrefferredLocations以便RDD计算使用数据局部性。

在本系列的下一部分中,我们将安装Apache Spark并执行以下操作:

  1. 跑过
    wordcount示例来验证Spark安装。
  2. 配置Apache Ignite以在Spark应用程序之间共享RDD。
  3. 通过Spark Shell运行Spark应用程序以使用Ignite RDD。
  4. 开发一个Scala Spark应用程序,将一些Ignite RDD放入Ignite群集中,然后从另一个Scala Spark应用程序中提取它们。

翻译自: https://www.javacodegeeks.com/2017/12/optimizing-spark-job-performance-apache-ignite-part-1.html

apache ignite

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 unrar -- 解压 rar 格式的文件

文章目录一、命令介绍二、常用选项三、命令示例(一)按完整路径解压指定的压缩包到当前目录下(二)按完整路径且不覆盖已存在文件的方式解压指定的压缩档案到指定的目录下一、命令介绍 需要安装 rarlinux 才能使用该命令&#xff0…

微软家庭服务器,微软公布Windows Server 2012版本方案,不再提供家庭服务器版

微软官方网站今日公布Windows Server 2012将有四个版本,分别为Foundation、Essentials、Standard以及Datacenter。其中Foundation只供给原始设备制造商(OEM);Essentials适合中小企业使用,最大用户数为25个;Standard与Datacenter版…

eclipse创建神经网络_使用Eclipse Deeplearning4j构建简单的神经网络

eclipse创建神经网络神经网络导论 深度学习包含深度神经网络和深度强化学习,它们是机器学习的子集,而机器学习本身就是人工智能的子集。 广义地说,深度神经网络执行机器感知,该机器感知从原始数据中提取重要特征,并对每…

Linux 命令之 rar -- 压缩/解压文件

文章目录一、命令介绍二、子命令三、常用选项四、命令示例(一)压缩指定文件或者更新压缩包内指定的文件(二)压缩指定目录下的内容(不含目录本身)(三)创建自解压文件(四&a…

python 马赛克还原_卷积神经网络教你如何还原被马赛克的文本图像

对人类来说,将带有文字的图像锐化是很容易的。以图1为例。图1:被锐化的图像把图1恢复为图2也不是件很困难的事。图2:原图然而,我们是懒惰的,并且不想这样做,所以我们尝试用神经网络来自动实现图片的不模糊化…

angluar cdk_零分钟即可在容器开发套件(CDK)上实现云运营

angluar cdk尽管这很有趣,但是它实际上并不可行,并且很快就遇到了使用限制。前一段时间, 我逐步完成了在容器中安装称为CloudForms的云管理解决方案。 真正的解决方案是将这个示例放入Red Hat Demo Central集合中,并将其放在基于…

Linux 系统下载和安装 rarlinux

文章目录红帽系的 Linux下载已经编译好的软件包下载程序的源代码软件包Debian Linux安装过程常遇到的问题rarlinux 下载地址:http://www.rarlab.com/download.html rarlinux 相关命令使用说明,猛戳《Linux 系统下命令 unrar 的中文版使用说明》 红帽系的…

腾讯面试编程题python_腾讯面试官出的 2 道经典数据分析面试题

没想到这篇文章这么受欢迎,那就再分享一篇:苏克1900:腾讯高级数据分析师:十年分析之路的力荐书籍​zhuanlan.zhihu.com以下原文章:近期暑期实习和提前批招聘已经开始了,不论你是校招还是想社招,…

Linux 系统下命令 unrar 的英文版使用说明

查看中文版&#xff0c;猛戳《Linux 系统下命令 unrar 的中文版使用说明》 UNRAR 5.40 freeware Copyright (c) 1993-2016 Alexander RoshalUsage: unrar <command> -<switch 1> -<switch N> <archive> <files...> <listfiles...&g…

网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常

网络研讨室1月30日参加我们的网络研讨会&#xff0c;以发现Java应用程序中的“隐藏”异常。 如果一棵树落在森林中&#xff0c;但是没有写到原木上&#xff0c;它会发出声音吗&#xff1f; 答案是肯定的。 这些类型的错误可能会对用户体验造成严重影响&#xff0c;而没有根本原…

java8默认内存收集器_使用正确的垃圾收集器将Java内存使用量降至最低

java8默认内存收集器大小对于软件至关重要。 很明显&#xff0c;与大的整体方法相比&#xff0c;在微服务体系结构中使用小片段具有更多优势。 最新的Java版本的Jigsaw有助于分解旧应用程序或从头开始构建新的云原生应用程序。 这种方法减少了磁盘空间&#xff0c;构建时间和启…

oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?

问&#xff1a;类的成员函数可以传入线程参数吗&#xff1f;回答&#xff1a;如果c语言的全局函数&#xff0c;可以。如果是类的静态成员函数&#xff0c;可以如果是类的普通成员函数&#xff0c;不可以为什么&#xff1f;《深入探索C对象模型》中提到成员函数时&#xff0c;当…

Linux 系统下命令 unrar 的中文版使用说明

查看英文版&#xff0c;猛戳《Linux 系统下命令 unrar 的英文版使用说明》 $ rar --help用法: rar <命令> -<选项 1> -<选项 N> <压缩档案> <文件...> <文件列表...> <解压缩路径\><命令> a 添加文件到压缩档案 …

如何使用 MySQL 安装后自带的帮助文档

文章目录一、查询帮助文档二、MySQL 相关资源网址一、查询帮助文档 输入命令 ? contents 或者 help contents 来显示所有可供查询的分类&#xff1a; mysql> ? contents; You asked for help about help category: "Contents" For more information, type help…

java设置并行度_控制Java并行流的并行度

java设置并行度在掌握了这些新功能之后&#xff0c;随着Java 9的最新发布&#xff0c;我们有了许多新功能可以用来改进我们的解决方案。 Java 9的发布也是修改我们是否掌握Java 8功能的好时机。 在这篇文章中&#xff0c;我想解决关于Java并行流的最常见的误解。 人们通常说您…

flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...

简介&#xff1a; 友信金服公司推行全域的数据体系战略&#xff0c;通过打通和整合集团各个业务线数据&#xff0c;利用大数据、人工智能等技术构建统一的数据资产&#xff0c;如 ID-Mapping、用户标签等。友信金服用户画像项目正是以此为背景成立&#xff0c;旨在实现“数据驱…

MySQL 如何将数据表中字符串类型的字段值中的部分字符串替换掉(字符串替换/字符串拼接/生成 SQL 脚本语句)

使用拼接函数(concat)生成更新某字段值的 SQL 脚本语句 一、生成更新字段 logo 的 SQL 脚本语句如下: select concat( update tf_company set logo=, replace(logo,http://www.dpqyw.com:80,http://www.dpqyw.com), ,where company_id=,company_id,

apache pulsar_Apache Pulsar:分布式Pub-Sub消息系统

apache pulsarApache Pulsar是一个开源的分布式pub-sub消息传递系统&#xff0c;最初是由Yahoo创建的&#xff0c;并且是Apache Software Foundation的一部分 。 Pulsar是用于服务器到服务器消息传递的多租户高性能解决方案。 脉冲星的主要功能包括[4]&#xff1a; 对Pulsar…

python deque索引超出范围_Python基础语法

学习Python的四个要素有数据&#xff0c;函数&#xff0c;条件循环和模块一、数据数据是Python编程过程中的原材料&#xff0c;通过导入数据&#xff0c;对数据进行操作&#xff0c;实现预先设想的功能。数据共有5种类型&#xff0c;分别是字符串、数字、容器、布尔值和空值。字…

Path环境变量的理解以及设置MinGW环境变量

配置path环境变量 在使用MinGW的时候&#xff0c;不小心把path变量的东西全部删掉了&#xff0c;结果只能自己重新设置path变量&#xff0c;首先要知道如何设置path变量。 Path路径&#xff1a;用来指定可执行文件的搜索路径&#xff0c;也就是后缀名为.exe文件&#xff0c;方…