ccm начальный адрес уже используется; возможно, кластер уже запущен, или вам может потребоваться добавить псевдоним обратной связи.

Я изо всех сил пытаюсь запустить кластер Cassandra с помощью команды «ccm start».

Я создал кластер с именем Gdelt с 3 узлами следующим образом: ccm status дает:

Cluster: 'Gdelt' 
-------------------
node1: DOWN (Not initialized)
node3: DOWN (Not initialized)
node2: DOWN (Not initialized)
node4: DOWN (Not initialized)

но ccm start вызывает следующую ошибку:

Traceback (most recent call last):
  File "/usr/local/bin/ccm", line 112, in <module>
    cmd.run()
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/cmds/cluster_cmds.py", line 510, in run
    allow_root=self.options.allow_root) is None:
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/cluster.py", line 390, in start
    common.assert_socket_available(itf)
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/common.py", line 521, in assert_socket_available
    raise UnavailableSocketError("Inet address %s:%s is not available: %s; a cluster may already be running or you may need to add the loopback alias" % (addr, port, msg))
ccmlib.common.UnavailableSocketError: Inet address 127.0.0.1:9042 is not available: [Errno 98] Address already in use; a cluster may already be running or you may need to add the loopback alias
Traceback (most recent call last):
  File "/usr/local/bin/ccm", line 112, in <module>
    cmd.run()
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/cmds/cluster_cmds.py", line 510, in run
    allow_root=self.options.allow_root) is None:
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/cluster.py", line 390, in start
    common.assert_socket_available(itf)
  File "/usr/local/lib/python2.7/dist-packages/ccmlib/common.py", line 521, in assert_socket_available
    raise UnavailableSocketError("Inet address %s:%s is not available: %s; a cluster may already be running or you may need to add the loopback alias" % (addr, port, msg))
ccmlib.common.UnavailableSocketError: Inet address 127.0.0.1:9042 is not available: [Errno 98] Address already in use; a cluster may already be running or you may need to add the loopback alias

Я попытался создать псевдонимы обратной связи с помощью сценария bash следующим образом и выполнить его:

#!/bin/bash

sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up
sudo ifconfig lo0 alias 127.0.0.4 up
sudo ifconfig lo0 alias 127.0.0.5 up
sudo ifconfig lo0 alias 127.0.0.6 up

который вызывает следующую ошибку при выполнении скрипта bash:

alias: Host name lookup failure
ifconfig: `--help' gives usage information.

Я пробовал ifconfig непосредственно в командной строке следующим образом:

sudo ifconfig lo:0 127.0.0.1 up

что дает следующую ошибку:

SIOCSIFADDR: File exists
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address

Ясно ли это, скажите, пожалуйста, если нет, чтобы я уточнил больше

Я не знаю, наконец, как запустить свой кластер в Cassandra. Большое спасибо за Вашу помощь. Хабиб


person twister9458    schedule 12.01.2020    source источник


Ответы (2)


Таким образом, пользователи Cassandra используют порт 9042 по умолчанию. Однако, как показывает ваш вывод, что-то уже использует этот порт, когда вы пытаетесь запустить свой узел. Это видно из следующего сообщения:

Inet address 127.0.0.1:9042 is not available: [Errno 98] Address already in use

В этом сценарии у вас есть несколько вариантов:

  1. Найдите процесс, использующий порт 9042, и уничтожьте его (при условии, что это что-то неважное)
  2. Используйте другой порт для запуска узла

Для (1) вы можете использовать:

netstat -nap | grep 9042 | grep LISTEN

Возможно, вам нужно быть пользователем root, чтобы найти процесс, поскольку netstat будет отображать только то, что «принадлежит» вашему текущему пользователю. Если вы root, вы увидите все процессы.

Для (2) можно просто изменить порт в файле cassandra.yaml (native_transport_port). Вы также должны изменить параметр «listen_address» и «native_transport_broadcast_address» на IP-адрес вашего хоста, чтобы вы не использовали петлевой адрес (вы можете использовать «hostname -i», чтобы найти свой IP-адрес вашего локального хоста) — и установить ваш «native_transport_address» на «0.0.0.0», если вы хотите, чтобы он прослушивался на всех интерфейсах. Это то, что мы делаем. Надеюсь, это поможет вам запустить узел.

person Jim Wartnick    schedule 13.01.2020
comment
действительно, это был порт, который уже был использован. Я поторопился, пытаясь применить советы с веб-сайта ccm (github.com/riptano/ccm/issues/87).), но в итоге ошиблись. Я меняю порты в node.conf каждого узла, и все в порядке. Я все еще изо всех сил пытаюсь запустить кластер, но, по крайней мере, я перешел к другим ошибкам. Спасибо - person twister9458; 14.01.2020

Cassandra использует следующие порты для разных процессов:

   thrift=('127.0.0.1', 9160)
   binary=('127.0.0.1', 9042)
   storage=('127.0.0.1', 7000)

Убедитесь, что все эти порты не используются ни для одного из IP-адресов вашего кластера.

person KayV    schedule 29.07.2020