Dasastax Кассандра Java NoHostAvailableException
Была свежая установка Apache Cassandra версии 3.7
Установка прошла успешно, и я мог получить доступ к cqlsh без каких-либо проблем.
[dpmuser @ LOGDPM01 bin] $ cqlsh подключен к тестовому кластеру по адресу 127.0.0.1:9042. [cqlsh 5.0.1 | Кассандра 3.7 | CQL spec 3.4.2 | Собственный протокол v4]
Но когда я пытаюсь подключиться через клиент DataStax Cassandra, я сталкиваюсь с NoHostAvailableException .
Вот пример кода, который я попробовал
import com.datastax.driver.core.*;
public class DBHitTEst {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Session session = null;
Cluster cluster = Cluster.builder()
.addContactPoints("127.0.0.1").withPort(9042)
.build();
System.out.println("Connecting to cluster ...");
session = cluster.connect();
System.out.print("Connected !"+session);
}}
Исключение в консоли показано ниже.
SLF4J: Не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder". SLF4J: По умолчанию используется логгер без операций (NOP). SLF4J: Для получения дополнительной информации см. http://www.slf4j.org/codes.html. Подключение к кластеру... 10 августа 2017 г. 7:58:23 io.netty.channel.ChannelInitializer channelRegistered ПРЕДУПРЕЖДЕНИЕ: не удалось инициализировать канал. Закрытие: [id: 0x7d2724c5] java.lang.NoSuchMethodError: io.netty.util.AttributeKey.valueOf(Ljava/lang/String;)Lio/netty/util/AttributeKey; в com.datastax.driver.core.Message.(Message.java:39) в com.datastax.driver.core.Connection$Initializer.initChannel(Connection.java:1425) .,, Исключение в потоке "main" com.datastax.driver.core.exceptions. NoHostAvailableException: все хосты, для которых был выполнен запрос на сбой (попытался: /127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [/127.0.0.1:9042] Не удается подключиться)) в com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:232) по адресу com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79) по адресу com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(ConnectCound) (Java:1600) в com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1518) в com.datastax.driver.core.Cluster.init(Cluster.java:159) в com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330) в com.datastax.driver.core.Cluster.connectAsync(Cluster.java:305) в com.datastax.driver.core.Cluster.connect(Cluster.java:247) на com.cassandra.db.executables.DBHitTEst.main(DBHitTEst.java:14)
Библиотеки Ссылки
cassandra-driver-core-3.3.0.jar
guava-23.0.jar
log4j-api-2.8.2.jar
metrics-core-3.0.2.jar
netty-all-4.0.9.Final.jar
slf4j-api-1.7.25.jar
Важные конфиги это cassandra.yaml
start_rpc: false
start_native_transport: true
native_transport_port: 9042
rpc_address: localhost
rpc_port: 9160
listen_address: localhost
seeds: "127.0.0.1"
Другие особенности системы
[dpmuser@LOGDPM01 conf]$ hostname
LOGDPM01
[dpmuser@LOGDPM01 conf]$ more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[dpmuser@LOGDPM01 conf]$ ping LOGDPM01
PING LOGDPM01 (10.0.2.15) 56(84) bytes of data.
64 bytes from LOGDPM01 (10.0.2.15): icmp_seq=1 ttl=64 time=0.055 ms
Запуск Centos VM. Пожалуйста, дайте мне знать, где я не прав?
1 ответ
Несоответствие библиотеки выдает предупреждение, которое я заметил в консоли.
ВНИМАНИЕ: Не удалось инициализировать канал. Закрытие: [id: 0x7d2724c5] java.lang.NoSuchMethodError: io.netty.util.AttributeKey.valueOf(Ljava/lang/String;)Lio/netty/util/AttributeKey; в com.datastax.driver.core.Message.(Message.java:39) в com.datastax.driver.core.Connection$Initializer.initChannel(Connection.java:1425) .,,
При выборе правильных библиотек из папки lib Cassandra установка напрямую разрешила проблему.