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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python爬取网站的图片

python爬取网站的图片 本次爬取图片所需要用到的库:Requests库,BeautifulSoup库,正则表达式,os库。 思路:先爬一张图片,再爬一个网站的图片 先爬一张图片: 首先要得到这张图片的地址&#x…

用户登陆_华为路由器AAA用户密码登陆你了解吗?

AAA Authentication(认证)、Authorization(授权)、Accounting()它提供了认证、授权、计费三种安全功能,可以验证用户帐户是否合法,授权用户可以访问的服务,并记录用户使用网络资源的…

word域变成正常文本_【Word小技巧】不学会后悔哦~

工作中使用Word早已成了习惯,因此,今天小编将为大家分享几个实用的的Word小技巧。重叠字快速录入文字录入是word最基本操作,过程中我们难免要输入重叠字,例如:热热闹闹,卿卿我我等……你知道如何快速录入吗…

sql server 2008 年累计数_Windows Server 2008 和 SQL Server 2008将终止支持 迁移至Azure 微软提供3年免费技术支持...

点击上方蓝色字关注我们~迁移至 Azure 并利用免费扩展安全更新。了解有关支持终止建议的更多信息,请使用浏览器访问:https://www.microsoft.com/zh-cn/sql-server/sql-server-2008.对您意味着什么1 2017年基于风险的安全报告; 思科 2017 年度网络安全报告…

旧版Requests库

requests库基本使用Requests解析库方法response对象response对象的属性**r.encoding**属性与**r.apparent_encoding**属性的区别requests库的异常举例Requests解析库 方法 最常用的两个方法: request.get() request.post() 作用:都是从服务器获取网页信息 区别&…

夸克浏览器怎么安装脚本_iOS 第一浏览器发布安卓版,除了真香我还能说什么...

如果不算 Safari 的话,iOS 平台公认最好的浏览器是 Alook。无推送无新闻无广告、日常售价 12 元、工具类排行第三、7.8 万个评分足以证明其优秀。以至于很多双持或对 Alook 有所了解的用户都希望 Alook 能推出安卓端。现在安卓端真的来了。(安卓端免费)假如这个时候…

Windows 10 笔记本如何使用外接显示器

文章目录如何连接外接显示屏如何设置显示模式如何设置不同显示屏各自的分辨率如何设置主显示器通过显卡来设置显示器如何连接外接显示屏 VGA 线或者 HDMI 线连接好电脑和显示器,以 HDMI 线为例简单讲下吧。 显示器可能会有多个 HDMI 接口,假设你插入 H…

蓝牙信号强度检测app_基于蓝牙技术的智能插座方案

有这样一句话“科技时代,生活轻快”。随着社会现代化程度越来越高,科技的应用为人们的生活带来便捷,大大提高了工作效率。纵观市场上“智能家居”产品很多,功能各异,各有千秋,但是针对家电控制的智能插座还…

图片清晰度,分辨率,像素总结

像素 像素是一个个小方块,是构成位图的基本单位。将图片放大即可看出来,如图: 分辨率 显示分辨率是指像素的总数量,如上图的22001400,也就是宽有2200个像素,高有1400个像素。 图像分辨率是指每英寸所包含…

apache isis_使用Apache Isis快速进行SEMAT应用程序开发

apache isisTL; DR这是关于一个帖子会谈SEMAT宠物项目我创建使用Apache伊希斯和部署到OpenShift在线这里http://semat.ofbizian.com Apache Isis 作为主要在后端系统上工作的Java开发人员,我讨厌创建用户界面和处理Java脚本。 幸运的是,有一些Java项目&…