Поиск по сайту:

Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8 |


Как установить Apache Cassandra на CentOS 8 | Машина Rocky Linux 8? Apache Cassandra — это бесплатная система управления базами данных NoSQL с открытым исходным кодом, предназначенная для распространения и обеспечения высокой доступности. Cassandra может обрабатывать большие объемы данных на множестве обычных серверов без единой точки отказа.

Это руководство проведет вас через установку Cassandra на CentOS 8 | Rocky Linux 8. После завершения установки мы приступим к настройке и настройке Cassandra для работы с машинами, имеющими минимальные доступные ресурсы.

Особенности Кассандры

Cassandra предоставляет язык запросов Cassandra (CQL), язык, подобный SQL.

  • Пространство ключей: определяет, как реплицируется набор данных, например, в каком
  • Таблица: определяет типизированную схему для набора разделов. Кассандра
  • Раздел: определяет обязательную часть первичного ключа для всех строк в
  • Строка: содержит набор столбцов, идентифицируемых уникальным первичным ключом.
  • Столбец: один элемент данных, тип которого принадлежит строке.

Cassandra поддерживает следующие клиентские драйверы:

  • Джава
  • Питон
  • Рубин
  • С#/.NET
  • Нодейс
  • PHP
  • С++
  • Скала
  • Кложур
  • Эрланг
  • Идти
  • Хаскелл
  • Ржавчина
  • Перл
  • Эликсир
  • Дарт

Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8

Для запуска Cassandra на CentOS 8 требуется Java | Rocky Linux 8. Но давайте сначала обновим и перезагрузим систему.

sudo dnf -y update

После обновления выполните перезагрузку системы.

sudo reboot

Шаг 1. Установите Java, Python и cqlsh.

Установите Python3 Pip и OpenJDK 8 на свой CentOS/Rocky Linux 8:

sudo dnf -y install python3 python3-pip java-11-openjdk java-11-openjdk-devel

Установите cqsh с помощью менеджера пакетов Python pip3:

sudo pip3 install cqlsh tox

Убедитесь, что установка прошла успешно:

.....
Collecting py>=1.4.17 (from tox)
  Downloading https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl (98kB)
    100% |████████████████████████████████| 102kB 9.5MB/s
Collecting toml>=0.10.2; python_version <= "3.6" (from tox)
  Downloading https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
Collecting filelock>=3.0.0 (from tox)
  Downloading https://files.pythonhosted.org/packages/84/ce/8916d10ef537f3f3b046843255f9799504aa41862bfa87844b9bdc5361cd/filelock-3.4.1-py3-none-any.whl
Collecting geomet<0.3,>=0.1 (from cassandra-driver->cqlsh)
  Downloading https://files.pythonhosted.org/packages/c9/81/156ca48f950f833ddc392f8e3677ca50a18cb9d5db38ccb4ecea55a9303f/geomet-0.2.1.post1-py3-none-any.whl
Collecting distlib<1,>=0.3.6 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
  Downloading https://files.pythonhosted.org/packages/43/a0/9ba967fdbd55293bacfc1507f58e316f740a3b231fc00e3d86dc39bc185a/distlib-0.3.7-py2.py3-none-any.whl (468kB)
    100% |████████████████████████████████| 471kB 2.2MB/s
Collecting platformdirs<3,>=2.4 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
  Downloading https://files.pythonhosted.org/packages/b1/78/dcfd84d3aabd46a9c77260fb47ea5d244806e4daef83aa6fe5d83adb182c/platformdirs-2.4.0-py3-none-any.whl
