做网站多少,东莞网站建设公司注册,怎样用文档做网站首页,怎么做房产网站快来看看他们是如何工作的#xff01; 本文的某些部分摘自我的书《 Apache Ignite的高性能内存计算》 。 如果您对这篇文章感兴趣#xff0c;请查看本书的其余部分#xff0c;以获取更多有用的信息。 Apache Ignite提供了几种提高Spark作业性能的方法#xff1a;Ignite RD… 快来看看他们是如何工作的 本文的某些部分摘自我的书《 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支持两种类型的操作 转换从现有数据集中创建新数据集 动作通过对RDD进行计算来返回值如下图所示 通过使用Spark转换功能来创建Spark RDD。 Spark转换功能可以从各种来源例如文本文件创建Spark RDD。 除了从文本文件创建Spark RDD外还可以从外部存储例如RDBMSHBaseCassandra或与Hadoop输入格式兼容的任何其他数据源创建Spark RDD。 大多数时候Spark RDD会从一个RDD转换为另一个新的Spark RDD以便为将来的处理准备数据集。 让我们考虑一下Spark中的以下数据转换步骤 加载文本文件其中包含RDD1中任何机场的航空公司名称和到达时间。 将包含任何机场的航空公司名称和航班延误信息的文本文件加载到RDD2中。 通过航空公司名称将RDD1和RDD2加入以获得RDD3。 映射到RDD3以获得每个航空公司的RDD4不错的报告。 将RDD4保存到文件。 映射RDD2以提取某些航空公司的航班延误信息以获取RDD5。 将RDD5汇总起来就可以算出每家航空公司的延误航班数为RDD6。 将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。 IgniteContext IgniteContext是Spark-Ignite集成的主要入口点。 要创建Ignite上下文的实例用户必须提供SparkContext的实例和创建IgniteConfiguration配置工厂的闭包。 Ignite上下文将确保所有涉及的作业实例中都存在服务器或客户端Ignite节点。 或者可以将XML配置文件的路径传递给IgniteContext构造函数该构造函数将用于正在启动的节点。 IgniteRDD IgniteRDD是Spark RDD抽象的实现表示Ignite缓存的实时视图。 IgniteRDD并非一成不变 Ignite缓存中的所有更改无论它们是由另一个RDD还是由缓存的外部更改引起的都将立即对RDD用户可见。 IgniteRDD利用Ignite缓存的分区性质并将分区信息提供给Spark执行程序。 IgniteRDD中的分区数量等于基础Ignite缓存中的分区数量。 IgniteRDD还通过以下方式向Spark提供关联信息 getPrefferredLocations以便RDD计算使用数据局部性。 在本系列的下一部分中我们将安装Apache Spark并执行以下操作 跑过 wordcount示例来验证Spark安装。 配置Apache Ignite以在Spark应用程序之间共享RDD。 通过Spark Shell运行Spark应用程序以使用Ignite RDD。 开发一个Scala Spark应用程序将一些Ignite RDD放入Ignite群集中然后从另一个Scala Spark应用程序中提取它们。 翻译自: https://www.javacodegeeks.com/2017/12/optimizing-spark-job-performance-apache-ignite-part-1.html