文档章节

Ignite 2.1.0新特性Durable Memory学习

Jeff_JYM
 Jeff_JYM
发布于 2017/09/11 17:05
字数 880
阅读 31
收藏 0
点赞 0
评论 0

Ignite自带存储 vs 第三方持久化

Apache Ignite Native Persistence has the following advantages over 3rd party stores (RDBMS, NoSQL, Hadoop) that can be used as an alternative persistence layer for an Apache Ignite cluster:

  • Ability to execute SQL queries over the data that is both in memory and on disk which means that Apache Ignite can be used as a memory-optimized distributed SQL database.
  • No need to have all the data and indexes in memory. The Ignite Persistence allows storing a superset of data on disk and only most frequently used subsets in memory.
  • Instantaneous cluster restarts. If the whole cluster goes down there is no need to warm up the memory by preloading data from the Ignite Persistence. The cluster becomes fully operational once all the cluster nodes are interconnected with each other.
  • Data and indexes are stored in a similar format both in memory and on disk that helps to avoid expensive transformations while the data sets are being moved between memory and disk.
  • An ability to create full and incremental cluster snapshots by plugging-in 3rd party solutions.

使用

打开这个Ignite native persistence的开关只需要传一个参数PersistentStoreConfiguration 到IgniteConfiguation中:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
  <!-- Enabling Apache Ignite Native Persistence. -->
  <property name="persistentStoreConfiguration">
    <bean class="org.apache.ignite.configuration.PersistentStoreConfiguration"/>
  </property>

  <!-- Additional setting. -->
 
</bean>

集群在启动过程中不能修改数据,否则有些节点被修改了有些还没有,就会出问题,这里需要控制,调用

// Activating the cluster once all the cluster nodes are up and running.
ignite.active(true);

默认文件路径为:

${IGNITE_HOME}/work

也可以用PersistentStoreConfiguration.setPersistentStorePath(...)来修改这个路径。

 

Write-Ahead Log (WAL)

当写入文件时,并不是实时更新的,应为会影响性能,所以会先加到WAL的尾端。

WAL的目的是为了将对文件的更新延迟,并且能够从单点故障或者整个集群故障中恢复,集群可以恢复到最新的成功提交的事务那里。

WAL分成好多段,然后填入的时候是按序列填入的,当地一个填满,这部分内容会被拷到WAL Archive并且保留被方法PersistentStoreConfiguration.walHistorySize定义好的一段时间。当第一段正在被拷贝到Archive的时候,第二段就变成活跃的WAL文件了,会接受从应用端过来的更新。默认会有十段。可以用PersistentStoreConfiguration.setWalSegmentSize来设置。

WAL是Ignite本地存储的精髓部分。主要角色是1尽可能快的更新磁盘,2恢复到一个稳定的状态。

 

CheckPointing

鉴于WAL的天性,它会持续增长并且一个集群从WAL中全部恢复可能需要大量的时间。为了解决这个,Ignite本地存储和持久内存支持Checkpoint过程。

checkpoint是一个过程,拷贝脏页从RAM到文件,脏页的定义是只更新了RAM但是还没到文件。(an update was just appended to the WAL)

这个过程可以实现保证文件中的页是最新的状态,允许从WAL Archive中移除过期的WAL段。

Checkpointing is triggered periodically depending on the frequency set in your Native Persistence configuration or other parameters.

 

事务性保证

Ignite本地存储是ACID,分布式store。每个事务先更新到WAL。恢复也不会漏下。

 

生产调优

如果一个集群跑在Unix环境然后本次存储用的是SSD,那么pageSize设置成4KB而不是2KB,那么checkPoint的效率会提升三倍。

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
   ...		
   <property name="memoryConfiguration">
    		<bean class="org.apache.ignite.configuration.MemoryConfiguration">
        		<!-- Setting the page size to 4 KB -->
            <property name="pageSize" value="#{4 * 1024}"/>
        </bean>
    </property>
    ...
