配置文件在zeppelin中点燃发现,即使在IgniteConfiguration bean存在之后,配置xml也无法正常工作

时间:2016-11-30 14:41:19

标签: apache-zeppelin ignite

我正在使用基于zookeeper的发现来点燃集群,并且点燃节点正在正确连接。

当我在zeppelin点击解释器中设置相同的config.xml文件时,我无法运行点火。它失败,但有以下异常。

它给我以下错误的zepplin:     无法在以下位置找到配置:file:////tmp/shared.xml     无法在以下位置找到配置:file:////tmp/shared.xml

异常详情:please click this link

我正在使用

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中所示。

到目前为止

分析

  1. 调试zeppelin和Ignite代码并验证正确的xml文件传递给ignite.start
  2. 通过读取inputStream和文件内容是正确的,甚至验证了文件的内容是双重确定的,inputStream来自org.springframework.beans.factory.xml.XmlBeanDefinitionReader #loadBeanDefinitions(org.springframework.core.io.support.EncodedResource)< / LI>
  3. 进一步调试验证ApplicationContext中的beanDefinitionMap包含IgniteConfiguration,附加快照
  4. enter image description here

    1. 尝试通过名称获取bean,它可以...而不是cfgMap = springCtx.getBeansOfType(cls);在org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl #loadConfigurations(java.net.URL,java.lang.Class,java.lang.String ...)

    2. 为了试用,我使用了sprintContext.getBean(),假设它会运行,但是它已经过时了,我得到了类转换异常

    3. enter image description here

      到目前为止经过分析后,我唯一能理解的是diff classloader加载的IgniteConfiguration如何导致问题,但不知道为什么会发生这种情况

      进一步调试并确认,这是因为IgniteConfiguration由不同的类加载器加载,一个加载已经来自sun.misc.Launcher.AppClassLoader#AppClassLoader并且在sprinContext中,IgnitConfiguration bean存在由scala.reflect.internal编码。 util.ScalaClassLoader,这就是错误“无法在:file:////tmp/shared.xml中找到配置”的原因 逻辑上我可以认为它是火花程序是scala代码和运行时加载的spring bean,这就是为什么这种不匹配 这是正常的吗?

1 个答案:

答案 0 :(得分:0)

我尝试了你的配置,它对我有用。你之前有其他版本的文件吗?如果是这样,我认为它没有正确更新,因为获得此异常的唯一方法是使用有效的Spring XML文件,但没有IgniteConfiguration bean。

您确定您确实使用了正确的文件吗?这可能是因为你在/tmp文件夹中有这个吗?