So installierst du die ClickHouse OLAP-Datenbank unter Debian

ClickHouse ist ein spaltenorientiertes Open-Source-Datenbankmanagementsystem, das von Yandex entwickelt wurde. Es ist plattformübergreifend und kann auf jedem Linux-, FreeBSD- oder Mac OS X-Betriebssystem installiert werden. ClickHouse bietet flexible Grenzen für die Abfragekomplexität und die Ressourcennutzung, die über Einstellungen feinjustiert werden können. ClickHouse bietet eine Vielzahl von Funktionen wie Datenkomprimierung, Unterstützung von IPv6, Hochverfügbarkeit, Dateneingabe in Echtzeit, parallele und verteilte Abfrageausführung, Lokalität der Referenz auf der Festplatte, echte spaltenorientierte Speicherung und vieles mehr.

In diesem Tutorial wird erklärt, wie du ClickHouse auf einem Debian 10 Server installierst. Außerdem wird erklärt, wie du mit dem ClickHouse-Client eine Datenbank und eine Tabelle erstellst und den ClickHouse-Server so konfigurierst, dass er eine Verbindung von einem entfernten Host zulässt.

Voraussetzungen

  • Ein Server, auf dem Debian 10 läuft.
  • Ein Root-Passwort ist auf deinem Server eingerichtet.

Erste Schritte

Bevor du beginnst, musst du dein System auf die neueste Version aktualisieren. Das kannst du tun, indem du den folgenden Befehl ausführst:

apt-get update -y
apt-get upgrade -y

Sobald dein Server aktualisiert ist, starte ihn neu, damit die Änderungen übernommen werden.

ClickHouse installieren

Standardmäßig ist ClickHouse nicht im Standard-Repository von Debian 10 verfügbar. Daher musst du das ClickHouse-Repository zur APT hinzufügen.

Lade zunächst den GPG-Schlüssel herunter und importiere ihn mit dem folgenden Befehl:

apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4

Du solltest die folgende Ausgabe sehen:

Executing: /tmp/apt-key-gpghome.CJf2zS1pCH/gpg.1.sh --keyserver keyserver.ubuntu.com --recv E0C56BD4
gpg: key C8F1E19FE0C56BD4: public key "ClickHouse Repository Key <milovidov@yandex-team.ru>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Als Nächstes fügst du das ClickHouse-Repository mit dem folgenden Befehl zum APT hinzu:

echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | tee /etc/apt/sources.list.d/clickhouse.list

Als Nächstes aktualisierst du das Repository und installierst das ClickHouse Server- und Client-Paket mit dem folgenden Befehl:

apt-get update -y
apt-get install dirmngr clickhouse-server clickhouse-client -y

Während der Installation wirst du aufgefordert, das ClickHouse-Passwort einzugeben (siehe unten):

Gib dein Passwort ein und drücke die Eingabetaste, um mit der Installation fortzufahren. Sobald die Installation abgeschlossen ist, starte den ClickHouse-Server und aktiviere ihn mit folgendem Befehl, damit er nach einem Neustart des Systems startet:

systemctl start clickhouse-server
systemctl enable clickhouse-server

Du kannst den Status des ClickHouse-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status clickhouse-server

Du solltest die folgende Ausgabe sehen:

systemctl status clickhouse-server
? clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sat 2019-09-07 07:48:00 EDT; 8s ago
  Process: 642 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-ser
 Main PID: 642 (code=exited, status=1/FAILURE)

In der obigen Ausgabe solltest du sehen, dass der ClickHouse-Server nicht gestartet werden kann. Um diesen Fehler zu beheben, öffne die Datei /etc/ssl/openssl.cnf mit dem folgenden Befehl:

nano /etc/ssl/openssl.cnf

Kommentiere die folgende Zeile:

#ssl_conf = ssl_sect

Speichere und schließe die Datei, wenn du fertig bist. Starte dann den Clickhouse-Server erneut mit dem folgenden Befehl:

systemctl start clickhouse-server

Wenn der ClickHouse-Server erfolgreich gestartet wurde, solltest du die folgende Ausgabe erhalten:

? clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 05:28:51 EDT; 1min 24s ago
 Main PID: 1822 (clickhouse-serv)
    Tasks: 38 (limit: 1138)
   Memory: 42.6M
   CGroup: /system.slice/clickhouse-server.service
           ??1822 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

Sep 06 05:28:51 debian systemd[1]: Started ClickHouse Server (analytic DBMS for big data).
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: clickhouse_remote_servers
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: clickhouse_compression
Sep 06 05:28:51 debian clickhouse-server[1822]: Logging trace to /var/log/clickhouse-server/clickhouse-server.log
Sep 06 05:28:51 debian clickhouse-server[1822]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: networks
Sep 06 05:28:53 debian clickhouse-server[1822]: Include not found: clickhouse_remote_servers
Sep 06 05:28:53 debian clickhouse-server[1822]: Include not found: clickhouse_compression

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Erstellen einer Datenbank und Tabelle mit ClickHouse

Du kannst Datenbanken und Tabellen erstellen und löschen, indem du SQL-Befehle direkt in der ClickHouse-Client-Eingabeaufforderung ausführst.

Verbinde dich zunächst mit dem ClickHouse-Server, indem du das Passwort angibst, das du während der ClickHouse-Installation mit dem folgenden Befehl erstellt hast:

clickhouse-client --password admin@123

Du solltest die folgende Ausgabe sehen:

ClickHouse client version 19.13.3.26 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.13.3 revision 54425.

debian :) 

Erstelle nun eine Beispieldatenbank namens clickdb mit dem folgenden Befehl:

debian :) CREATE DATABASE clickdb;

Du solltest die folgende Ausgabe sehen:

CREATE DATABASE clickdb

Ok.

0 rows in set. Elapsed: 0.014 sec. 

Als Nächstes änderst du die Datenbank mit folgendem Befehl in clickdb:

debian :) USE clickdb;

Du solltest die folgende Ausgabe sehen:

USE clickdb

Ok.

0 rows in set. Elapsed: 0.002 sec. 

Als Nächstes erstellst du mit folgendem Befehl eine Tabelle namens ontime:

debian :) CREATE TABLE ontime ( Year UInt16, Quarter UInt8, Month UInt8, DayofMonth UInt8, DayOfWeek UInt8, FlightDate Date, AirlineID Int32, FlightNum String ) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);

Du solltest die folgende Ausgabe sehen:

CREATE TABLE ontime
(
    `Year` UInt16, 
    `Quarter` UInt8, 
    `Month` UInt8, 
    `DayofMonth` UInt8, 
    `DayOfWeek` UInt8, 
    `FlightDate` Date, 
    `AirlineID` Int32, 
    `FlightNum` String
)
ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192)

Ok.

0 rows in set. Elapsed: 0.127 sec. 

Du kannst den Inhalt deiner Tabelle auch mit folgendem Befehl anzeigen:

debian :) describe ontime;

Du solltest die folgende Ausgabe sehen:

DESCRIBE TABLE ontime

??name?????????type?????default_type???default_expression???comment???codec_expression???ttl_expression??
? Year       ? UInt16 ?              ?                    ?         ?                  ?                ?
? Quarter    ? UInt8  ?              ?                    ?         ?                  ?                ?
? Month      ? UInt8  ?              ?                    ?         ?                  ?                ?
? DayofMonth ? UInt8  ?              ?                    ?         ?                  ?                ?
? DayOfWeek  ? UInt8  ?              ?                    ?         ?                  ?                ?
? FlightDate ? Date   ?              ?                    ?         ?                  ?                ?
? AirlineID  ? Int32  ?              ?                    ?         ?                  ?                ?
? FlightNum  ? String ?              ?                    ?         ?                  ?                ?
?????????????????????????????????????????????????????????????????????????????????????????????????????????

8 rows in set. Elapsed: 0.007 sec. 

Du kannst in der Tabelle ontime auch Daten einfügen, aktualisieren und löschen.

Datenbank und Tabelle löschen

Du kannst deine Datenbank und deine Tabelle auch mit dem ClickHouse-Client löschen.

Wenn du die Tabelle löschen willst, führe folgenden Befehl aus:

debian :) DROP TABLE ontime;

Du solltest die folgende Ausgabe sehen:

DROP TABLE ontime

Ok.

0 rows in set. Elapsed: 0.003 sec. 

Du kannst die Datenbank auch mit dem folgenden Befehl löschen:

debian :) DROP DATABASE clickdb;

Du solltest die folgende Ausgabe sehen:

DROP DATABASE clickdb

Ok.

0 rows in set. Elapsed: 0.002 sec. 

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

ClickHouse für die Verbindung von einem entfernten Host konfigurieren

Du kannst den ClickHouse-Datenbankserver auch vom Remote-Host aus verbinden. Dazu musst du die ClickHouse-Konfigurationsdatei config.xml bearbeiten:

nano /etc/clickhouse-server/config.xml

Suche die folgende Zeile:

<!-- <listen_host>0.0.0.0</listen_host> -->

Und ändere sie durch die folgende:

<listen_host>0.0.0.0</listen_host>

Speichere und schließe die Datei, wenn du fertig bist. Starte dann den ClickHouse-Dienst neu, um die neue Konfiguration zu übernehmen:

systemctl restart clickhouse-server

ClickHouse ist jetzt so konfiguriert, dass es sich mit dem Remote-Host verbindet.

Melde dich nun auf dem Remote-Host an und stelle mit dem folgenden Befehl eine Verbindung zum ClickHouse-Server her:

clickhouse-client --host your_server_ip --password admin@123

Wenn du dich erfolgreich verbunden hast, solltest du die folgende Ausgabe sehen:

ClickHouse client version 19.13.3.26 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.13.3 revision 54425.

debian :)

Fazit

Herzlichen Glückwunsch! Du hast ClickHouse Server erfolgreich auf einem Debian 10 Server installiert. Du kannst jetzt ganz einfach neue Datenbanken und Tabellen erstellen, Daten einfügen und aktualisieren sowie Abfragen über den ClickHouse-Client durchführen. Weitere Informationen findest du in der offiziellen ClickHouse-Dokumentation unter ClickHouse Doc. Wenn du Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …