无法在现有Apache Ignite单节点集群中创建缓存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在现有Apache Ignite单节点集群中创建缓存相关的知识,希望对你有一定的参考价值。

我在我的单个主机pc中运行了两个Apache Ignite实例(版本2.2.0),他们发现彼此没有任何问题。我现在要做的是简单地在这个现有的“伪集群”中创建一个IgniteCache,最好不要启动新实例。这是我现在的代码:

public class Create_Ignite_Cache {

public static void main(String[] args){

    TcpDiscoverySpi spi = new TcpDiscoverySpi();
    TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryMulticastIpFinder();
    List<String> adresses=new ArrayList<String>();
    adresses.add("127.0.0.1");
    ipFinder.setAddresses(adresses);
    spi.setIpFinder(ipFinder);

    IgniteConfiguration cfg=new IgniteConfiguration()
.setDiscoverySpi(spi).setClientMode(true);

    CacheConfiguration cache_conf=new CacheConfiguration<String,String>().setCacheMode(CacheMode.PARTITIONED).setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL).setBackups(1).
            setGroupName("Test_group").setIndexedTypes(String.class,String.class).setName("Test_Cache");

    Ignite ignite=Ignition.getOrStart(cfg);

    ignite.getOrCreateCache(cache_conf);

    System.out.print("[INFO] CACHE CREATED");
    ignite.close();
}
 }

运行此代码时,将创建Ignite客户端实例,尝试创建缓存,然后关闭客户端实例。如果我从Ignite服务器实例检查日志,它会在创建客户端实例时检测到它:

[10:36:57] Topology snapshot [ver=1, servers=1, clients=0, CPUs=12, heap=1.0GB]
[10:41:07] Topology snapshot [ver=2, servers=1, clients=1, CPUs=12, heap=4.6GB]
[10:41:07] Topology snapshot [ver=3, servers=1, clients=0, CPUs=12, heap=1.0GB]

但是,当我运行ignitevisor来检查缓存列表时,它没有任何缓存:

visor> cache
(wrn) <visor>: No caches found.

我的问题是:使用这种方法我做错了什么?有没有办法在现有集群中创建缓存而无需创建客户端实例?以JDBC连接为例?

非常感谢你。

答案

我尝试了你的代码,Visor显示了创建的缓存。

拓扑快照表示,您只有一个服务器节点。是否可能,服务器节点没有发现彼此并形成两个不同的集群?您可以在其中一个中创建缓存,并通过Visor连接到另一个缓存。尝试node Visor命令并检查是否看到所有服务器节点。

要避免为缓存创建启动其他节点,可以在节点XML配置中配置缓存。看看这个例子:https://apacheignite.readme.io/docs/cache-modes#section-configuration

如果要使用JDBC连接创建缓存,可以使用CREATE TABLE DDL命令。文档:https://apacheignite-sql.readme.io/docs/create-table

另一答案

我尝试了下面的代码片段,并成功创建了缓存。

------------------------------------------------- + ---------- + ------------- + ------- + ----------------- ---------- ----------- + + ----------- ----------- + + --- -------- + | Test_Cache(@ c19)|分手| 2 | min:0(0/0)| min:0 | min:0 | min:0 | min:0 | | | | |平均值:0.00(0.00 / 0.00)|平均:0.00 |平均:0.00 |平均:0.00 |平均:0.00 | | | | | max:0(0/0)|最大值:0 |最大值:0 |最大值:0 |最大值:0 |

你能在visor中使用“node”命令看到两个节点吗?我使用选项13打开遮阳板 - examples config example-ignite.xml希望这会有所帮助。

以上是关于无法在现有Apache Ignite单节点集群中创建缓存的主要内容,如果未能解决你的问题,请参考以下文章

Apache Ignite 学习

Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误

Apache Ignite 节点失败:无法读取魔术头

Apache Spark + Ignite 集群瘦客户端

Ignite集群管理——基于静态IP的节点发现

Ignite: 架构及工具