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

Установите Cassandra в CentOS Linux

Шаги установки Apache Cassandra и примеры команд CQL

1. Введение

Cassandra — это система управления распределенными базами данных с открытым исходным кодом, широким столбцовым хранилищем и базой данных NoSQL, которая может обрабатывать огромные объемы данных на множестве обычных серверов без единой точки отказа. Он был создан Apache Software Foundation и написан на Java. В этой статье мы пошагово рассмотрим процесс установки Cassandra в CentOS 7 Linux.

2. Предварительные условия

Все приведенные ниже команды следует запускать от имени пользователя root или sudo.

2.1. Установите Python 2.7

В CentOS 7 предустановлен Python 2.7. Если по какой-то причине он отсутствует, вы можете использовать следующую команду для его установки:

yum -y install python
python --version
Python 2.7.5

2.2. Установить Java

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

yum install java-1.8.0-openjdk-devel
java -version

Пример вывода:

openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

3. Как установить Кассандру

Сначала давайте добавим репозиторий Cassandra. Для этого создайте файл с именем cassandra.repo в каталоге /etc/yum.repos.d/:

vi /etc/yum.repos.d/cassandra.repo

Добавьте в него следующие строки:

[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS

Нажмите клавишу ESC и введите :wq, чтобы сохранить файл и закрыть его.

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

yum repolist

Список включенных репозиториев yum

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

yum -y install cassandra

Включите и запустите службу Cassandra:

systemctl enable cassandra
cassandra.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig cassandra on
systemctl start Cassandra

Убедитесь в статусе Кассандры:

systemctl status 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  69.08 KiB  16      100.0%            bf2df7a9-54bc-41c9-8c6c-0b9322d10e71  rack1

Просмотр сведений о кластере

В выводе

  • UN – в нормальном режиме
  • Адрес – IP-адрес узла.
  • Загрузка — после исключения всего содержимого в подкаталоге моментальных снимков объем данных файловой системы в каталоге данных Cassandra. Каждые 90 секунд один раз будет обновляться.
  • Токены – количество токенов, назначенных узлу.
  • Владеет — объёмом данных, которыми владеет узел; узел может владеть 33% кольца, но отображать 100%, если коэффициент репликации равен 3.
  • Идентификатор хоста – идентификатор сети хоста.
  • Стойка — стойка узла, где она существует.

4. Cqlsh — CLI для Кассандры

cqlsh — это интерфейс командной строки для использования CQL для подключения к Cassandra (язык запросов Cassandra). Он включен в каждый пакет Cassandra и может быть найден вместе с исполняемым файлом cassandra в каталоге bin/. Драйвер собственного протокола Python используется для реализации cqlsh, который подключается к одному узлу.

Чтобы запустить Cqlsh, выполните:

cqlsh

Пример вывода:

Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>

Запустить Cqlsh

5. Примеры команд CQL

5.1. Создать ключевое пространство

В Cassandra пространство ключей служит контейнером данных, аналогично базе данных в системах управления реляционными базами данных (RDBS).

cqlsh> CREATE KEYSPACE IF NOT EXISTS OsTechNix WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 };
cqlsh>

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

cqlsh> SELECT * FROM system_schema.keyspaces;

Проверьте пространство ключей

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

cqlsh> desc keyspaces;

Будут перечислены все пространства ключей в кластере:

ostechnix  system_auth         system_schema  system_views
system     system_distributed  system_traces  system_virtual_schema

Показать все пространства ключей

5.2. Создайте таблицу и вставьте образец данных

Вы можете использовать оператор CREATE TABLE, определяющий типы данных для каждого столбца, как мы обычно делаем в РСУБД. Данные хранятся в таблицах CQL со строками столбцов, подобно определениям SQL.

Вы должны определить «первичный ключ» и другие поля данных для создания таблицы. Следуйте приведенному ниже примеру для создания таблицы.

cqlsh> CREATE TABLE ostechnix.sample_table ( id UUID PRIMARY KEY, name text, birthday timestamp, nationality text, weight text, height text );
cqlsh>

Используйте оператор INSERT, чтобы вставить простые данные в таблицу ostechnix.sample_table, которую мы создали выше. В приведенном ниже примере в таблицу добавляются две записи.

cqlsh> INSERT INTO ostechnix.sample_table (id, name, nationality) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'KARTHICK', 'Indian');
cqlsh> INSERT INTO ostechnix.sample_table (id, name, nationality, weight) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a804e3, 'MOHAN', 'Indian', '85');

5.3. Запрос таблицы

Используйте оператор SELECT для возврата одной или нескольких строк из таблицы.

cqlsh> SELECT * FROM ostechnix.sample_table;

Таблица запросов

Здесь * возвращает все данные из таблицы.

cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85';

Пример вывода:

InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"
cqlsh>

Cassandra не будет выполнять запрос, в котором не указаны значения для всех столбцов первичного ключа в предложении 'where', и выдаст указанное выше предупреждение об ошибке для использования 'ALLOW FILTERING'.

Причина этой ошибки заключается в том, что Cassandra не сможет идентифицировать узел, содержащий требуемые результаты, если полный ключ раздела не включен в предложение WHERE. В результате Cassandra придется сканировать весь набор данных на каждом узле, чтобы гарантировать, что он идентифицировал соответствующие данные.

cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85' ALLOW FILTERING;

Фильтровать элементы из таблицы

6. Резюме

В этой статье мы рассмотрели процедуры установки Cassandra и несколько примеров команд CQL. В следующих статьях мы подробно рассмотрим операцию «Кассандра».

Ресурсы:

  • https://docs.datastax.com/en/cql-oss/3.3/cql/cqlIntro.html
  • https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/install/installRHEL.html

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