簡體   English   中英

Apache Ignite計算集群

[英]Apache Ignite Computing Cluster

在我的測試環境中,我的intellij項目中有1個ignite節點,在運行二進制ignite的docker容器中有一個節點(通過ignite.sh)。 分布式緩存可以正常工作...但是我也想從我的“主”節點中控制“點燃”節點。 首先,我只想像下面的示例一樣打印“ Hello World”: https : //dzone.com/articles/getting-started-with-apache-ignite但是它只有在我同時啟動另一個ignite-instance時才有效JVM。 如果我通過ignite二進制文件運行它,則它不起作用。 但這應該(如入門指南中所述...)

為什么節點要搜索DockerExampleTest類? 當然找不到,因為ignite-binary的代碼和我的intellij-project的代碼是不同的...我只希望lambda表達式在節點上執行。

我的代碼:

    Ignite ignite = Ignition.getOrStart(cfg);  
    ClusterGroup remoteGroup = ignite.cluster().forRemotes();
    IgniteCompute compute = ignite.compute(remoteGroup);

    compute.broadcast( () -> { System.out.println("Hello World"); } );

錯誤:

SCHWERWIEGEND: Failed to obtain remote job result policy for result from ComputeTask.result(..) method (will fail the whole task): GridJobResultImpl [job=C4V2 [r=DockerExampleTest$$Lambda$10/1694408103@75d71fd1], sib=GridJobSiblingImpl [sesId=2834a6f8a51-ac1fe4d3-41bf-4693-8426-55e2be877df9, jobId=3834a6f8a51-ac1fe4d3-41bf-4693-8426-55e2be877df9, nodeId=2ceb6df9-fbe1-4f04-b660-26b1aaaed177, isJobDone=false], jobCtx=GridJobContextImpl [jobId=3834a6f8a51-ac1fe4d3-41bf-4693-8426-55e2be877df9, timeoutObj=null, attrs={}], node=TcpDiscoveryNode [id=2ceb6df9-fbe1-4f04-b660-26b1aaaed177, addrs=[0:0:0:0:0:0:0:1%lo, 127.0.0.1, 172.16.0.2], sockAddrs=[/0:0:0:0:0:0:0:1%lo:47500, /127.0.0.1:47500, /172.16.0.2:47500], discPort=47500, order=2, intOrder=2, lastExchangeTime=1488464796286, loc=false, ver=1.8.0#20161205-sha1:9ca40dbe, isClient=false], ex=class o.a.i.IgniteException: DockerExampleTest, hasRes=true, isCancelled=false, isOccupied=true]
class org.apache.ignite.IgniteException: Remote job threw user exception (override or implement ComputeTask.result(..) method if you would like to have automatic failover for this exception).
    at org.apache.ignite.compute.ComputeTaskAdapter.result(ComputeTaskAdapter.java:101)
    at org.apache.ignite.internal.processors.task.GridTaskWorker$5.apply(GridTaskWorker.java:1030)
    at org.apache.ignite.internal.processors.task.GridTaskWorker$5.apply(GridTaskWorker.java:1023)
    at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6596)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.result(GridTaskWorker.java:1023)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:841)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.processJobExecuteResponse(GridTaskProcessor.java:996)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor$JobMessageListener.onMessage(GridTaskProcessor.java:1221)
    at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
    at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
    at org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
    at org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: class org.apache.ignite.IgniteException: DockerExampleTest
    at org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:447)
    at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1108)
    at org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1894)
    ... 7 more
Caused by: class org.apache.ignite.IgniteCheckedException: DockerExampleTest
    at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9785)
    at org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:428)
    ... 9 more
Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: DockerExampleTest
    at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:689)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1480)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1418)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:370)
    at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:828)
    at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read(BinaryFieldAccessor.java:639)
    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:829)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1634)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readObject(BinaryReaderExImpl.java:1124)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4V2.readBinary(GridClosureProcessor.java:2230)
    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:819)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
    at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:298)
    at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:100)
    at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82)
    at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9779)
    ... 10 more
Caused by: java.lang.ClassNotFoundException: DockerExampleTest
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8393)
    at org.apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:185)
    at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:680)
    ... 28 more


class org.apache.ignite.binary.BinaryInvalidTypeException: DockerExampleTest

    at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:689)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1480)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1418)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:370)
    at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:828)
    at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read(BinaryFieldAccessor.java:639)
    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:829)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
    at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1634)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.readObject(BinaryReaderExImpl.java:1124)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4V2.readBinary(GridClosureProcessor.java:2230)
    at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:819)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
    at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
    at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:298)
    at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:100)
    at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82)
    at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9779)
    at org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:428)
    at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1108)
    at org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1894)
    at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
    at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
    at org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
    at org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: DockerExampleTest
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8393)
    at org.apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:185)
    at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:680)
    ... 28 more

Java中的Lambda實際上是聲明該類的靜態方法(在您的情況下為DockerExampleTest )。 要執行此方法,必須先加載類,但服務器類路徑上沒有該類。

要解決該問題,您可以:

  • 使用DockerExampleTest類創建一個JAR文件,並在啟動節點之前將其放入IGNITE_HOME/libs文件夾。
  • 啟用對等類加載。

此處有更多詳細信息: https : //apacheignite.readme.io/docs/zero-deployment

我想我找到了答案:我必須在配置PeerClassLoadingEnable中將其設置為true。 明天我會嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM