我正在使用基于zookeeper的发现来点燃集群,并且点燃节点正在正确连接。
当我在zeppelin点击解释器中设置相同的config.xml文件时,我无法运行点火。它失败,但有以下异常。
它给我以下错误的zepplin: 无法在以下位置找到配置:file:////tmp/shared.xml 无法在以下位置找到配置:file:////tmp/shared.xml
我正在使用ignite_client.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="peerClassLoadingEnabled" value="false"/>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder">
<property name="zkConnectionString" value="zookeeper:2181"/>
</bean>
</property>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="testcache"/>
<property name="startSize" value="10"/>
</bean>
</list>
</property>
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="peerClassLoadingEnabled" value="false"/>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder">
<property name="zkConnectionString" value="zookeeper:2181"/>
</bean>
</property>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="testcache"/>
<property name="startSize" value="10"/>
</bean>
</list>
</property>
</bean>
我看到了Ignite代码并发现它失败了,因为没有找到类型为IgniteConfiguration的spring bean,但是在xml中它实际存在,如上面的共享xml中所示。
分析
尝试通过名称获取bean,它可以...而不是cfgMap = springCtx.getBeansOfType(cls);在org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl #loadConfigurations(java.net.URL,java.lang.Class,java.lang.String ...)
为了试用,我使用了sprintContext.getBean(),假设它会运行,但是它已经过时了,我得到了类转换异常
到目前为止经过分析后,我唯一能理解的是diff classloader加载的IgniteConfiguration如何导致问题,但不知道为什么会发生这种情况
进一步调试并确认,这是因为IgniteConfiguration由不同的类加载器加载,一个加载已经来自sun.misc.Launcher.AppClassLoader#AppClassLoader并且在sprinContext中,IgnitConfiguration bean存在由scala.reflect.internal编码。 util.ScalaClassLoader,这就是错误“无法在:file:////tmp/shared.xml中找到配置”的原因 逻辑上我可以认为它是火花程序是scala代码和运行时加载的spring bean,这就是为什么这种不匹配 这是正常的吗?
答案 0 :(得分:0)
我尝试了你的配置,它对我有用。你之前有其他版本的文件吗?如果是这样,我认为它没有正确更新,因为获得此异常的唯一方法是使用有效的Spring XML文件,但没有IgniteConfiguration
bean。
您确定您确实使用了正确的文件吗?这可能是因为你在/tmp
文件夹中有这个吗?