Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: Deploy ClickHouse on Google Cloud C4A (Arm-based Axion VMs)

minutes_to_complete: 30

who_is_this_for: This learning path is intended for software developers deploying and optimizing ClickHouse on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.

learning_objectives:
- Provision an Arm-based SUSE SLES virtual machine on Google Cloud (C4A with Axion processors)
- Install ClickHouse on a SUSE Arm64 (C4A) instance
- Verify ClickHouse functionality by starting the server, connecting via client, and performing baseline data insertion and simple query tests on the Arm64 VM
- Measure ClickHouse query performance (read, aggregation, and concurrent workloads) to evaluate throughput and latency on Arm64 (Aarch64)

prerequisites:
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free) account with billing enabled
- Basic familiarity with [ClickHouse](https://clickhouse.com/)
author: Pareena Verma

##### Tags
skilllevels: Introductory
subjects: Databases
cloud_service_providers: Google Cloud

armips:
- Neoverse

tools_software_languages:
- ClickHouse
- clickhouse-benchmark

operatingsystems:
- Linux

# ================================================================================
# FIXED, DO NOT MODIFY
# ================================================================================
further_reading:
- resource:
title: Google Cloud documentation
link: https://cloud.google.com/docs
type: documentation

- resource:
title: ClickHouse documentation
link: https://clickhouse.com/docs/
type: documentation

- resource:
title: ClickHouse benchmark documentation
link: https://clickhouse.com/docs/operations/utilities/clickhouse-benchmark
type: documentation

weight: 1
layout: "learningpathall"
learning_path_main_page: "yes"
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
# ================================================================================
# FIXED, DO NOT MODIFY THIS FILE
# ================================================================================
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
title: "Next Steps" # Always the same, html page title.
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: Getting started with ClickHouse on Google Axion C4A (Arm Neoverse-V2)

weight: 2

layout: "learningpathall"
---

## Google Axion C4A Arm instances in Google Cloud

Google Axion C4A is a family of Arm-based virtual machines built on Google’s custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.

The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.

To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog.

## ClickHouse

ClickHouse is an open-source, columnar OLAP database designed for **high-performance analytics** and real-time reporting. It supports **vectorized execution, columnar storage, and distributed deployments** for fast queries on large datasets. It offers **scalable, fault-tolerant architecture** with support for replication and sharding.

Ideal for analytics, monitoring, and event processing, ClickHouse runs efficiently on both x86 and Arm-based platforms, including AWS Graviton and GCP Arm VMs.

Learn more at the [ClickHouse website](https://clickhouse.com/).
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
---
title: ClickHouse Baseline Testing on Google Axion C4A Arm Virtual Machine
weight: 5

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## ClickHouse Baseline Testing on GCP SUSE VMs
This section validates that ClickHouse is functioning correctly and provides a **basic performance baseline** on a SUSE Linux Arm64 VM.


### Verify ClickHouse is running

```console
sudo systemctl status clickhouse-server
```

This confirms that the ClickHouse server is running correctly under systemd and ready to accept connections.

```output
● clickhouse-server.service - ClickHouse Server
Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2025-11-27 05:07:42 UTC; 18s ago
Main PID: 4229 (ClickHouseWatch)
Tasks: 814
CPU: 2.629s
CGroup: /system.slice/clickhouse-server.service
├─ 4229 clickhouse-watchdog server --config=/etc/clickhouse-server/config.xml
└─ 4237 /usr/bin/clickhouse server --config=/etc/clickhouse-server/config.xml
```

### Connect to ClickHouse
Client connection ensures that the ClickHouse CLI can successfully communicate with the running server.

```console
clickhouse client
```
### Create a test database and table
Database and table creation sets up a dedicated test environment and an analytics-optimized MergeTree table for baseline evaluation.

```sql
CREATE DATABASE baseline_test;
USE baseline_test;
```

You should see an output similar to:
```output
CREATE DATABASE baseline_test
Query id: bc615167-ecd5-4470-adb0-918d8ce07caf
Ok.
0 rows in set. Elapsed: 0.012 sec.


USE baseline_test
Query id: cd49553a-c0ff-4656-a3e5-f0e9fccd9eba
Ok.
0 rows in set. Elapsed: 0.001 sec.
```
Create a simple table optimized for analytics:

```sql
CREATE TABLE events
(
event_time DateTime,
user_id UInt64,
event_type String
)
ENGINE = MergeTree
ORDER BY (event_time, user_id);
```

You should see an output similar to:
```output
Query id: 62ce9b9c-9a7b-45c8-9a58-fa6302b13a88

Ok.

0 rows in set. Elapsed: 0.011 sec.
```

### Insert baseline test data
Data insertion loads a small, controlled dataset to simulate real event data and validate write functionality.
Insert sample data (10,000 rows):

```sql
INSERT INTO events
SELECT
now() - number,
number,
'click'
FROM numbers(10000);
```

You should see an output similar to:
```output
Query id: af860501-d903-4226-9e10-0e34467f7675

Ok.

10000 rows in set. Elapsed: 0.003 sec. Processed 10.00 thousand rows, 80.00 KB (3.36 million rows/s., 26.86 MB/s.)
Peak memory usage: 3.96 MiB.
```

**Verify row count:**

Row count validation verifies that the inserted data is stored correctly and consistently.

```sql
SELECT count(*) FROM events;
```

You should see an output similar to:
```output
Query id: 644f6556-e69b-4f98-98ec-483ee6869d6e

┌─count()─┐
1. │ 10000 │
└─────────┘

1 row in set. Elapsed: 0.002 sec.
```

### Baseline read performance test
Baseline read queries measure basic query performance for filtering, aggregation, and grouping, establishing an initial performance reference on the Arm64 VM.

- Run simple analytical queries:

```sql
SELECT count(*) FROM events WHERE event_type = 'click';
```

You should see an output similar to:
```output
Query id: bd609de4-c08e-4f9f-804a-ee0528c94e4d

┌─count()─┐
1. │ 10000 │
└─────────┘

1 row in set. Elapsed: 0.003 sec. Processed 10.00 thousand rows, 130.00 KB (2.98 million rows/s., 38.71 MB/s.)
Peak memory usage: 392.54 KiB.
```

- This query groups events by date and counts how many events occurred on each day, returning a daily summary of total events in chronological order.

```sql
SELECT
toDate(event_time) AS date,
count(*) AS total_events
FROM events
GROUP BY date
ORDER BY date;
```

You should see an output similar to:
```output
Query id: b3db69f8-c885-419f-9900-53d258f0b996

┌───────date─┬─total_events─┐
1. │ 2025-11-27 │ 10000 │
└────────────┴──────────────┘

1 row in set. Elapsed: 0.002 sec. Processed 10.00 thousand rows, 40.00 KB (4.08 million rows/s., 16.33 MB/s.)
Peak memory usage: 785.05 KiB.
```

The baseline tests confirm that ClickHouse is stable, functional, and performing efficiently on the Arm64 VM. With core operations validated, the setup is now ready for detailed performance benchmarking.
Loading