[CentOS] Linux환경에서 Cassandra(NoSql DB)를 설치하는 방법(DBeaver로 접속하기)


Development note/Linux  2020. 6. 1. 17:04

안녕하세요. 명월입니다.


이 글은 Linux환경에서 Cassandra(Nosql DB)를 설치하는 방법(DBeaver로 접속하기)에 대한 글입니다.


프로그램을 하면서 주류로 사용되는 데이터 베이스는 RDBMS(관계형 데이터 베이스)입니다. RDBMS라고 하면 무슨 디비일까 하겠지만 오라클이라던가 MS sql server, mysql, MariaDB, Postgres..의 데이터 베이스 형식을 이야기합니다.

이 RDBMS는 많은 장점이 있습니다. 설치가 쉽고, 관리도 쉽고 빠르고.. 등등..의 무수히 많은 장점이 있습니다만.. 단점은 확장성과 데이터 양에 대비한 성능에 있습니다.

최근에는 PC의 성능이 많이 좋아져서 웬만한 대용량도 RDBMS가 커버를 해줍니다만, 언젠가는 데이터 양에 비례해 성능이 떨어질 것입니다. 이 RDBMS는 보통 하나의 PC에 설치하기 때문에 PC의 하드웨어 용량에 언젠간 한계에 부딪칠 것입니다.

그렇다고 RDBMS를 확장하는게 쉽지가 않습니다. 이런 단점을 보안해 주는게 Nosql이 있습니다.


이 Nosql은 RDBMS에 적응되어 있는 사람이 사용하기에는 매우 불편합니다. Join도 안되고.. 여러가지 제약이 많습니다.

그러나 이 데이터 양 대비 성능에 문제없고 확장성도 매우 좋기 때문에 대용량을 다루는 데이터라고 한다면 Nosql를 사용하는 게 맞습니다.

이 Nosql과 RDBMS에 대해서는 다른 글에서 좀 더 자세히 설명하겠습니다.


Nosql도 종류가 많이 있습니다. 이 글에서는 Nosql에서 Cassandra를 설치해 보겠습니다.

먼저 Nosql를 설치하기 위해서는 선행으로 설치해야 할 것이있습니다. Java 1.8이상과 Python 2.x입니다.

Java를 설치하는 방법은 예전에 설명한 적이 있습니다.

링크 - [CentOS] Java 설치하기


Python의 경우는 3.x를 설치하면 cqlsh가 실행되지 않습니다. 그래서 2.X가 설치되어 있어야 합니다.

sudo yum -y install python2

저는 이미 설치가 되어 있습니다.


이제 Cassandra를 설치하기 위해서 yum repository에 추가하겠습니다.

링크 - https://cassandra.apache.org/download/

vim /etc/yum.repos.d/cassandra.repo
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS

여기서 baseurl에 버전 별로 추가할 수 있는데 40x는 아직 alpha버젼이니 311x 버전으로 설치하겠습니다.(참고로 Cassandra는 버젼 별로 약간씩 사용 방법이 다릅니다.)

위 repo를 작성하고 yum으로 인스톨을 하겠습니다.

yum -y install cassandra

설치가 완료되었습니다. 아마 설치하는데 10분도 안 걸릴 것입니다.

참고 - 설치 디렉토리 /var/lib/cassandra (삭제할 때 여기도 같이 지워줘야 한다.)


그리고 Cassandra를 실행하기 전에 몇가지 환경 설정을 해야 합니다. 기동시 설정되는 환경 설정입니다.

