Vorne geschriebenIch habe etwas Zeit gefunden, um meine Erfahrungen mit Big Data auf den neuesten Stand zu bringen. Als ich zunächst die Architektur auswählte, dachte ich darüber nach, Hadoop als Data Warehouse zu verwenden. Hadoop erfordert jedoch eine große Anzahl von Servern mit einem Cluster von mindestens 6 oder mehr Servern, daher entschied ich mich für Clickhouse (im Folgenden als CH bezeichnet). Wenn CH geclustert ist, können Sie mit 3 Servern beginnen. Natürlich ist das nicht zwingend erforderlich. Es hängt davon ab, ob Ihr Zookeeper geclustert ist. Zweitens hat CH eine stärkere Leistung. Für Szenarien, in denen das Volumen nicht sehr groß ist, reicht eine einzelne Maschine aus, um verschiedene OLAP-Szenarien abzuwickeln. Kommen wir zum Punkt. Verwandte Umgebung:
Installieren Sie Docker auf jedem Dienst. In Docker sind drei Dienste installiert: ch-main, ch-sub und zookeeper_node, wie in der Abbildung dargestellt: Aufmerksamen Beobachtern ist aufgefallen, dass zwischen den PORTS keine Zuordnungsbeziehung besteht. Hier wird der Docker-Host-Netzwerkmodus verwendet. Der Modus ist einfach und leistungsstark, wodurch viele Kommunikationsprobleme zwischen Containern oder zwischen Servern vermieden werden. Das ist schon lange her. Umgebungsbereitstellung1. Konfiguration der Serverumgebung Führen Sie auf jedem Server aus: vim /etc/hosts, öffnen Sie Hosts und fügen Sie die folgende Konfiguration hinzu: 172.192.13.10 server01 172.192.13.11 server02 172.192.13.12 server03 2. Docker installieren Zu einfach, etwas... 3. Ziehen Sie Clickhouse- und Zookeeper-Bilder Zu einfach, etwas... Bereitstellung eines Zookeeper-ClustersErstellen Sie auf jedem Server an dem gewünschten Speicherort (hier: /usr/soft/zookeeper/) einen neuen Ordner zum Speichern der Zookeeper-Konfigurationsinformationen und führen Sie nacheinander auf jedem Server die folgenden Startbefehle aus: Server01 führt aus: docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node --restart always \ -v /usr/soft/zookeeper/data:/data \ -v /usr/soft/zookeeper/datalog:/datalog \ -v /usr/soft/zookeeper/logs:/Protokolle \ -v /usr/soft/zookeeper/conf:/conf \ --network host \ -e ZOO_MY_ID=1 Tierpfleger Server02 führt aus: docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node --restart always \ -v /usr/soft/zookeeper/data:/data \ -v /usr/soft/zookeeper/datalog:/datalog \ -v /usr/soft/zookeeper/logs:/Protokolle \ -v /usr/soft/zookeeper/conf:/conf \ --network host \ -e ZOO_MY_ID=2 Tierpfleger Server03 führt aus: docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node --restart always \ -v /usr/soft/zookeeper/data:/data \ -v /usr/soft/zookeeper/datalog:/datalog \ -v /usr/soft/zookeeper/logs:/Protokolle \ -v /usr/soft/zookeeper/conf:/conf \ --network host \ -e ZOO_MY_ID=3 Tierpfleger Der einzige Unterschied ist: -e ZOO_MY_ID=*. Öffnen Sie zweitens den Pfad /usr/soft/zookeeper/conf bei jedem Dienst, suchen Sie die Konfigurationsdatei zoo.cfg und ändern Sie sie wie folgt: dataDir=/Daten dataLogDir=/Datenprotokoll tickZeit=2000 initLimit=5 syncLimit=2 clientPort=2181 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 server.1=172.192.13.10:2888:3888 server.2=172.192.13.11:2888:3888 server.3=172.192.13.12:2888:3888 Rufen Sie anschließend einen der Server auf und geben Sie zk ein, um zu prüfen, ob die Konfiguration erfolgreich war: docker exec -it zookeeper_node /bin/bash ./bin/zkServer.sh Status Clickhouse-Clusterbereitstellung1. Temporäre Spiegelkopie-KonfigurationFühren Sie einen temporären Container aus, um Konfigurationen, Daten, Protokolle und andere Informationen auf dem Host zu speichern: docker run --rm -d --name=temp-ch yandex/clickhouse-server Kopieren Sie die Dateien im Container: docker cp temp-ch:/etc/clickhouse-server/ /etc/ //https://www.cnblogs.com/EminemJK/p/15138536.html 2. Ändern Sie die config.xml-Konfiguration//Ein für alle Mal auch kompatibel mit IPV6 <listen_host>0.0.0.0</listen_host> //Stellen Sie die Zeitzone ein <timezone>Asia/Shanghai</timezone> //Löschen Sie die Testinformationen des ursprünglichen Knotens <remote_servers> <remote_servers inkl="clickhouse_remote_servers" /> //Neu hinzugefügt, auf derselben Ebene wie der Remote_Servers-Knoten über <include_from>/etc/clickhouse-server/metrika.xml</include_from> //Neu hinzugefügt, auf derselben Ebene wie der Remote_Servers-Knoten darüber <zookeeper inkl="zookeeper-servers" optional="true" /> //Neu hinzugefügt, auf derselben Ebene wie der Remote_Servers-Knoten darüber <macros inkl="macros" optional="true" /> Behalten Sie für andere Listen_Hosts einfach einen Eintrag und kommentieren Sie die anderen aus. 3. In einen anderen Ordner kopierencp -rf /etc/clickhouse-server/ /usr/soft/clickhouse-server/main cp -rf /etc/clickhouse-server/ /usr/soft/clickhouse-server/sub „main“ ist der primäre Shard und „sub“ ist die Replik. 4. Auf andere Server verteilen#Kopieren Sie die Konfiguration nach Server02 scp /usr/soft/clickhouse-server/main/ server02:/usr/soft/clickhouse-server/main/ scp /usr/soft/clickhouse-server/sub/ server02:/usr/soft/clickhouse-server/sub/ #Kopieren Sie die Konfiguration nach Server03 scp /usr/soft/clickhouse-server/main/ server03:/usr/soft/clickhouse-server/main/ scp /usr/soft/clickhouse-server/sub/ server03:/usr/soft/clickhouse-server/sub/ SCP ist wirklich gut. Anschließend können Sie den temporären Container löschen: docker rm -f temp-ch Konfigurieren des ClustersHier gibt es drei Server, und jeder Server verfügt über zwei CH-Instanzen, die sich gegenseitig in einem Ring sichern, um eine hohe Verfügbarkeit zu erreichen. Wenn die Ressourcen ausreichen, kann die Replikations-Subinstanz vollständig unabhängig sein und die Konfiguration kann geändert werden. Dies ist ein weiterer Vorteil von Clickhouse, und die horizontale Erweiterung ist sehr praktisch. 1. Ändern Sie die KonfigurationGeben Sie den Server server1 ein, ändern Sie die Datei config.xml in /usr/soft/clickhouse-server/sub/conf und ändern Sie den folgenden Inhalt: Original: <http_port>8123</http_port> <tcp_port>9000</tcp_port> <mysql_port>9004</mysql_port> <interserver_http_port>9009</interserver_http_port> Geändert zu: <http_port>8124</http_port> <tcp_port>9001</tcp_port> <mysql_port>9005</mysql_port> <interserver_http_port>9010</interserver_http_port> Der Zweck der Änderung besteht darin, sie von der Konfiguration des Haupt-Shards zu unterscheiden. Der Port kann nicht gleichzeitig auf zwei Programme angewendet werden. Server02 und Server03 werden auf diese Weise geändert oder mit dem Befehl scp verteilt. 2. Fügen Sie die Clusterkonfigurationsdatei metrika.xml hinzuServer01, Hauptkonfiguration des primären Shards: Gehen Sie zum Ordner /usr/soft/clickhouse-server/main/conf und fügen Sie die Datei metrika.xml hinzu (Dateikodierung: utf-8). <yandex> <!-- CH-Clusterkonfiguration, alle Server sind gleich--> <clickhouse_remote_servers> <cluster_3s_1r> <!-- Datensplitter 1 --> <Scherbe> <internal_replication>wahr</internal_replication> <Replikat> <host>server01</host> <port>9000</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> <Replikat> <host>server03</host> <port>9001</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> </Scherbe> <!-- Datensplitter 2 --> <Scherbe> <internal_replication>wahr</internal_replication> <Replikat> <host>server02</host> <port>9000</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> <Replikat> <host>server01</host> <port>9001</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> </Scherbe> <!-- Datensplitter 3 --> <Scherbe> <internal_replication>wahr</internal_replication> <Replikat> <host>server03</host> <port>9000</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> <Replikat> <host>server02</host> <port>9001</port> <Benutzer>Standard</Benutzer> <Passwort></Passwort> </Replik> </Scherbe> </cluster_3s_1r> </clickhouse_remote_servers> <!-- Alle zookeeper_servers-Instanzen haben die gleiche Konfiguration --> <Zookeeper-Server> <Knotenindex="1"> <Host>172.16.13.10</Host> <port>2181</port> </Knoten> <Knotenindex="2"> <Host>172.16.13.11</Host> <port>2181</port> </Knoten> <Knotenindex="3"> <Host>172.16.13.12</Host> <port>2181</port> </Knoten> </zookeeper-server> <!-- Jede Instanz von Marcos hat eine andere Konfiguration --> <Makros> <Ebene>01</Ebene> <Scherbe>01</Scherbe> <Replik>Cluster01-01-1</Replik> </Makros> <Netzwerke> <ip>::/0</ip> </Netzwerke> <!-- Datenkomprimierungsalgorithmus--> <clickhouse_komprimierung> <Fall> <min_Teilegröße>10000000000</min_Teilegröße> <min_Teilegrößenverhältnis>0,01</min_Teilegrößenverhältnis> <Methode>lz4</Methode> </case> </clickhouse_compression> </yandex> Der <macros>-Knoten ist für jeden Server und jede Instanz unterschiedlich, und die Konfigurationen anderer Knoten können gleich sein. Im Folgenden werden nur die Konfigurationsunterschiede des <macros>-Knotens aufgeführt. Server01, Unterreplikatkonfiguration: <Makros> <Ebene>01</Ebene> <shard>02</shard> <replica>cluster01-02-2</replica> </Makros> Server02, Hauptkonfiguration des primären Shards: <Makros> <Ebene>01</Ebene> <shard>02</shard> <Replik>Cluster01-02-1</Replik> </Makros> Server02, Unterreplikatkonfiguration: <Makros> <Ebene>01</Ebene> <shard>03</shard> <replica>cluster01-03-2</replica> </Makros> Server03, Hauptkonfiguration des primären Shards: <Makros> <Ebene>01</Ebene> <shard>03</shard> <replica>cluster01-03-1</replica> </Makros> Server03, Unterreplikatkonfiguration: <Makros> <Ebene>01</Ebene> <shard>02</shard> <Replik>Cluster01-01-2</Replik> </Makros> An diesem Punkt sind alle Konfigurationen abgeschlossen. Weitere Konfigurationen, wie z. B. Passwörter, können bei Bedarf hinzugefügt werden. Clusterbetrieb und -testFühren Sie die Instanz nacheinander auf jedem Server aus. Zookeeper wurde bereits ausgeführt. Wenn nicht, müssen Sie zuerst den zk-Cluster ausführen. Führen Sie die Hauptinstanz aus: docker run -d --name=ch-main -p 8123:8123 -p 9000:9000 -p 9009:9009 --ulimit nofile=262144:262144 \ -v /usr/soft/clickhouse-server/main/data:/var/lib/clickhouse:rw \ -v /usr/soft/clickhouse-server/main/conf:/etc/clickhouse-server:rw \ -v /usr/soft/clickhouse-server/main/log:/var/log/clickhouse-server:rw \ --add-host server01:172.192.13.10 \ --add-host server02:172.192.13.11 \ --add-host server03:172.192.13.12 \ --hostname server01 \ --network host \ --restart=immer \ Yandex/Clickhouse-Server Führen Sie die Unterinstanz aus: docker run -d --name=ch-sub -p 8124:8124 -p 9001:9001 -p 9010:9010 --ulimit nofile=262144:262144 \ -v /usr/soft/clickhouse-server/sub/data:/var/lib/clickhouse:rw \ -v /usr/soft/clickhouse-server/sub/conf:/etc/clickhouse-server:rw \ -v /usr/soft/clickhouse-server/sub/log:/var/log/clickhouse-server:rw \ --add-host server01:172.192.13.10 \ --add-host server02:172.192.13.11 \ --add-host server03:172.192.13.12 \ --hostname server01 \ --network host \ --restart=immer \ Yandex/Clickhouse-Server Wenn wir den Befehl auf jedem Server ausführen, ist der einzige unterschiedliche Parameter der Hostname, da wir den Hostnamen zuvor festgelegt haben, um den Server anzugeben. Andernfalls enthält die Spalte is_local beim Ausführen von select * from system.clusters zum Abfragen des Clusters nur 0, was darauf hinweist, dass der lokale Dienst nicht gefunden werden kann. Dies ist etwas, das Aufmerksamkeit erfordert. Nachdem jede Serverinstanz gestartet wurde, verwenden Sie den Original-DataGrip, um sie zu öffnen: Erstellen Sie eine neue Abfrage für eine beliebige Instanz: Erstellen Sie die Tabelle T_UserTest im Cluster cluster_3s_1r ( ts Datum/Uhrzeit, uid-Zeichenfolge, biz-Zeichenfolge ) Engine = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/T_UserTest', '{replica}') PARTITION NACH bis JJJJMMTT(ts) BESTELLEN NACH ts EINSTELLUNGEN index_granularity = 8192; cluster_3s_1r ist der Name des zuvor konfigurierten Clusters. Sie müssen 1:1 übereinstimmen. /clickhouse/tables/ ist ein festes Präfix. Die zugehörige Syntax finden Sie in der offiziellen Dokumentation. Aktualisieren Sie jede Instanz und Sie können sehen, dass alle Instanzen diese T_UserTest-Tabelle haben. Da Zookeeper eingerichtet wurde, ist es einfach, verteiltes DDL zu implementieren. Fahren Sie mit der Erstellung einer neuen verteilten Tabelle fort: ERSTELLEN SIE TABELLE T_UserTest_All AUF CLUSTER cluster_3s_1r ALS T_UserTest ENGINE = Verteilt(cluster_3s_1r, Standard, T_UserTest, rand()) Jeder primäre Shard fügt relevante Informationen separat ein: --server01 in T_UserTest-Werte einfügen ('2021-08-16 17:00:00',1,1) --server02 in T_UserTest-Werte einfügen ('2021-08-16 17:00:00',2,1) --server03 in T_UserTest-Werte einfügen ('2021-08-16 17:00:00',3,1) Dann fragen Sie die verteilte Tabelle ab, select * from T_UserTest_All, Das Abfragen der entsprechenden Replikattabelle oder das Herunterfahren der Docker-Instanz eines der Server hat keine Auswirkungen auf die Abfrage. Dies wird aus Zeitgründen nicht getestet. Dies ist das Ende dieses Artikels über die Konfiguration und Bereitstellung von Clickhouse Docker-Clustern. Weitere verwandte Inhalte zu Clickhouse Docker-Clustern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: Verwenden von js zum Implementieren eines einfachen Lichtschaltercodes
Der Vorgang zur vollständigen Deinstallation der ...
Bei der Webentwicklung stößt man häufig auf Zeiche...
Inhaltsverzeichnis 01 ReplicaSet-Architektur 02 E...
Inhaltsverzeichnis Vorwort Gibt es nach RM noch H...
Vorwort Projektanforderungen: Installieren Sie da...
Integritätsbeschränkungen Integritätsbedingungen ...
#String-Verkettung concat(s1,s2); verkette die St...
Im vorherigen Artikel haben wir etwas über die pa...
Es gibt zwei Situationen 1. Startzeit und Endzeit...
Umsetzungsideen Erstellen Sie zunächst einen über...
Installieren Sie zunächst den OpenSSH-Server im D...
Inhaltsverzeichnis Hintergrund Zusammengesetzte I...
Xiaobai lernte Vue kennen, dann lernte er Webpack...
Szenario Gestern hat das System automatisch alle ...
Vorwort: Der Installationsvorgang wird nicht im D...