</bean>

 

上生产需要考虑的问题

  1. 机器I/O是否能够承受
  2. 需要SSD,需要多大的磁盘?
  3. 怎么判断多节点全部active了
  4. 数据需要调整或者脏了
    1. 可以把{IGNITE_HOME}/work路径下的文件全部删掉,启动loader重新生成一遍

 

 

引用:https://apacheignite.readme.io/docs/distributed-persistent-store

© 著作权归作者所有

共有 人打赏支持
Jeff_JYM
粉丝 0
博文 6
码字总数 2872
作品 0
深圳
程序员
Apache Ignite 2.5.0 版本发布,千级节点伸缩性

Apache Ignite 2.5: 千级节点伸缩性 Apache Ignite的用户通常知道的两个关键点是-扩展性和性能。在很多分布式系统的整个生命周期中,通常会不停地改进性能,而对扩展性相关的改进次数,会比较...

李玉珏 ⋅ 06/01 ⋅ 0

Apache Ignite剖析

1.概述   Apache Ignite和Apache Arrow很类似,属于大数据范畴中的内存分布式管理系统。在《Apache Arrow 内存数据》中介绍了Arrow的相关内容,它统一了大数据领域各个生态系统的数据格式,...

smartloli ⋅ 03/11 ⋅ 0

IGNITE TROUBLESHOOT

H2 Console 设置系统变量 set IGNITEH2DEBUGCONSOLE=true, 启动IGNITE的时候会自动弹出一个h2 console的浏览器, 可以看到建立的索引和具体的数据 参考 https://apacheignite.readme.io/docs/...

zhanjia ⋅ 06/06 ⋅ 0

Apache Ignite 高危漏洞预警:攻击者可执行任意代码

Apache Ignite 的开发团队近日在 Apache 邮件列表上发布了一个高危漏洞(CVE-2014-0114)预警,所有 Ignite 2.4 及更早之前的版本都会受到影响。 据悉,Apache Ignite 使用了 commons-beanut...

王练 ⋅ 06/04 ⋅ 0

Apache Ignite事务架构:第三方持久化的事务处理

本文是Ignite事务架构系列的最后一篇文章,在之前的文章中,讨论了与键值API的事务处理有关的一系列主题。 第一篇文章中,主要介绍了二阶段提交协议及其工作方式; 第二篇文章中,介绍了锁模...

李玉珏 ⋅ 04/16 ⋅ 0

Ingite如何对spark的dataframe数据进行写入?

请问我在使用ignite对spark的dataframe数据写入的时候报错如下 Exception in thread "main" class org.apache.ignite.IgniteException: 'config' must be specified to connect to ignite cl......

疯狂的丝 ⋅ 04/19 ⋅ 1

从术语到Spark,10篇必读大数据学习资源

     大数据文摘作品   编译:王一丁、王梦泽、夏雅薇   本文给想进入大数据领域的朋友提供了一系列的资源,由浅入深,比如“需要了解的51条大数据术语”、“学习python的四个理由”...

大数据文摘 ⋅ 04/29 ⋅ 0

ignite是如何解决CAP原理的?

@李玉珏 你好,想跟你请教个问题: 在平常的分布式系统中,CAP原理是突破不了的,但是最最近发现ignite似乎在C、A、P上都符合,它是如何做到的? 谢谢!!!

化水 ⋅ 06/12 ⋅ 0

ignite集群如何设置才能实现数据分区

我搭建了一个ignite的机器,一共3台机器,配置了静态iP发现,服务器也能正常发现彼此,显示 Topology snapshot [ver=31, servers=3, clients=0, CPUs=96, offheap=190.0GB, heap=96.0GB] [09:26...

肖艳杰 ⋅ 05/10 ⋅ 0

在Linux中使用环境变量进行提权

  在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!   介绍   PATH是Linux和类Unix操作系统...

FreeBuf ⋅ 06/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 17分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部