资讯专栏INFORMATION COLUMN

Clickhouse 集群部署

社区管理员 / 516人阅读

1、环境及软件包

环境

系统版本:CentOS Linux release 7.9.2009


软件包

clickhouse-common-static-21.9.5.16-2.x86_64.rpm


clickhouse-client-21.9.5.16-2.noarch.rpm


clickhouse-server-21.9.5.16-2.noarch.rpm


apache-zookeeper-3.6.3-bin.tar.gz


2、软件包安装

clickhouse 21.9.5.16

下载软件包,版本为 21.9.5.16。下载地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/,需下载的包如下:


  clickhouse-client-21.9.5.16-2.noarch.rpm


  clickhouse-common-static-21.9.5.16-2.x86_64.rpm


  clickhouse-server-21.9.5.16-2.noarch.rpm

传到服务器~目录下,依次执行以下命令:


rpm -ivh clickhouse-common-static-21.9.5.16-2.x86_64.rpm


rpm -ivh clickhouse-client-21.9.5.16-2.noarch.rpm


rpm -ivh clickhouse-server-21.9.5.16-2.noarch.rpm

执行成功后配置目录为:/etc/clickhouse-server/


apache-zookeeper-3.6.3

下载软件包,版本为 3.6.3。下载地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

传到服务器~目录下(可自行选择存放目录)

解压缩:

tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

简单修改下目录名:


mv apache-zookeeper-3.6.3-bin  apache-zookeeper-3.6.3

3、配置及部署

创建目录

在每台机器根目录下创建文件夹 data


cd / && mkdir data

分别创建 zookeeper 及 clickhouse 目录


cd /data && mkdir zookeeper


cd /data && mkdir clickhouse

注意目录权限问题


zookeeper 集群部署

进入安装目录 cd apache-zookeeper-3.6.3

创建文件夹并创建 myid 文件,且写入数字 1 mkdir data && cd data && echo '1' >> myid

切换到 conf 目录更改 zoo_simple.cfg 文件名,cd apache-zookeeper-3.6.3/conf && mv zoo_simple.cfg zoo.cfg

编辑 zoo.cfg 文件 vim zoo.cfg, 添加 / 修改如下内容:

tickTime=2000


initLimit=10


syncLimit=5


dataDir=/data/zookeeper


dataLogDir=/var/log/zookeeper


clientPort=2181


server.1=hostaddress:2888:3888


server.2=hostaddress2:2888:3888


server.3=hostaddress3:2888:3888

其中需修改的参数:


dataDir=/data/zookeeper (/data/zookeeper 替换成自己的目录)


dataLogDir=/data/zookeeper/log (/var/log/zookeeper 替换成自己的目录)


server.1=hostaddress:2888:3888 (hostaddress 替换成节点 1 的主机地址)


server.2=hostaddress2:2888:3888 (hostaddress2 替换成节点 2 的主机地址)


server.3=hostaddress3:2888:3888 (hostaddress3 替换成节点 3 的主机地址)


启动 zookeeper

在 /usr/lib/systemd/system 目录下创建 zookeeper.service 文件,输入如下内容:


[Unit]


Description=zookeeper


After=syslog.target network.target


[Service]


Type=forking


User=root


Group=root


ExecStart=/root/zookeeper-3.6.3/bin/zkServer.sh start


ExecStop=/root/zookeeper-3.6.3/bin/zkServer.sh stop


Restart=on-failure


[Install]


WantedBy=multi-user.target

执行启动并设置开机启动


systemctl start zookeeper && systemctl enable zookeeper

查看状态或进程


ps -aux|grep zookeeper

在每台节点机器上重复以上步骤

第 2 步中写入 myid 文件的数字递增,例如第 2 个节点写入 2,第 3 个节点写入 3


ClickHouse 集群部署

进入 clickhouse 配置目录


cd /etc/clickhouse-server

编辑 config.xml 文件 (建议备份一下,可作为参考)


cp config.xml config.xml.bak


vim config.xml

替换写入以下内容:


