Clickhouseクラスターのインストールと展開

1.設置環境

本次安装使用clikchouse用户来安装,安装环境为CetOS7。其余linux也可适用(略有变动)
Clickhouseの環境要件の公式Webサイトでも紹介されています。
つまり、CHはLinuxのみをサポートし、4.2SSE命令をサポートする必要があります。他の環境でCHを構築する場合は、dockerを使用するか、オンラインクラウドサービスを使用できます。

System requirements for pre-built packages: Linux, x86_64 with SSE 4.2.

システムがSSE4.2をサポートしているかどうかを確認します

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

ファイアウォールをオフにします

# 关闭防火墙
systemctl stop firewalld.service

# 禁止开机启动防火墙
systemctl disable firewalld.service

2.バージョンの選択とダウンロード

インストールパッケージをダウンロードするためのディレクトリを作成します

mkdir -p /bigdata/software/clickhouse

最新の安定バージョンを入手し、インストールパッケージをダウンロードします

export LATEST_VERSION=$(curl -s https://repo.clickhouse.tech/tgz/stable/ | \
    grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1)
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-dbg-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-server-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-client-$LATEST_VERSION.tgz

3、インストール

インストールパッケージを解凍してインストールします

tar -xzvf clickhouse-common-static-$LATEST_VERSION.tgz
sudo clickhouse-common-static-$LATEST_VERSION/install/doinst.sh
tar -xzvf clickhouse-common-static-dbg-$LATEST_VERSION.tgz
sudo clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh
tar -xzvf clickhouse-server-$LATEST_VERSION.tgz
sudo clickhouse-server-$LATEST_VERSION/install/doinst.sh
tar -xzvf clickhouse-client-$LATEST_VERSION.tgz
sudo clickhouse-client-$LATEST_VERSION/install/doinst.sh

コアディレクトリ構造の概要

  1. / etc / clickhouse-server:サーバー構成ファイルのディレクトリ
  2. / etc / clickhouse-client:クライアント構成ファイルのディレクトリ
  3. / var / lib / clickhouse:デフォルトのデータストレージディレクトリ
  4. / var / log / clickhouse-server:デフォルトのログ保存場所

プロフィール紹介

  1. /etc/security/limits.d/clickhouse.conf:Clickhouseファイルハンドル番号の構成
  2. /etc/cron.d/clickhouse-server:cronタイミングタスクの構成。例外のために中断されたClickhouseサービスを復元するために使用されます。デフォルトでは10分ごとに実行され、クリックハウスサービスが実行されているかどうかを確認し、実行されていない場合は開始操作を実行します。
*/10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1
  1. / usr / binパス内の実行可能ファイル
  • clickhouse:clikchouseメインプログラムの実行可能ファイル
  • clickhouse-client:クライアント接続に使用されるClickhouse実行可能ファイルへのソフト接続
  • clickhouse-server:サーバーの起動に使用されるClickhouse実行可能ファイルへのソフトリンク
  • clickhouse-compressor:データの圧縮と解凍に使用できる組み込みの圧縮ツール

3、サービスを開始します

1)ディスクストレージ構成

デフォルトのデータストレージパスを変更します。実際に使用するとデータ量が比較的多くなるため、このパスを大容量ディスクに切り替える必要があります。

<path>/ch/data/</path>
<tmp_path>/ch/data/tmp/</tmp_path>
<user_files_path>/ch/data/user_files/</user_files_path>

ファイルディレクトリのアクセス許可を変更する

chown -R clickhouse:clickhouse /ch/daata/

複数のディスクがある場合は、複数のディスクのパスを設定し、ファイルconfig.xmlを変更する必要があります

<storage_configuration>
		...
        <disks>
            <sdc> <!-- disk name -->
                <path>/datac/clickhouse/</path>
            </sdc>
            <sdd> <!-- disk name -->
                <path>/datad/clickhouse/</path>
            </sdd>
            <sde> <!-- disk name --> 
                <path>/datae/clickhouse/</path>
            </sde>
			...
		</disks>
		...
</storage_configuration>

デフォルトでは、クリックハウスは設定したデフォルトのアドレスにのみデータを書き込むため、新しいストレージ戦略を設定する必要があります。config.xmlファイルを変更します。

