什么是Ignite
Apache Ignite内存数组组织框架是一个高性能、集成和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时它还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。
Ignite具有以下特点:
一个以内存为中心的数据平台
Apache Ignite是一个高性能、分布式的内存计算平台,在用户应用层与数据层无缝插入,Apache Ignite改变了传统的磁盘存储方式,从基于磁盘的存储层把数据加载到内存.
强一致性
在任意时刻,所有节点中的数据是一样的。同一时间点,在节点A中获取到key1的值与在节点B中获取到key1的值应该都是一样的。
高可用
使用软件或硬件技术实现存储的高度可用性。其主要技术指标是存储切换功能,数据复制功能,数据快照功能等。当一台存储出现故障时,另一台备用的存储可以快速切换,达到存储不停机的目的。
强大的SQL、键-值以及相关处理的API
完整的SQL支持
Ignite提供了完整的SQL、DDL和DML的支持,可以使用纯SQL而不用写代码与Ignite进行交互,这意味着只使用SQL就可以创建表和索引,以及插入、更新和查询数据。有这个完整的SQL支持,Ignite就可以作为一种分布式SQL数据库。
键-值
Ignite的内存数据网格组件是一个完整的事务型分布式键值存储,它可以在有几百台服务器的集群上进行水平扩展。再打开持久化时,Ignite可以存储比内存容量更大的数据,并且在整个集群重启之后仍然可用。
Ignite的适用场景(部署环境)
适用场景
从官网的上的图可以看出ignite有数据网格,计算网格,服务网格,SQL网格,数据结构,流计算,文件系统,高级集群等模块,都是放在内存操作,主要追求的是能快速分析处理数据,实时内存应用。
数据量越大操作起来越费劲越费时,只适合事后慢慢分析,从spark开始内存计算就是为了解决太费时问题,Apache Beam也延续了这种趋势,Ignite主要内存功能强大,更方便适用,用内存来聚合数据源,处理数据。
因此,当数据量越来越大的时候甚至超越PB级时,就体现出Ignite的优越性。
Ignite的安装与配置
准备
Apache Ignite官方在如下环境中进行的测试:
- JDK:Oracle JDK7及以上,Open JDK7及以上,IBM JDK7及以上
- OS:Linux(任何版本),Mac OS X(10.6及以上),Windows(XP及以上),Windows Server(2008及以上),Oracle Solaris
- 网络:没有限制(建议10G)
- 架构:x86,x64,SPARC,PowerPC
安装
下面是安装Apache Ignite的简要步骤:
- 从https://ignite.apache.org/下载Apache Ignite的zip压缩包
- 将zip压缩包解压到系统安装文件夹
- 设置IGNITE_HOME环境变量指向安装文件夹,确保没有/结尾(这一步可选)
从源代码构建
如果你下载的是源代码包,可以用如下命令构建:
1. # Unpack the source package
2. $ unzip -q apache-ignite-{ version}-src.zip
3. $ cd apache-ignite-{ version}-src
4.
5. # Build In-Memory Data Fabric release(without LGPL dependencies)
6. $ mvn clean package-DskipTests
7.
8. # Build In-Memory Data Fabric release (withLGPL dependencies)
9. $ mvn clean package-DskipTests-Prelease,lgpl
10.
11.# Build In-Memory Hadoop Accelerator release
12.# (optionally specify version of hadoop touse)
13.$ mvn clean package-DskipTests-Dignite.edition=hadoop [-Dhadoop.version=X.X.X]
从命令行启动
一个Ignite节点可以从命令行通过默认的配置或者传入外部配置文件的方式启动。可以启动很多很多的节点然后他们会自动地发现对方。
通过默认配置
要启动一个基于默认配置的网格节点,打开命令行然后切换到IGNITE_HOME(安装文件夹),然后输入如下命令:
Linux:
1. $ bin/ignite.sh
Windows:
1. $ bin/ignite.bat
然后会看到输出大体是如下的样子:
1. [02:49:12]Ignite node started OK (id=ab5d18a6)
2. [02:49:12]Topology snapshot [ver=1, nodes=1,CPUs=8, heap=1.0GB]
ignite.sh
启动ignite节点会使用默认的配置文件:config/default-config.xml
。
传递配置文件
要从命令行显式地传递一个配置文件,只需要在安装文件夹路径下输入ignite.sh <
配置文件路径
>
,比如:
Linux
1. $ bin/ignite.shexamples/config/example-cache.xml
Windows
1. $ bin/ignite.batexamples/config/example-cache.xml
配置文件的路径既可以是绝对路径,也可以是相对于IGNITE_HOME的相对路径,也可以是相对于类路径的META-INF文件夹。
交互式模式
要在一个交互模式传递配置文件,可以加上-i参数,像这样:ignite.sh -i。
从Maven获得
在项目里使用Apache Ignite的另一个方式是使用Maven2依赖管理。
Ignite只需要一个ignite-core强依赖,通常还需要添加ignite-spring,来做基于spring的XML配置,还有ignite-indexing,来做SQL查询。
确保将${ignite-version}替换为实际的版本号。
1. <dependency>
2. <groupId>org.apache.ignite</groupId>
3. <artifactId>ignite-core</artifactId>
4. <version>${ignite.version}</version>
5. </dependency>
6. <dependency>
7. <groupId>org.apache.ignite</groupId>
8. <artifactId>ignite-spring</artifactId>
9. <version>${ignite.version}</version>
10.</dependency>
11.<dependency>
12.<groupId>org.apache.ignite</groupId>
13.<artifactId>ignite-indexing</artifactI