Проблемы в Cassandra Spark Connector через облако Google

В настоящее время я развернул узлы для Spark и Cassandra в облаке Google. В то время как DataStax Spark Cassandra Connector в значительной степени работает нормально локально. Выдает ошибки при подключении при попытке сделать то же самое в облаке Google. Я пробовал различные перестановки и комбинации для запуска простого кода извлечения значений из cassandra в Spark, но все тщетно. Версия Spark, развернутая в gcloud, - 1.1.0, а версия cassandra - 3.0.0. Сборочный пакет мы сделали, используя ту же версию Spark.

  def main(args: Array[String]): Unit = {

val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", "104.197.133.174")
.set("spark.cassandra.auth.username", "cassandra")           
.set("spark.cassandra.auth.password", "xxxxxxx");
val sc = new SparkContext("local", "test", conf)
val user_table = sc.cassandraTable("demo", "movieslist")
val movie_index = user_table.map(r => new moviesugg(r.getInt("userid"), r.getString("movie")))

val file_collect= user_table.collect()
file_collect.map(println(_))

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

Exception in thread "main" java.io.IOException: Failed to open native connection to Cassandra at {104.197.133.174}:9042
    at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:174)

Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /104.197.133.174:9042 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))

Пространства ключей схемы таблицы были определены правильно (работают нормально локально), и я думаю, что это скорее проблема с подключением. Я новичок в Cassandra, и мне было интересно, есть ли какие-либо изменения конфигурации, которые кто-либо может предложить, которые нужно внести в файл cassandra.yaml, чтобы заставить код работать. Однако я попытался изменить rpc_address и listen_address, но это не помогло.

Любые предложения будут ценны.




Ответы (2)


Похоже, вы пытаетесь запустить Cassandra на общедоступном IP-адресе. Как упоминалось в другом сообщении, убедитесь, что Cassandra действительно привязана к общедоступному IP (искра смотрит на порт 9042).

Предполагая, что это правда, вам также необходимо открыть правило брандмауэра GCE (https://cloud.google.com/compute/docs/networking?hl=en#firewalls), чтобы разрешить трафик TCP: 9042. Это потребуется, даже если Spark работает на отдельном хосте в GCE, поскольку вы используете общедоступный IP-адрес.

Если и Cassandra, и Spark работают на одном хосте, вы можете использовать адрес localhost. Или, если они оба работают на разных хостах в одном и том же Google Cloud Project, вы должны иметь возможность использовать частный адрес 10.x и привязать Cassandra к этому частному адресу.

person Eric Johnson    schedule 11.12.2015

Сначала проверьте, действительно ли порты открыты. Во-вторых, учитывая, что у вас есть очень удаленные версии для обеих систем, то есть Spark (v1.1.0) и Cassandra (v3.0.0), это может быть вашей основной проблемой в этом случае. Пожалуйста, проверьте эту ссылку на совместимость версий:

https://github.com/datastax/spark-cassandra-connector#version-compatibility

person raschild    schedule 08.12.2015