vim /etc/systemd/system/cassandra.service
[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

그리고 cassandra 환경 설정입니다.

vim /etc/cassandra/conf/cassandra.yaml

중간 쯤에 가보면 authenticator가 있습니다.

이 부분을 PasswordAuthenticator로 수정합니다. AllowAllAuthenticator의 경우는 패스워드 없이 접근 가능한 것인데 패스워드로 접근 가능하게 수정하는 것입니다.

이번에는 원격 접속을 허용하는 것입니다.


초기 설정은 localhost로 설정되어 있고, broadcast_rpc_address가 주석 처리되어 있습니다.

이 부분을 rpc_address를 0.0.0.0으로 설정하고 broadcast_rpc_address의 주석을 해제하면 1.2.3.4로 설정됩니다.

이제 설정은 끝났습니다. Cassandra를 기동하겠습니다.

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

systemctl status cassandra.service 명령어로 active가 되어 있는지 확인하고 nodetool status로 현재 Cassandra의 상태를 확인할 수 있습니다.

여기까지 문제없이 되면 설치가 완료 된 것입니다.


이제 데이터 베이스(Keyspace)를 작성하고 유저를 만들겠습니다.

초기 유저와 비밀번호는 cassandra//cassandra입니다.

cqlsh -u cassandra -p cassandra

먼저 유저를 작성하겠습니다. 그리고 cassandra의 id를 제거합니다.

-- 유저 추가, SUPERUSER 권한 추가
CREATE USER nowonbun WITH PASSWORD 'a12345' SUPERUSER;
-- 비밀번호 변경과 권한 해제
ALTER USER cassandra WITH PASSWORD 'a12345' NOSUPERUSER;
-- 유저 삭제
DROP USER cassandra

참고로 접속 중인 상태에서는 유저를 삭제할 수 없습니다. 그래서 유저 생성 후에 종료해서 다른 아이디로 로그인 한 후에 유저를 제거합니다.


이제 데이터 베이스를 작성해 보겠습니다. Nosql에서는 데이터 베이스를 Keyspace라고 이야기합니다.

-- 하나의 Data Center를 이용
CREATE KEYSPACE Test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3};
-- 두 개 이상의 Data Center를 이용
CREATE KEYSPACE Test WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1};

일단 테스트이니 SimpleStrategy로 작성하겠습니다.

여기까지 카산드라 설치와 설정은 끝났습니다.


이제부터 Query browser에서 접속해서 사용하는 방법입니다.

Nosql이 사용하기 힘든 이유 중 하나가 좋은 Query browser가 없습니다. 제가 예전에는 sql developer나 A5M2를 자주 사용했는데... 이 Nosql때문에 DBeaver로 바꾸었습니다.

가장 큰 이유는 이 Nosql를 지원한다는 것입니다.

링크 - Dbeaver (무료 데이터 베이스 접속 툴)


막상 실행하면 Nosql connection이 없습니다. 드라이버를 추가해야 합니다.

저는 이미 추가가 되어 있지만 처음 사용하시는 분들은 없을 것입니다. new로 추가합니다.

Driver Name은 적당하게 작성하시고 Class Name과 Url Template는 아래와 같이 작성합니다.

# Class Name
org.apache.cassandra2.cql.jdbc.CassandraDriver
# Url Template
jdbc:cassandra://{host}[:{port}]/{database}

그리고 port는 9042로 설정합니다.

그리고 Add Artifact를 클릭해서 드라이버를 설정합니다.

링크 - https://mvnrepository.com/artifact/com.github.adejanovski/cassandra-jdbc-wrapper/3.1.0

Driver를 생성하고 Connection을 생성하면 우리가 추가한 Cassandra가 있습니다.

그리고 우리가 설치한 Cassandra를 설정합니다.

Tset Connection을 실행해 봅니다.(Driver Download화면이 나오면 설치하면 됩니다.)

그리고 테이블을 하나 만들고 테스트를 합니다.

-- Ketspace 설정
use test;
-- 테이블 생성
create table test(
	idx bigint,
	contents text,
	primary key(idx)
);
-- 데이터 입력
insert into test.test (idx,contents) values(1, 'hello world');
-- 검색
select * from test.test;

Cassandra가 제대로 실행되는 게 확인이 됩니다.


여기까지 Linux환경에서 Cassandra(NoSql DB)를 설치하는 방법(DBeaver로 접속하기)에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.