我正试图将Spark内存表存储到Ignite中。当我尝试这样做时,我收到一条错误消息,为
无法找到具有数据存储配置的相似性服务器节点来启动缓存[cacheName = SQL_PUBLIC_JSON_TBL,aliveSrvNodes = []]。
我在Ec2机器的HDP群集设置中运行它,但是当我在此处的群集机器中执行相同操作时,它可以完美运行,但在EC2机器中却不能。
先谢谢了。
更新:
我正在使用Spark Shell。这是代码。
val df = sqlContext.read.json("~/responses")
val s = df.select("response.id","response.name")
s.write.format(IgniteDataFrameSettings.FORMAT_IGNITE).option(IgniteDataFrameSettings.OPTION_CONFIG_FILE, "~/apache-ignite-fabric-2.6.0-bin/examples/config/spark/example-shared-rdd.xml").option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS,"id").option(IgniteDataFrameSettings.OPTION_TABLE, "json_table").save()
这是我用于单个Ignite服务器的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 id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<!-- SharedRDD cache example configuration (Atomic mode). -->
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<!-- Set a cache name. -->
<property name="name" value="sharedRDD"/>
<!-- Set a cache mode. -->
<property name="cacheMode" value="PARTITIONED"/>
<!-- Index Integer pairs used in the example. -->
<property name="indexedTypes">
<list>
<value>java.lang.Integer</value>
<value>java.lang.Integer</value>
</list>
</property>
<!-- Set atomicity mode. -->
<property name="atomicityMode" value="ATOMIC"/>
<!-- Configure a number of backups. -->
<property name="backups" value="1"/>
</bean>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
<property name="addresses">
<list>
<!-- In distributed environment, replace with actual host IP address. -->
<value>127.0.0.1:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
这是完整的日志。
18/10/30 12:32:54 WARN GridDiagnostic:初始堆大小为252MB(应不少于512MB,请使用-Xms512m -Xmx512m)。 18/10/30 12:32:54 WARN TcpCommunicationSpi:消息队列限制设置为0,这可能导致发送方和接收方消息队列增长,从而在FULL_ASYNC或PRIMARY_SYNC模式下运行高速缓存操作时导致潜在的OOME。 30/10/30 12:32:55警告NoopCheckpointSpi:禁用检查点(以启用配置任何GridCheckpointSpi实现) 18/10/30 12:32:55 WARN GridCollisionManager:碰撞分辨率已禁用(所有作业将在到达时被激活)。 18/10/30 12:32:57 WARN TcpDiscoverySpi:由于ClassNotFoundException而导致读取消息失败(确保所有节点上的所有类的相同版本均可用)[rmtNodeId = 3085dfa9-58ba-4ac0-a7f8-f78e2901a699,err = oaii [processors.hadoop.HadoopAttributes] 18/10/30 12:32:57警告IgniteAuthenticationProcessor:找不到服务器协调器节点。客户端可能以forceServerMode = true启动。安全警告:客户端上的用户身份验证将被禁用。 18/10/30 12:32:58错误ClusterCachesInfo:无法找到具有用于启动高速缓存的数据存储配置的相似性服务器节点[cacheName = SQL_PUBLIC_JSON_TBL6,aliveSrvNodes = []] 18/10/30 12:32:58警告CacheAffinitySharedManager:找不到用于缓存客户端的服务器节点:SQL_PUBLIC_JSON_TBL
答案 0 :(得分:0)
该日志包含以下记录:
12:32:57 WARN TcpDiscoverySpi: Failed to read message due to ClassNotFoundException (make sure same versions of all classes are available on all nodes) [rmtNodeId=3085dfa9-58ba-4ac0-a7f8-f78e2901a699, err=o.a.i.i.processors.hadoop.HadoopAttributes]
它说,发现消息不能反序列化,因为HadoopAttributes
类不在类路径上。这可能会导致连接问题,并影响节点彼此看到对方的能力。
确保所有节点的类路径上都具有ignite-hadoop
模块,或者摆脱这种依赖关系。