2015-03-18 8 views
2

Когда я пытаюсь подключиться к узлу семян кассандры с помощью соединителя datastax, я не могу.подключение к cassandra с использованием соединителя datastax

У меня есть четыре искровых узла: один мастер и три рабочих. Это хорошо работает само по себе. На тех же машинах установлена ​​кассандра, одна из которых является искровым мастером в качестве семенного узла. Это работает само по себе (я успешно написал и прочитал от него).

Теперь я пытаюсь сделать

val info = spark_context.cassandraTable("files", "metainfo") 
println(info.count) 

Раньше я указать контекст искровой следующим образом:

 val confStandalone = new SparkConf() 
     .set("spark.cassandra.connection.host", "10.14.56.156") 
     .setMaster("spark://10.14.56.156:7077") 
     .setAppName("Test") 
     .set("spark.executor.memory", "1g") 
     .set("spark.eventLog.enabled", "true") 
     .set("spark.driver.host", "10.14.56.156") 
     .set("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") 

    val spark_context = new SparkContext(confStandalone) 
    spark_context.addJar("SOME_PATH/spark-cassandra-connector_2.10-1.2.0-alpha1.jar") 

В файле cassandra.yaml я установить rpc_address в 10.14.56.156 и использовали стандартные порты (9160, 9042). Теперь, когда я

sbt run 

Я получаю следующее сообщение об ошибке:

15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 127.0.0.1 (datacenter1) 
15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 10.14.56.156 (datacenter1) 
15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 127.0.0.1 (datacenter1) 
15/03/18 16:38:43 ERROR Session: Error creating pool to /127.0.0.1:9042 com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect 
    at com.datastax.driver.core.Connection.<init>(Connection.java:106) 
    at com.datastax.driver.core.PooledConnection.<init>(PooledConnection.java:35) 
    at com.datastax.driver.core.Connection$Factory.open(Connection.java:528) 
... 
Caused by: java.net.ConnectException: Connection refused: /127.0.0.1:9042 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
... 

Теперь, когда я изменяю rpc_address 0.0.0.0, как удостоверение личности, иногда советуют, я получаю ту же ошибку, но с 10.14.56.156 вместо 127.0.0.1, и только линии:

15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 10.14.56.156 (datacenter1) 

с указанным выше одной и той ниже (со ссылкой на 127.0.0.1) удалены.

Я не устанавливал какие-либо правила брандмауэра в iptables, поэтому я не думаю, что это будет проблемой. Помогите оценить!

+0

Чтобы уточнить, изменив значение rpc_address на 0.0.0.0, вы теперь получаете сообщение об ошибке «[/X.X.X.X:9042] Не удается подключиться», но вместо этого «10 .14.56.156»? –

+0

да, вот что происходит –

ответ

2

Вы посмотрели, на что установлен параметр broadcast_rpc_address? Java-драйвер получит ip для подключения к столбцу «peer» для system.peers. Если для параметра rpc_address установлено значение 0.0.0.0, необходимо установить параметр broadcast_rpc_address.

Мое предположение заключается в том, что с вашим параметром rpc_address равным 0.0.0.0 драйвер подключается к широковещательному_странице, хотя он говорит [/10.14.56.156:9042] Cannot connect (вы можете видеть Connection refused: /127.0.0.1:9042 further in the stack trace).

+0

Эй, Энди, спасибо за ваш ответ. Поэтому я установил rpc_address в 0.0.0.0 и широковещательный адрес в 10.14.56.156, и эта ошибка ушла, но теперь его проигрывающие задачи с ошибкой «java.lang.NoClassDefFoundError: com/datastax/driver/core/Statement». Я ищу, как исправить это и почему он начал возникать. Так спасибо за помощь в решении предыдущей проблемы, но, возможно, это связано ... Так что если бы у вас были какие-то предложения, это было бы здорово :) –

+0

Это интересно, заявление является основной частью драйвера, поэтому я удивлен, увидев вас может подключаться к драйверу (который использует операторы как часть инициализации), но получает NCDFError. Я не очень разбираюсь в компоненте искры, но разве эта неудача происходит у ваших работников искры? Вам нужно добавить драйвер и искровой коннектор в свой класс? –

+0

Я добавил банку в контекст искры, который, насколько я понимаю, должен отправить его рабочим. В случае, если это было неправильно, я просто попробовал добавить «spark.executor.extraClassPath» в sparkConf и разместить банку в этом месте как для каждого из рабочих, так и для мастера. Но происходит то же самое. –

Смежные вопросы