Установите Apache Cassandra на AlmaLinux 8 | Oracle Linux 8 |
Многим организациям, работающим с большими неструктурированными данными, требуется хорошо масштабируемый и доступный инструмент. Apache Cassandra — самый популярный инструмент для этой задачи.
Apache Cassandra – это база данных NoSQL с открытым исходным кодом, способная обрабатывать большие объемы неструктурированных типов данных. Этот инструмент был создан как проект с открытым исходным кодом в 2008 и позднее в 2009 принадлежал Apache. Cassandra работает над одноранговой конструкцией, основанной на двух основных продуктах: DynamoDB и Big Table от Google. В этой модели все узлы в кластере имеют равные права на чтение/запись, и главные узлы не требуются. Удивительная особенность Cassandra заключается в том, что можно добавлять в кластер бесконечные узлы и расширять его по своему желанию.
Apache Cassandra предлагает следующие ключевые функции и преимущества:
- Быстрая запись. Поскольку данные, обрабатываемые здесь, неструктурированы, вы можете просто загружать их в базу данных на смехотворной скорости.
- Высокая масштабируемость – вы можете добавлять в кластер бесконечное количество узлов в любой момент времени. Cassandra должна расти горизонтально настолько, насколько вам это нужно.
- Отказоустойчивость. Поскольку все узлы обрабатываются одинаково, выход из строя одного из них не имеет большого значения.
- Настраиваемая согласованность. Настройка производительности может выполняться поверх обычной настройки производительности JVM. Параметры сжатия на уровне таблицы также можно настроить при создании таблиц.
- Язык запросов Cassandra. Поскольку Cassandra представляет собой NoSQL, вы можете легче перемещать данные по горизонтали между кластерами, иметь потенциал для масштабной масштабируемости и не подвергаться ограничениям объединений и фиксированных схем.
В этом руководстве представлена пошаговая иллюстрация того, как установить и настроить Apache Cassandra в Alma Linux 8 | Oracle Linux 8.
Шаг 1. Обновите свою систему.
Начните с обновления кеша репозитория и обновления всех пакетов в вашей системе.
sudo dnf update
Теперь установите репозиторий EPEL на Alma Linux 8 | Oracle Linux 8.
sudo dnf install yum-utils
sudo dnf install epel-release
Включите PowerTools, как показано ниже.
sudo dnf config-manager --set-enabled powertools
Шаг 2. Установите Java на Alma Linux 8 | Oracle Linux 8.
Поскольку Apache Cassandra написан на Java, прежде чем продолжить, нам необходимо установить Java в нашей системе. В этом руководстве мы установим OpenJDK 11, чтобы предложить среду выполнения Java, как показано ниже.
sudo dnf install java-11-openjdk
После установки проверьте версию.
$ java --version
openjdk 11.0.14 2022-01-18 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)
Шаг 3. Добавьте репозиторий Apache Cassandra в Alma Linux 8 | Oracle Linux 8.
Пакеты Cassandra недоступны в репозиториях пакетов Alma Linux 8 | Oracle Linux 8 по умолчанию, поэтому их необходимо добавить. Основное преимущество установки Cassandra из официальных репозиториев заключается в том, что мы гарантируем получение последних обновлений программного обеспечения с помощью простой команды обновления.
Создайте репозиторий, используя ваш любимый редактор.
sudo vi /etc/yum.repos.d/cassandra.repo
В файл добавьте строки:
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
Этот репозиторий относится к версии 4.0, которая на данный момент является последней версией, хотя для Cassandra существуют и более старые версии.
Сохраните файл и обновите индекс пакета.
sudo dnf update -y
Шаг 4. Установите Apache Cassandra на Alma Linux 8 | Oracle Linux 8.
Используя добавленный выше репозиторий, мы можем легко установить последнюю версию Apache Cassandra на Alma Linux 8 | Oracle Linux 8 с помощью команды:
sudo dnf install cassandra
Дерево зависимостей:
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
cassandra noarch 4.0.2-1 cassandra 45 M
Installing dependencies:
java-1.8.0-openjdk-headless-slowdebug
x86_64 1:1.8.0.322.b06-2.el8_5 powertools 36 M
java-1.8.0-openjdk-slowdebug x86_64 1:1.8.0.322.b06-2.el8_5 powertools 345 k
Transaction Summary
================================================================================
Install 3 Packages
Total download size: 81 M
Installed size: 194 M
Is this ok [y/N]: y
Примите импорт ключа GPG и продолжите установку.
Шаг 5. Запустите и включите службу Cassandra.
После установки нам необходимо запустить и разрешить автоматический запуск службы Cassandra при загрузке системы. Это можно сделать с помощью команд ниже:
sudo service cassandra start
sudo systemctl enable cassandra
Проверьте, запущена ли служба:
$ systemctl status cassandra
● cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/rc.d/init.d/cassandra; generated)
Active: active (running) since Wed 2022-02-16 05:16:34 EST; 11s ago
Docs: man:systemd-sysv-generator(8)
Main PID: 32646 (java)
Tasks: 16 (limit: 36433)
Memory: 1.7G
CGroup: /system.slice/cassandra.service
└─32646 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64-slowdebug/jre/bin/java -ea -da:net.openhft... -XX:+UseThrea>
Вы также можете проверить, работает ли Cassandra на localhost:9042, как показано ниже. Не забудьте дождаться, пока Cassandra завершит загрузку всех модулей.
nodetool status
Выход :
Шаг 6. Установите язык запросов Cassandra.
Чтобы иметь возможность взаимодействовать с Cassandra, нам нужен инструмент cqlsh
, совместимый с Python 2.7 или Python 3.6+. В этом руководстве мы будем использовать Python 3.8, установленный, как показано ниже.
sudo dnf install python38
Если у вас несколько версий. вам может потребоваться установить версию Python по умолчанию, как показано ниже.
$ sudo update-alternatives --config python3
There are 2 programs which provide 'python3'.
Selection Command
-----------------------------------------------
*+ 1 /usr/bin/python3.6
2 /usr/bin/python3.8
Enter to keep the current selection[+], or type selection number: 2
Проверьте версию Python.
$ python3 --version
Python 3.8.8
Теперь, используя PIP, установите инструмент cqlsh.
pip3 install --user cqlsh
Пример вывода:
Collecting cqlsh
Downloading https://files.pythonhosted.org/packages/af/62/88bf9200252158871843a1f65c5215a5480f64817b663ff8ece41ad0f977/cqlsh-6.0.0-py3-none-any.whl (106kB)
|████████████████████████████████| 112kB 12.3MB/s
Collecting cql
Downloading https://files.pythonhosted.org/packages/0b/15/523f6008d32f05dd3c6a2e7c2f21505f0a785b6dc8949cad325306858afc/cql-1.4.0.tar.gz (76kB)
|████████████████████████████████| 81kB 2.9MB/s
Collecting six
Downloading https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl
Collecting cassandra-driver
Downloading https://files.pythonhosted.org/packages/0b/c6/77ffe96b897a6dbf867847bf1c8ebf72ca9881fffbc08c06a206a33ce1e1/cassandra_driver-3.25.0-cp38-cp38-manylinux1_x86_64.whl (3.6MB)
|████████████████████████████████| 3.6MB 51.2MB/s
Collecting thrift
Downloading https://files.pythonhosted.org/packages/6e/97/a73a1a62f62375b21464fa45a0093ef0b653cb14f7599cffce35d51c9161/thrift-0.15.0.tar.gz (59kB)
|████████████████████████████████| 61kB 1.8MB/s
Collecting geomet<0.3,>=0.1
Downloading https://files.pythonhosted.org/packages/c9/81/156ca48f950f833ddc392f8e3677ca50a18cb9d5db38ccb4ecea55a9303f/geomet-0.2.1.post1-py3-none-any.whl
Collecting click
......
Проверьте установку.
$ cqlsh --version
cqlsh 6.0.0
Шаг 7. Настройте Apache Cassandra в Alma Linux 8 | Oracle Linux 8.
Файлы конфигурации Apache Cassandra расположены в папке /etc/cassandra, запуск Java можно настроить в папке /etc/default/cassandra.
7.1. Настроить хранилище
Этот шаг предназначен для тех, кто хочет настроить дополнительный диск в качестве хранилища Apache Cassandra. По умолчанию Apache Cassandra хранит свои данные в /var/lib/cassandra. Однако в этом руководстве мы настроим это хранилище, подключив по этому пути внешний диск для хранения данных.
Сначала определите дополнительное подключенное хранилище.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
vda 252:0 0 40G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─almalinux-root 253:0 0 35G 0 lvm /
└─almalinux-swap 253:1 0 4G 0 lvm [SWAP]
Здесь дополнительный диск — /dev/sda. Отформатируйте диск в EXT4 с помощью команды mkfs
.
sudo mkfs.ext4 /dev/sda
Пример вывода
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 5c3c4032-637b-4e07-9772-83fe0425a6bd
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Проверьте, создан ли раздел.
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda ext4 5c3c4032-637b-4e07-9772-83fe0425a6bd
sr0
vda
├─vda1 xfs d64815a0-ceaa-42d9-a5c0-075079daf099 /boot
└─vda2 LVM2_member HH9t2V-12NT-iKyk-sEST-HbsT-Auf1-n14VM1
├─almalinux-root
│ xfs 7872878f-1b01-4717-97e2-1f045e3685e9 /
└─almalinux-swap
swap dbf263b7-aa5a-44d9-8a19-4c1c7adfa966 [SWAP]
Теперь мы смонтируем этот диск в /var/lib/cassandra, как показано ниже.
sudo cp -r /var/lib/cassandra /var/lib/cassandra.bak
sudo mount /dev/sda /var/lib/cassandra
Проверьте монтаж:
$ df -hT -P /var/lib/cassandra
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda ext4 20G 45M 19G 1% /var/lib/cassandra
Восстановите резервную копию и установите правильные разрешения.
sudo mv /var/lib/cassandra.bak/* /var/lib/cassandra
sudo chown -R cassandra:cassandra /var/lib/cassandra
Теперь настройте постоянное крепление, как показано ниже.
$ sudo vim /etc/fstab
/dev/sda /var/lib/cassandra ext4 defaults 0 0
Теперь у нас есть вторичное хранилище, настроенное как хранилище данных Apache Cassandra. Чтобы изменения вступили в силу, перезапустите Cassandra.
sudo systemctl restart cassandra
7.2. Измените имя кластера
После того, как настройки выполнены, переключитесь в CQL Shell с помощью команды:
cqlsh
Пример вывода:
Измените имя кластера, выполнив следующие действия:
Сначала выполните приведенную ниже команду в оболочке CQL.
UPDATE system.local SET cluster_name = 'My CLuster' WHERE KEY = 'local';
Выйдите из оболочки:
exit;
Теперь отредактируйте файл Cassandra ниже.
sudo vi /etc/cassandra/default.conf/cassandra.yaml
Замените имя кластера именем набора, как показано ниже.
# The name of the cluster. This is mainly used to prevent machines in
# one logical cluster from joining another.
cluster_name: 'My CLuster'
Теперь перезапустите службу.
nodetool flush system
sudo systemctl restart cassandra
Проверьте, были ли внесены изменения.
cqlsh
В оболочке используйте команду ниже, чтобы проверить имя кластера.
DESC CLUSTER
Пример вывода:
7.3. Включить аутентификацию пользователя
Мы начнем с создания резервной копии доступного файла перед его редактированием.
sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup
Теперь откройте файл:
sudo vi /etc/cassandra/conf/cassandra.yaml
Чтобы включить аутентификацию пользователя, внесите следующие изменения:
.....
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
.....
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
......
roles_validity_in_ms: 0
......
permissions_validity_in_ms: 0
.......
Сохраните файл и перезапустите Кассандру.
sudo systemctl restart cassandra
7.4 . Создайте пользователя-администратора для вашей базы данных.
Начните с входа в оболочку с учетными данными пользователя по умолчанию, как показано ниже:
cqlsh -u cassandra -p cassandra
Теперь создайте пользователя с помощью приведенной ниже команды, заменив соответствующим образом:
CREATE ROLE user1 WITH PASSWORD = 'Passw0rd' AND SUPERUSER = true AND LOGIN = true;
Не забудьте заменить user1 и Passw0rd предпочтительными учетными данными пользователя. После создания выйдите из оболочки.
exit;
Теперь попробуйте войти под созданным пользователем.
cqlsh -u user1 -p Passw0rd
Пример вывода:
Попав в оболочку, вы можете отключить права суперпользователя по умолчанию.
ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
Теперь предоставьте все разрешения созданному пользователю.
GRANT ALL PERMISSIONS ON ALL KEYSPACES TO 'user1';
exit;
7.5. Доступ к Apache Cassandra удаленно.
По умолчанию Apache Cassandra настроен на прослушивание на localhost. Однако вы можете настроить удаленный доступ к нему, внеся изменения в файл конфигурации, как показано ниже.
sudo vi /etc/cassandra/default.conf/cassandra.yaml
В файле внесите следующие изменения:
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
rpc_address: 192.168.205.3
Сохраните файл и перезапустите Кассандру.
sudo systemctl restart cassandra
Убедитесь, что служба прослушивает установленный IP-адрес:
$ sudo ss -plunt|grep 9042
tcp LISTEN 0 128 192.168.205.3:9042 0.0.0.0:* users:(("java",pid=39432,fd=261))
Разрешите порт через брандмауэр.
sudo firewall-cmd --permanent --add-port=9042/tcp
sudo firewall-cmd --reload
Теперь проверьте соединение на удаленной системе с установленным cqlsh.
cqlsh -u user1 192.168.205.3
Пример вывода:
Вот и все!
Заключительные мысли
Мы триумфально рассмотрели, как установить и настроить Apache Cassandra в Alma Linux 8 | Oracle Linux 8. Кроме того, мы настроили дополнительный диск в качестве хранилища данных Apache Cassandra и включили удаленный доступ. Теперь вы можете продолжить и выполнить горизонтальное масштабирование на Cassandra. Я надеюсь, что это было важно.
Узнать больше:
- Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8
- Установите MongoDB 5 на CentOS и RHEL
- Лучшие книги для изучения баз данных NoSQL и MongoDB
- Установите базу данных RavenDB NoSQL в Ubuntu