Collecting importlib-resources>=5.4; python_version < "3.7" (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
  Downloading https://files.pythonhosted.org/packages/24/1b/33e489669a94da3ef4562938cd306e8fa915e13939d7b8277cb5569cb405/importlib_resources-5.4.0-py3-none-any.whl
Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata>=0.12; python_version < "3.8"->tox)
  Downloading https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Collecting zipp>=0.5 (from importlib-metadata>=0.12; python_version < "3.8"->tox)
  Downloading https://files.pythonhosted.org/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Collecting pyparsing!=3.0.5,>=2.0.2 (from packaging>=14->tox)
  Downloading https://files.pythonhosted.org/packages/39/92/8486ede85fcc088f1b3dba4ce92dd29d126fd96b0008ea213167940a2475/pyparsing-3.1.1-py3-none-any.whl (103kB)
    100% |████████████████████████████████| 112kB 10.0MB/s
Collecting click (from geomet<0.3,>=0.1->cassandra-driver->cqlsh)
  Downloading https://files.pythonhosted.org/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
    100% |████████████████████████████████| 102kB 8.5MB/s
Installing collected packages: typing-extensions, zipp, importlib-metadata, click, geomet, cassandra-driver, cqlsh, distlib, filelock, platformdirs, importlib-resources, virtualenv, pluggy, pyparsing, packaging, py, toml, tox
  Running setup.py install for cassandra-driver ... done
Successfully installed cassandra-driver-3.28.0 click-8.0.4 cqlsh-6.1.2 distlib-0.3.7 filelock-3.4.1 geomet-0.2.1.post1 importlib-metadata-4.8.3 importlib-resources-5.4.0 packaging-21.3 platformdirs-2.4.0 pluggy-1.0.0 py-1.11.0 pyparsing-3.1.1 toml-0.10.2 tox-3.28.0 typing-extensions-4.1.1 virtualenv-20.17.1 zipp-3.6.0

Подтвердите установку Java и cqlsh.

$ java -version
openjdk version "11.0.18-ea" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS, mixed mode, sharing)

$ cqlsh --version
cqlsh 6.1.0

Шаг 2. Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8

Теперь, когда Java и Python установлены. Давайте теперь добавим репозиторий Cassandra в нашу систему CentOS/Rocky. Более подробную информацию о настройке репозитория можно найти на официальных страницах документации.

sudo tee  /etc/yum.repos.d/cassandra.repo<<EOF
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/41x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF

Установите Apache Cassandra с помощью команды ниже.

sudo yum -y install cassandra

Чтобы подтвердить версию установленного пакета cassandra, используйте:

$ rpm -qi cassandra
Name        : cassandra
Version     : 4.1.3
Release     : 1
Architecture: noarch
Install Date: Wed 16 Aug 2023 02:16:33 AM UTC
Group       : Development/Libraries
Size        : 58896904
License     : Apache Software License 2.0
Signature   : RSA/SHA512, Tue 18 Jul 2023 08:18:51 PM UTC, Key ID 32f35cb2f546d93e
Source RPM  : cassandra-4.1.3-1.src.rpm
Build Date  : Tue 18 Jul 2023 08:18:30 PM UTC
Build Host  : 9bc3d3817a9e
Relocations : (not relocatable)
URL         : http://cassandra.apache.org/
....

Создайте сервис Cassandra.

sudo tee /etc/systemd/system/cassandra.service<<EOF
[Unit]
Description=Apache Cassandra
After=network.target

[Service]
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always

[Install]
WantedBy=multi-user.target
EOF

Запустите и включите запуск службы при загрузке.

sudo systemctl daemon-reload
sudo systemctl start cassandra.service
sudo systemctl enable cassandra

Проверьте статус услуги:

$ systemctl status cassandra.service
 cassandra.service - Apache Cassandra
   Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-08-16 01:48:30 UTC; 30s ago
 Main PID: 6371 (java)
    Tasks: 16 (limit: 10843)
   Memory: 1.0G
   CGroup: /system.slice/cassandra.service
           └─6371 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+>

Aug 16 01:48:45 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:45,049 YamlConfigurationLoader.java:102 - Configuration location: file:/etc/cassandra/default.conf/cassandra.yaml
Aug 16 01:48:49 cent8.mylab.io cassandra[6371]: WARN  [main] 2023-08-16 01:48:49,810 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:49,986 Config.java:1163 - Node configuration:[allocate_tokens_for_keyspace=null; allocate_tokens_for_local_replication_>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:50,015 DatabaseDescriptor.java:467 - DiskAccessMode 'auto' determined to be mmap, indexAccessMode is mmap
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:50,017 DatabaseDescriptor.java:521 - Global memtable on-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:50,018 DatabaseDescriptor.java:525 - Global memtable off-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO  [main] 2023-08-16 01:48:50,044 DatabaseDescriptor.java:592 - Native transport rate-limiting disabled.
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN  [main] 2023-08-16 01:48:50,294 DatabaseDescriptor.java:990 - Small commitlog volume detected at '/var/lib/cassandra/commitlog'; setting commitl>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN  [main] 2023-08-16 01:48:50,315 DatabaseDescriptor.java:657 - Only 15.499GiB free across all data volumes. Consider adding more capacity to your>
Aug 16 01:48:57 cent8.mylab.io cassandra[6371]: WARN  [main] 2023-08-16 01:48:57,981 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
...

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

$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
UN  127.0.0.1  70 KiB     256          100.0%            0daf41fa-22e5-4471-bc00-9aed6f566235  rack1

Чтобы выполнить запрос к Cassandra, вызовите оболочку CQL с помощью приведенной ниже команды.

$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.1.0 | Cassandra 4.1.3 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
  • Местоположение файлов конфигурации по умолчанию — /etc/cassandra.
  • Местоположение каталогов журналов и данных по умолчанию — /var/log/cassandra/ и /var/lib/cassandra.

Шаг 3. Настройка Cassandra на CentOS 8 | Рокки Линукс 8

Для запуска Cassandra на одном узле файл конфигурации по умолчанию находится в /etc/cassandra/conf/cassandra.yaml. Для настройки кластера узлов вам может потребоваться изменить этот файл, чтобы убедиться, что ваш кластер настроен правильно.

Как минимум вы

  • cluster_name: имя вашего кластера.
  • сид: разделенный запятыми список IP-адресов начальных значений вашего кластера.
  • storage_port: вам не обязательно это менять, но убедитесь, что этот порт не блокируется брандмауэрами.
  • listen_address: IP-адрес вашего узла. Это то, что позволяет другим узлам взаимодействовать с этим узлом, поэтому важно его изменить.
  • native_transport_port: что касается Storage_port, убедитесь, что этот порт не заблокирован брандмауэрами, поскольку клиенты будут связываться с Cassandra через этот порт.

Изменение расположения каталогов

Файл конфигурации yaml управляет следующими каталогами данных.

  • каталоги_файлов_данных: один или несколько каталогов, в которых расположены файлы данных.
  • commitlog_directory: каталог, в котором расположены файлы журнала фиксации.
  • saved_caches_directory: каталог, в котором расположены сохраненные кеши.
  • hints_directory: каталог, в котором расположены подсказки.

Если у вас несколько дисков, из соображений производительности рассмотрите возможность размещения файлов журнала фиксации и данных на разных дисках.

Установка переменных среды

Настройки уровня JVM, такие как размер кучи, задаются в файле cassandra-env.sh. Рассмотрите возможность добавления любого дополнительного аргумента командной строки JVM в переменную среды JVM_OPTS. Эти аргументы передаются службе Cassandra при ее запуске.

Кассандра Ведение журнала

Используемый регистратор — logback. Вы можете изменить свойства ведения журнала, отредактировав logback.xml. По умолчанию он записывает данные на уровне INFO в файл system.log, а на уровне отладки – в файл debug.log. При работе на переднем плане он также будет записываться на консоль на уровне INFO.

Обратитесь к официальному руководству по настройке клиентов.

Статьи по данной тематике: