forked from ArmDeveloperEcosystem/arm-learning-paths
-
Notifications
You must be signed in to change notification settings - Fork 1
Deploy ClickHouse on Google Cloud C4A (Arm-based Axion VMs) #33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
56 changes: 56 additions & 0 deletions
56
content/learning-paths/servers-and-cloud-computing/clickhouse-gcp/_index.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" | ||
| --- |
8 changes: 8 additions & 0 deletions
8
content/learning-paths/servers-and-cloud-computing/clickhouse-gcp/_next-steps.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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. | ||
| --- |
23 changes: 23 additions & 0 deletions
23
content/learning-paths/servers-and-cloud-computing/clickhouse-gcp/background.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/). |
168 changes: 168 additions & 0 deletions
168
content/learning-paths/servers-and-cloud-computing/clickhouse-gcp/baseline.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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:** | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add one-liner spacing |
||
|
|
||
| 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. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.