<yandex>

    <logger>

        <!-- 日志记录级别。可接受的值: trace, debug, information, warning, error -->

        <level>trace</level>

        <!-- 日志文件,根据级别包含所有条目 -->

        <log>/var/log/clickhouse-server/clickhouse-server.log</log>

        <!-- 错误日志文件 -->

        <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>

        <!-- 文件的大小。适用于loganderrorlog,文件达到大小后,ClickHouse将对其进行存档并重命名,并在其位置创建一个新的日志文件 -->

        <size>1000M</size>

        <!-- ClickHouse存储的已归档日志文件的数量 -->

        <count>10</count>

    </logger>

    <!-- 默认http 端口 -->

    <http_port>8123</http_port>

    <!-- 默认tcp 端口 -->

    <tcp_port>9000</tcp_port>

    <!--通过MySQL协议与客户端通信的端口 -->

    <mysql_port>9004</mysql_port>

    <postgresql_port>9005</postgresql_port>

    <interserver_http_port>9009</interserver_http_port>

    <!-- 本机域名 -->

    <interserver_http_host>本机IP</interserver_http_host>

    <interserver_http_credentials>

        <user>default</user>

        <password>123456</password>

    </interserver_http_credentials>

    <!-- 如果禁用了ipv6,使用下面配置 

    <listen_host>0.0.0.0</listen_host>-->

    <!-- 如果没有禁用ipv6,使用下面配置 -->

    <listen_host>::</listen_host>

    <!-- 最大连接数 -->

    <max_connections>4096</max_connections>

    <keep_alive_timeout>3</keep_alive_timeout>

    <grpc>

        <enable_ssl>false</enable_ssl>

        <ssl_cert_file>/path/to/ssl_cert_file</ssl_cert_file>

        <ssl_key_file>/path/to/ssl_key_file</ssl_key_file>

        <ssl_require_client_auth>false</ssl_require_client_auth>

        <ssl_ca_cert_file>/path/to/ssl_ca_cert_file</ssl_ca_cert_file>

        <compression>deflate</compression>

        <compression_level>medium</compression_level>

        <max_send_message_size>-1</max_send_message_size>

        <max_receive_message_size>-1</max_receive_message_size>

        <verbose_logs>false</verbose_logs>

    </grpc>

    <openSSL>

        <server> 

            <certificateFile>/etc/clickhouse-server/server.crt</certificateFile>

            <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile>

            <dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile>

            <verificationMode>none</verificationMode>

            <loadDefaultCAFile>true</loadDefaultCAFile>

            <cacheSessions>true</cacheSessions>

            <disableProtocols>sslv2,sslv3</disableProtocols>

            <preferServerCiphers>true</preferServerCiphers>

        </server>

        <client>

            <loadDefaultCAFile>true</loadDefaultCAFile>

            <cacheSessions>true</cacheSessions>

            <disableProtocols>sslv2,sslv3</disableProtocols>

            <preferServerCiphers>true</preferServerCiphers>

            <invalidCertificateHandler>

                <name>RejectCertificateHandler</name>

            </invalidCertificateHandler>

        </client>

    </openSSL>

    <!-- 最大并发查询数 -->

    <max_concurrent_queries>100</max_concurrent_queries>

    <max_server_memory_usage>0</max_server_memory_usage>

    <max_thread_pool_size>10000</max_thread_pool_size>

    <max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>

    <total_memory_profiler_step>4194304</total_memory_profiler_step>

    <total_memory_tracker_sample_probability>0</total_memory_tracker_sample_probability>

    <!-- 单位是B -->

    <uncompressed_cache_size>8589934592</uncompressed_cache_size>

    <!-- 标记缓存的大小,用于MergeTree系列的表中。  以字节为单位 -->

    <mark_cache_size>5368709120</mark_cache_size>

    <mmap_cache_size>1000</mmap_cache_size>

    <compiled_expression_cache_size>134217728</compiled_expression_cache_size>

    <!-- 数据存储路径 -->

    <path>/data/clickhouse/</path>

    <!-- 用于处理大型查询的临时数据的路径 -->

    <tmp_path>/data/clickhouse/tmp/</tmp_path>

    <!-- 包含用户文件的目录,在表函数file()中使用 -->

    <user_files_path>/data/clickhouse/user_files/</user_files_path>

    <ldap_servers></ldap_servers>

    <!-- 用户配置文件,可以配置用户访问、profiles、quota、查询等级等 -->

    <user_directories>

        <users_xml>

            <path>users.xml</path>

        </users_xml>

        <local_directory>

            <path>/data/clickhouse/access/</path>

        </local_directory>

    </user_directories>

    <default_profile>default</default_profile>

    <custom_settings_prefixes></custom_settings_prefixes>

    <default_database>default</default_database>

    <mlock_executable>true</mlock_executable>

    <remap_executable>false</remap_executable>

    <!-- 集群信息 -->

    <!-- 远程服务器,分布式表引擎和集群表功能使用的集群的配置 -->

    <remote_servers incl="clickhouse_remote_servers"  />

    <!-- ClickHouse与ZooKeeper群集进行交互的设置 -->

    <zookeeper incl="zookeeper-servers"  optional="true"   />

    <macros incl="macros"  optional="true" />

    <!-- 指定metrika.xml文件的路径,当不指定时默认是/etc/metrika.xml -->

    <include_from>/etc/clickhouse-server/metrika.xml</include_from>

    <builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>

    <max_session_timeout>3600</max_session_timeout>

    <default_session_timeout>60</default_session_timeout>

    <query_log>

        <database>system</database>

        <table>query_log</table>

        <partition_by>toYYYYMM(event_date)</partition_by>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </query_log>

    <trace_log>

        <database>system</database>

        <table>trace_log</table>

        <partition_by>toYYYYMM(event_date)</partition_by>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </trace_log>

    <query_thread_log>

        <database>system</database>

        <table>query_thread_log</table>

        <partition_by>toYYYYMM(event_date)</partition_by>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </query_thread_log>

    <query_views_log>

        <database>system</database>

        <table>query_views_log</table>

        <partition_by>toYYYYMM(event_date)</partition_by>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </query_views_log>

    <part_log>

        <database>system</database>

        <table>part_log</table>

        <partition_by>toYYYYMM(event_date)</partition_by>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </part_log>

    <metric_log>

        <database>system</database>

        <table>metric_log</table>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

        <collect_interval_milliseconds>1000</collect_interval_milliseconds>

    </metric_log>

    <asynchronous_metric_log>

        <database>system</database>

        <table>asynchronous_metric_log</table>

        <flush_interval_milliseconds>7000</flush_interval_milliseconds>

    </asynchronous_metric_log>

    <opentelemetry_span_log>

        <engine>

            engine MergeTree

            partition by toYYYYMM(finish_date)

            order by (finish_date, finish_time_us, trace_id)

        </engine>

        <database>system</database>

        <table>opentelemetry_span_log</table>

        <flush_interval_milliseconds>7500</flush_interval_milliseconds>

    </opentelemetry_span_log>

    <crash_log>

        <database>system</database>

        <table>crash_log</table>

        <partition_by />

        <flush_interval_milliseconds>1000</flush_interval_milliseconds>

    </crash_log>

    <top_level_domains_lists></top_level_domains_lists>

    <dictionaries_config>*_dictionary.xml</dictionaries_config>

    <encryption></encryption>

    <distributed_ddl><path>/clickhouse/task_queue/ddl</path></distributed_ddl>

    <graphite_rollup_example>

        <pattern>

            <regexp>click_cost</regexp>

            <function>any</function>

            <retention>

                <age>0</age>

                <precision>3600</precision>

            </retention>

            <retention>

                <age>86400</age>

                <precision>60</precision>

            </retention>

        </pattern>

        <default>

            <function>max</function>

            <retention>

                <age>0</age>

                <precision>60</precision>

            </retention>

            <retention>

                <age>3600</age>

                <precision>300</precision>

            </retention>

            <retention>

                <age>86400</age>

                <precision>3600</precision>

            </retention>

        </default>

    </graphite_rollup_example>

    <format_schema_path>/data/clickhouse/format_schemas/</format_schema_path>

    <query_masking_rules>

        <rule>

            <name>hide encrypt/decrypt arguments</name>

            <regexp>((?:aes_)?(?:encrypt|decrypt)(?:_mysql)?)\s*\(\s*(?:'(?:\\'|.)+'|.*?)\s*\)</regexp>

            <replace>\1(???)</replace>

        </rule>

    </query_masking_rules>

    <send_crash_reports>

        <enabled>false</enabled>

        <anonymize>false</anonymize>

        <endpoint>https://6f33034cfe684dd7a3ab9875e57b1c8d@o388870.ingest.sentry.io/5226277</endpoint>

    </send_crash_reports>

</yandex>

其中改动点如下:


<!-- 本机域名 -->

    <interserver_http_host>本机IP</interserver_http_host>

    <interserver_http_credentials>

        <user>default</user>

        <password>123456</password>

    </interserver_http_credentials>


 <!-- 如果没有禁用ipv6,使用下面配置 -->

    <listen_host>::</listen_host>


  <!-- 数据存储路径 -->

    <path>/data/clickhouse/</path>

    <!-- 用于处理大型查询的临时数据的路径 -->

    <tmp_path>/data/clickhouse/tmp/</tmp_path>

    <!-- 包含用户文件的目录,在表函数file()中使用 -->

    <user_files_path>/data/clickhouse/user_files/</user_files_path>


  <!-- 数据存储路径 -->

    <path>/data/clickhouse/</path>

    <!-- 用于处理大型查询的临时数据的路径 -->

    <tmp_path>/data/clickhouse/tmp/</tmp_path>

    <!-- 包含用户文件的目录,在表函数file()中使用 -->

    <user_files_path>/data/clickhouse/user_files/</user_files_path>


   <!-- 集群信息 -->

    <!-- 远程服务器,分布式表引擎和集群表功能使用的集群的配置 -->

    <remote_servers incl="clickhouse_remote_servers"  />

    <!-- ClickHouse与ZooKeeper群集进行交互的设置 -->

    <zookeeper incl="zookeeper-servers"  optional="true"   />

    <macros incl="macros"  optional="true" />

    <!-- 指定metrika.xml文件的路径,当不指定时默认是/etc/metrika.xml -->

    <include_from>/etc/clickhouse-server/metrika.xml</include_from>

在 /etc/clickhouse-server (config.xml 文件中 include_from 节点的内容,也可不指定 include_from 节点,则在 /etc 下创建 metrika.xml)下创建 metrika.xml 文件,并写入以下内容:


<yandex>

<!-- 集群配置 -->

<!-- 该标签与config.xml的<remote_servers incl="clickhouse_remote_servers"/> 保持一致 -->

<clickhouse_remote_servers>

  <!-- 集群名:sujuhu -->

  <sujuhu>

    <!-- 数据分片1 -->

    <shard>

      <internal_replication>true</internal_replication>

      <!-- 复制集 -->

      <replica>

        <host>主机地址</host>

        <port>9000</port>

        <user>default</user>

        <password>123456</password>

      </replica>

    </shard>

    <!-- 数据分片2

    <shard>

      <internal_replication>true</internal_replication>

      <replica>

        <host>主机地址</host>

        <port>9000</port>

        <user>default</user>

        <password>123456</password>

      </replica>

    </shard> -->

  </sujuhu>

</clickhouse_remote_servers>

<!-- zookeeper 集群 -->

<!-- 该标签与config.xml的<zookeeper incl="zookeeper-servers" optional="true"/> 保持一致 -->

<zookeeper-servers>

  <node index="1">

   <host>zookeeper节点地址1</host>

   <port>2181</port>

  </node>

<!--

  <node index="2">

   <host>zookeeper节点地址2</host>

   <port>2181</port>

  </node>

  <node index="3">

   <host>zookeeper节点地址3</host>

   <port>2181</port>

  </node>-->

</zookeeper-servers>

<!-- 节点副本名称 -->

<!-- 该标签与config.xml的<macros incl="macros" optional="true"/>保持一致 -->

<macros>

 <shard>01</shard>

 <replica>节点名</replica>

</macros>

<!-- 监听网络 -->

<networks>

  <ip>::/0</ip>

</networks>

</yandex>

其中需要修改的标签有:


集群名:


<sujuhu>


数据分片节点(按实际来):


<shard>


zookeeper集群节点(按实际来):


<zookeeper-servers>


节点副本名称:


<macros>

启动 clickhouse- server


ssystemctl start clickhouse-server.service

查看启动结果


systemctl status clickhouse-server.service

 


在每台机器上重复以上步骤,并按实际情况修改配置


 


启动之前注意先启动 zookeeper

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128026.html

相关文章

  • 基于开源应用快速构建HTAP系统

    摘要:利用快速构建系统。构建系统和的安装本文不再赘述,直接开始动手构建系统。分别为和,用于读写组,用于只读组。最后配置的监控服务可选,非必须至此,一个全部基于开源应用的简易系统就构建好了。利用ProxySQL、MySQL、ClickHouse快速构建HTAP系统。1. 关于ClickHouse企业里随着数据量的增加,以及日趋复杂的分析性业务需求,主要适用于OLTP场景的MySQL压力越来越大。多年...

    Tecode 评论0 收藏0
  • 概览 数据仓库 UDW Clickhouse

    摘要:概览概览概览产品动态产品介绍什么是云数据仓库产品优势应用场景基本概念使用限制快速上手操作指南管理集群配置升降级重启实例重置管理员密码删除集群连接集群数据同步本地数据导入数据导入数据导入间数据导入开发指南数据类型语法创建库创建表创建视图插入 概览概览产品动态产品介绍什么是云数据仓库 UClickHouse产品优势应用场景基本概念使用限制快速上手操作指南管理集群配置升降级重启实例重置管理员密码删...

    ernest.wang 评论0 收藏1076
  • ClickHouse高性能分布式分析数据库

    摘要:向大家介绍的基本特性和概念,特别是性能对比数据,包括和的性能对比。 向大家介绍ClickHouse的基本特性和概念,特别是性能对比数据,包括和Hive/Spark/Druid的性能对比。 文章资源来自示说网showImg(https://segmentfault.com/img/remote/1460000016566522?w=1440&h=810);showImg(https://...

    Towers 评论0 收藏0
  • ClickHouse高性能分布式分析数据库

    摘要:向大家介绍的基本特性和概念,特别是性能对比数据,包括和的性能对比。 向大家介绍ClickHouse的基本特性和概念,特别是性能对比数据,包括和Hive/Spark/Druid的性能对比。 文章资源来自示说网showImg(https://segmentfault.com/img/remote/1460000016566522?w=1440&h=810);showImg(https://...

    sunnyxd 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<