-
[Clickhouse] Docker 로 Clickhouse 구현하기Database/Clickhouse 2024. 2. 17. 17:05728x90반응형
- 목차
들어가며.
이번 글에서는 Docker 를 활용해서 Clickhouse 를 구축하는 글을 작성하려고 합니다.
사용할 Docker Image 는 bitnami/clickhouse 이미지입니다.
간단한 MergeTree 엔진의 Table 을 생성하고 데이터를 취급하는 예시들을 작성할 예정입니다.
bitnami/clickhouse 이미지를 사용하는 이유는 추후에 Kubernetes 에서 Clickhouse 를 구축하는 상황에서
Bitnami Helm Repo 의 Clickhouse Chart 가 사용됩니다.
그래서 yandex 를 포함한 다른 배포버전보다 bitnami 를 선택하였습니다.
Clickhouse Docker Container 구현하기.
아래 명령어를 통해서 Clickhouse Container 를 실행할 수 있습니다.
그리고 ALLOW_EMPTY_PASSWORD 환경변수를 yes 로 설정하여 password 입력 절차를 생략하였습니다.
docker run -d --name clickhouse \ -e ALLOW_EMPTY_PASSWORD=yes \ -p 8123:8123 \ -p 9000:9000 \ bitnami/clickhouse:23.3.19
아래의 명령어는 Clickhouse Client Shell 을 활성화시키는 명령어입니다.
clickhouse-client 명령어를 실행함으로써 Client Shell 이 활성화됩니다.
docker exec -it clickhouse clickhouse-client
ClickHouse client version 23.3.19.32 (official build). Connecting to localhost:9000 as user default. Connected to ClickHouse server version 23.3.19 revision 54462. Warnings: * Linux is not using a fast clock source. Performance can be degraded. Check /sys/devices/system/clocksource/clocksource0/current_clocksource * Linux transparent hugepages are set to "always". Check /sys/kernel/mm/transparent_hugepage/enabled * Effective user of the process (1001) does not match the owner of the data (clickhouse). 0f006a52fe43 :)
MergeTree 엔진 테이블 생성하기.
아래 SQL DDL 은 MergeTree 엔진의 테이블을 생성하는 쿼리문입니다.
user_actions 이라는 이름의 테이블을 생성하였구요.
user_actions 테이블은 사용자의 행동정보를 저장합니다.
user 는 행동 데이터의 행위자 정보, action 은 행동 데이터의 종류이고, acted_at 에 데이터의 생성 시각 정보를 담습니다.
create table default.user_actions ( user String, action String, acted_at DateTime ) engine=MergeTree() order by acted_at partition by toYYYYMM(acted_at);
데이터 생성하기.
insert into default.user_actions(user, action, acted_at) values ('Andy', 'Visit', '2023-01-01 00:00:00'), ('Brian', 'Buy', '2023-01-01 00:01:00'), ('Dennis', 'View', '2023-01-01 00:02:00'), ('Chris', 'View', '2023-01-01 00:03:00'), ('Emma', 'Buy', '2023-01-01 00:04:00'), ('Fabian', 'Cart', '2023-01-01 00:05:00'), ('Gareth', 'RemoveCart', '2023-01-01 00:06:00'), ('Hayden', 'Cart', '2023-01-01 00:07:00'), ('Illa', 'View', '2023-01-01 00:08:00')
Query id: 062230b2-8ae8-4ff2-ac97-b5f44f37dfae Ok. 9 rows in set. Elapsed: 0.002 sec.
데이터 조회하기.
select * from user_actions
Query id: 2bebd066-7976-47ea-885e-1b341405837e ┌─user───┬─action─────┬────────────acted_at─┐ │ Andy │ Visit │ 2023-01-01 00:00:00 │ │ Brian │ Buy │ 2023-01-01 00:01:00 │ │ Dennis │ View │ 2023-01-01 00:02:00 │ │ Chris │ View │ 2023-01-01 00:03:00 │ │ Emma │ Buy │ 2023-01-01 00:04:00 │ │ Fabian │ Cart │ 2023-01-01 00:05:00 │ │ Gareth │ RemoveCart │ 2023-01-01 00:06:00 │ │ Hayden │ Cart │ 2023-01-01 00:07:00 │ │ Illa │ View │ 2023-01-01 00:08:00 │ └────────┴────────────┴─────────────────────┘ 9 rows in set. Elapsed: 0.004 sec.
반응형'Database > Clickhouse' 카테고리의 다른 글
[ClickHouse] primary.idx 파일 알아보기 (0) 2024.02.28 [Clickhouse] ReplicatedMergeTree 알아보기 (0) 2024.02.18 [ClickHouse] Multi Sharding 구현하기 ( Docker, Shards ) (0) 2024.02.17 [Clickhouse] Shard & Replica Cluster 구성하기 (0) 2024.02.14 [ClickHouse] Compact Wide Parts 알아보기 ( part_type ) (0) 2024.01.16