<storage_configuration>
	...
	<policies>
		...
	    <!-- 该策略为数据平均写到所有磁盘上 -->
	    <hdd_in_order> <!-- 策略名称 -->
	        <volumes>
	            <single>
	                <disk>default</disk> <!-- 磁盘名称 -->
	                <disk>sdc</disk> <!-- 磁盘名称 -->
	                ...
	            </single>
	        <volumes>
	    </hadd_in_order>
	    ...
	</policies>
	...
</storage_configuration>

この時点でクリックハウスクエリテーブルsystem.storage_policiesを再起動すると、新しく設定したストレージルールをクエリできます。
ここに画像の説明を挿入
2)
zk構成およびクラスター構成クリックハウスでクラスターモードを使用するには、zookeeperを統合する必要があります。ここではzookeeperのインストールは省略されています。クリックハウスは、metrika.xmlファイルを変更して追加する必要があります。

<zookeeper-servers>
    <node index="1">
        <host>xxxx1</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>xxxx2</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>xxxx3</host>
        <port>2181</port>
    </node>
</zookeeper-servers>

クリックハウスクラスター内の各ノードは相互に交差していないため、metrika.xmlにすべてのノードのクラスター情報を追加する必要があります。

<clickhouse_remote_servers>
    <report_shards_replicas>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>host1</host>
                <port>9005</port>
                <user>default</user>
                <password>xxxx</password>
            </replica>
            <!-- 若有多个分片则继续往下配replica -->
            <replica>
                <host>host4</host>
                <port>9005</port>
                <user>default</user>
                <password>xxxx</password>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>host2</host>
                <port>9005</port>
                <user>default</user>
                <password>xxxx</password>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>host3</host>
                <port>9005</port>
                <user>default</user>
                <password>xxxx</password>
            </replica>
        </shard>
	</report_shards_replicas>
</clickhouse_remote_servers>

<!-- 配置macros是为了方便后续创建分布式表的时候可以用动态参数指定表在zk上的路径 -->
<macros>
    <!-- layer可不配置,若只有一套集群 -->
    <layer>01</layer>
    <shard>01</shard>
    <replica>cluster01-01-1</replica>
</macros>
  1. ユーザー権限を構成する
<?xml version="1.0"?>
<yandex>
    <profiles>
        <!-- 读写用户配置 -->
        <default>
            <!-- 单查询最大内存使用 -->
            <max_memory_usage>10000000000</max_memory_usage>
            <!-- 是否使用未压缩格式存储缓存(一般不建议) -->
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <!-- 分配模式下选择副本的方式 -->
            <load_balancing>random</load_balancing>
        </default><!-- 只读用户配置 -->
        <readonly>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
            <readonly>1</readonly>
        </readonly>
    </profiles><!-- 用户和访问权限控制 -->
    <users>
        <!-- default为用户么,可以自己指定 -->
        <default>
            <!-- 密码可以用SHA256加密 -->
            <password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
            <!-- 访问权限设置。
                 
                 任何地方都能读取:
                    <ip>::/0</ip>
​
                 只能从本地读取:
                    <ip>::1</ip>
                    <ip>127.0.0.1</ip>
​
                 可以用正则表达式去表示。
             -->
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <!-- profile 指定标签 -->
            <profile>default</profile>
            <!-- Quota 指定标签 -->
            <quota>default</quota>
        </default>
        <!-- 只读用户(个人创建) -->
        <ck>
            <password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>readonly</profile>
            <quota>default</quota>
        </ck>
    </users><!-- 资源限额 -->
    <quotas>
        <!-- 资源限额的名字. -->
        <default>
            <!-- 用于限制一定时间间隔内的资源使用量 -->
            <interval>
                <!-- 时间间隔 -->
                <duration>3600</duration>
                <!-- 下面配置为无限制 -->
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
</yandex>

フォローアップでは、config.xmlとmetrika.xmlの他の構成があります。詳細については、私の別の記事を参照してください。
https://blog.csdn.net/sileiH/article/details/113404907

4)clickhouse-service
開始して、各ノードで実行します。

sudo /etc/init.d/clickhouse-server start

CHクライアントにログインします:

ローカルでログインします。

clickhouse-client -u username --password pwd

リモートログイン:

clickhouse-client -h host --port port -u username --password pwd

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/sileiH/article/details/113736233