Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误
Posted
技术标签:
【中文标题】Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误【英文标题】:Apache Zeppelin 'Failed to start Ignite node' error when integrating with Ignite 【发布时间】:2018-03-02 16:50:29 【问题描述】:我正在发现 Apache Ignite 并创建了一个类似于他们的字数统计示例的简单应用程序。它将多个 .txt 文件中的单词流式传输到缓存中。我可以借助 Java 应用程序中的 SqlFieldsQuery 类查询这些词。
public class NodeStartup
public static void main(String[] args) throws IgniteException
// Start Server Node
Ignition.start("config/example-ignite.xml");
public class StreamWordsToCache
public static void main(String[] args) throws Exception
// Mark the cluster member as a Client
Ignition.setClientMode(true);
// Start a Client Node
try (Ignite ignite = Ignition.start("config/example-ignite.xml"))
// Checks if Server nodes not found
if (!ExamplesUtils.hasServerNodes(ignite))
return;
// If cache doesn't exist, create it within the cluster, otherwise use the existing one
IgniteCache<AffinityUuid, String> theCache = ignite.getOrCreateCache(CacheConfig.wordsCache());
// Create Streamers for the cache
try (IgniteDataStreamer<AffinityUuid, String> theStreamer = ignite.dataStreamer(theCache.getName()))
//Stream words from articles
while (true)
File directory = new File("src/main/resources/");
if (directory.listFiles() != null)
List<File> filesInDir = new ArrayList<>(Arrays.asList(directory.listFiles()));
for (File file : filesInDir)
System.out.println("Start reading file : " + file.getName());
try (LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file)))
for (String line = lineNumberReader.readLine(); line != null; line = lineNumberReader.readLine())
for (String word : line.split(" "))
if (!word.isEmpty() && word.matches("(?!(?:that|with|from))\\b(?<!\\b[-.])[^\\d\\W]4,+\\b(?![-.]\\b)"))
// Stream words into Ignite
// Unique key (AffinityUuid) is created for each word
// AffinityUuid ensures that identical words are processed on the same cluster node
// in order to process them faster
theStreamer.addData(new AffinityUuid(word), word);
现在我决定使用 Apache Zeppelin 从 Ignite 缓存中检索这些单词。但由于某种原因,我尝试整合 Zeppelin 和 Ignite 失败了。我正在关注本教程https://apacheignite-tools.readme.io/docs/apache-zeppelin,并按照他们的建议配置了 Ignite Interpreter。
首先,我启动 Ignite 节点和客户端节点,将单词连续流式传输到“单词”缓存中。然后我尝试在 Zeppelin 注释中执行 SQL 查询并不断收到Failed to start Ignite node
错误。
这种行为的原因可能是什么?我的项目中使用的 Ignite 版本是 2.1.0,Zeppelin 二进制文件是 0.7.2,会导致问题吗?或者ignite.jdbc.url
属性值可能有问题?jdbc:ignite://localhost:11211/words
【问题讨论】:
刚刚开始工作!问题在于 Ignite 的版本。我在我的项目中将其更改为 1.9.0 并解决了该问题。这个链接真的很有帮助zeppelin.apache.org/supported_interpreters.html 【参考方案1】:您的 Zeppelin (0.7.2) 版本已通过 Apache Ignite 1.9.0 认证 所以,我认为您的问题的根本原因是不同版本的 Ignite。
Zeppelin 的最新代码库似乎支持 Apache Ignite 2.1 https://github.com/apache/zeppelin/pull/2549
因此,您可以尝试从源代码构建 Zeppelin Ignite Interpreter for Apache Zeppelin
【讨论】:
我也刚刚发现这是问题的原因)没有看到您的答案,但它很有帮助。谢谢!以上是关于Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误的主要内容,如果未能解决你的问题,请参考以下文章
将 Apache Cassandra 与 Apache Ignite 集成
Apache Spark 与 Apache Ignite [关闭]
索引 Apache Ignite 缓存与优化的内存 CassandraDB