1.集群节点信息

10.12.110.201 ch201

10.12.110.202 ch202

10.12.110.203 ch203

2. 搭建一个zookeeper集群

在这三个节点搭建一个zookeeper集群(如果搭建可以直接忽略这一步),先在一个节点上根据以下配置

2.1. 下载 zookeeper-3.4.12.tar.gz 安装包,放置到上面三台服务器一个目录下(/apps/)

2.2. 进入到/apps/目录下,解压tar包,tar -zxvf zookeeper-3.4.12.tar.gz

2.3. 进入zookeeper的conf目录,拷贝zoo_sample.cfg为zoo.cfg,cp zoo_sample.cfg zoo.cfg 修改zoo.cfg文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir= /apps/zookeeper-3.4.13/data/zookeeper
dataLogDir= /apps/zookeeper-3.4.13/log/zookeeper
clientPort=2182
autopurge.purgeInterval=0
globalOutstandingLimit=200
server.1=ch201:2888:3888
server.2=ch202:2888:3888
server.3=ch203:2888:3888

2.4. 创建需要的目录

$:mkdir -p /apps/zookeeper-3.4.13/data/zookeeper
$:mkdir -p /apps/zookeeper-3.4.13/log/zookeeper

配置完成后将当前的zookeeper目录scp到其他两个节点

2.5. 设置myid

$:vim /data/zookeeper/myid #ch201为1,ch202为2,ch203为3

2.6. 进入zookeeper的bin目录,启动zookeeper服务,每个节点都需要启动

$: ./zkServer.sh start

2.7. 启动之后查看每个节点的状态

$: ./zkServer status

其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的

2.8. 测试zookeeper

$:./zkCli.sh -server ch201:2182

如果出现拒绝连接,查看防火墙是否关闭,关闭防火墙service iptables stop重启zookeeper,或排查是否配置有误

3. 在三个节点分别搭建单机版,单机版以一个为例

3.1. 查看当前linux版本

$: cat /proc/version
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015

3.2. 下载对应的linux版本的clickhouse rpm版本,上面版本对应的版本如下:

clickhouse-client-19.9.5.36-1.el6.x86_64.rpm
clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm

如果你的linux是下面版本:

Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018

对应的clickhouse版本是:

clickhouse-client-19.16.3.6-1.el7.x86_64.rpm
clickhouse-common-static-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-common-19.16.3.6-1.el7.x86_64.rpm

官网下载地址:https://repo.yandex.ru/clickhouse/deb/stable/main/

3.3. 通过rpm方式按下面顺序依次安装:

进入rpm所在目录:/home/clickhouse/pack/6/

$:rpm -ivh clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-client-19.9.5.36-1.el6.x86_64.rpm

3.4. rpm安装完毕无误后,clickhouse-serverclickhouse-client配置目录如下

$: ll /etc/clickhouse-server/
-rw-r--r-- 1 root root 17642 Nov 15 11:44 config.xml
-rw-r--r-- 1 root root 5609 Jul 21 18:16 users.xml
$: ll /etc/clickhouse-client/
drwxr-xr-x 2 clickhouse clickhouse 4096 Nov 15 10:55 conf.d
-rw-r--r-- 1 clickhouse clickhouse 1568 Jul 21 17:27 config.xml

3.5. 对于目前性能压测只需要关注/etc/clickhouse-server/config.xml

只修改数据存放的目录:

<!-- Path to data directory, with trailing slash. -->
<path>/home/clickhouse/data/clickhouse</path>

注意这个配置的目录磁盘空间必须足够大

其他配置可以根据自己的实际情况而定,注意配置端口是否被占用

3.6. 启动clickhouse-server

$: /etc/init.d/clickhouse-server start

注意:执行这个命令需要安装libicu

如果没有安装会报以下错误:

Start clickhouse-server service: /usr/bin/clickhouse-extract-from-config: error while loading shared libraries: libicui18n.so.42: cannot open shared object file: No such file or directoryCannot obtain value of path from config file: /etc/clickhouse-server/config.xml

安装libicu方法:

下载libicu的rpm包:

libicu-4.2.1-14.el6.x86_64.rpm
libicu-devel-4.2.1-14.el6.x86_64.rpm

存放在linux的一个目录,在当前目录执行:

$: rpm –ivh libicu-4.2.1-14.el6.x86_64.rpm
$: rpm –ivh libicu-devel-4.2.1-14.el6.x86_64.rpm

注意这个包也必须对应linux版本

安装完毕后启动:

$: /etc/init.d/clickhouse-server start

如果出现以下信息证明成功:

Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE

3.7. 停止clickhouse-server

$: /etc/init.d/clickhouse-server stop

3.8. 进入clickhouse-client

$: clickhouse-client --host ch201 --port 9000

出现以下:

注意:默认没有改端口登录方式为clickhouse-client localhost 9000,但当更改非默认端口后,这种方式无法登录,所以推荐用上面的方法。同时登录参数很多,可以通过官网查

证明进入客户端成功

通过查询验证:select 1

证明clickhouse完全安装成功并可以正确使用

4.集群部署

三个节点全部按照上面的指导部署单节点成功后开始配置部署集群需要的配置

4.1.首先以一个节点为例配置,vim /etc/metrika.xml,添加配置信息如下:

<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch201</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>ch202</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch203</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers> <!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>ch201</host>
<port>2182</port>
</node>
<node index="2">
<host>ch202</host>
<port>2182</port>
</node>
<node index="3">
<host>ch203</host>
<port>2182</port>
</node>
</zookeeper-servers> <macros>
<replica>ch203</replica>
</macros> <networks>
<ip>::/0</ip>
</networks> <clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression> </yandex>
<!-- 其中大部分配置一样,以下的配置根据节点的IP/域名具体配置 -->
<macros>
<replica>ch203</replica>
</macros>

注意:为什么直接vim /etc/metrika.xml一个新文件,这里很难去理解,有点莫名其妙,其实如果仔细看过clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白,有这么一段被注释的配置说明:

<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
-->

配置一个节点完成之后,将/etc/metrika.xml文件scp到其他两个节点并配置

<macros>
<replica>ch203</replica>
</macros>

对应的IP/域名

5.按照上面的指导配置完成之后,在每个节点都启动clickhouse的服务,和单节点启动一样,当出现无误后,查看clickhouse的log文件,如果出现以下信息,就基本没有问题

6.进一步验证

在每个节点启动clickhouse客户端,和单节点启动完全一样,查询集群信息

select * from system.clusters;

ch201节点应该是以下信息:

ch202节点应该是以下信息:

ch203节点应该是以下信息:

可以看到红框内的信息基本相同,但是也有细微差别,红框外是之前的单节点的信息

至此,clickhouse的集群部署完全成功,生产环境针对数据量可能还需要一些额外的配置

Clickhouse集群部署的更多相关文章

  1. Clickhouse单机及集群部署详解

    一.ClickHouse简介 ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域.目前国内社区火热,各个大厂纷纷跟进大规模使用: 今日头条 内部用ClickHous ...

  2. Clickhouse Docker集群部署

    写在前面 抽空来更新一下大数据的玩意儿了,起初架构选型的时候有考虑Hadoop那一套做数仓,但是Hadoop要求的服务器数量有点高,集群至少6台或以上,所以选择了Clickhouse(后面简称CH). ...

  3. ClickHouse(04)如何搭建ClickHouse集群

    ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么 ...

  4. 手把手教你:将 ClickHouse 集群迁至云上

    前言 随着云上 ClickHouse 服务完善,越来越多的用户将自建 ClickHouse 服务迁移至云上.对于不同数据规模,我们选择不同的方案: 对于数据量比较小的表,通常小于10GB 情况下,可以 ...

  5. Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署

    Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...

  6. 一文读懂clickhouse集群监控

    更多精彩内容,请关注微信公众号:后端技术小屋 一文读懂clickhouse集群监控 常言道,兵马未至,粮草先行,在clickhouse上生产环境之前,我们就得制定好相关的监控方案,包括metric采集 ...

  7. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

  8. Openfire 集群部署和负载均衡方案

    Openfire 集群部署和负载均衡方案 一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...

  9. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

随机推荐

  1. shell 提取文件的某行,并在行尾添加字符

    sed -n '100,200p' file.txt #提取文件file.txt第100行到第200行的内容 sed 's/$/test/' file.txt #在行尾添加字符串test,$代表行尾

  2. 企业实践 | 如何更好地使用 Apache Flink 解决数据计算问题?

    业务数据的指数级扩张,数据处理的速度可不能跟不上业务发展的步伐.基于 Flink 的数据平台构建.运用 Flink 解决业务场景中的具体问题等随着 Flink 被更广泛的应用于广告.金融风控.实时 B ...

  3. ofbiz webservice 例解

    1.定义controller.xml文件,controller文件:ofbiz当前项目的所有请求的入口,通过对应request-map:将所有的请求uri对应到指定的处理函数上. <reques ...

  4. Mybatis基于XML配置SQL映射器(二)

    Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档  sysUse ...

  5. subsequence 1

    题目链接 题意:给你两个字符串都是数字,让你求第一个字符串的子序列中大于第二个字符串的个数. 思路:dp[i][j] 表示 str1的前i个,匹配 str2的前 j 个的种类数,那么 if(s[i] ...

  6. flask中的目录解析

    首先我们看一下博客blog的封面,flask和django都属于web框架.不过flask属于轻量级web框架,功能的实现是通过扩展实现的,extension.py 中存放各个对象,具体的功能通过对象 ...

  7. 如何把EXCEL数据导入到SQL SERVER数据库中 (转)

    转:http://blog.csdn.net/jjp837661103/article/details/13509889 在我们完成一个项目开发之后,通常我们需要把客户的很多数据导入到数据库中,面对大 ...

  8. Golang 开发技能图谱

    # Golang 开发技能图谱 ## Go 语言环境搭建- Go 安装- GOPATH 与工作空间- Go 命令- Go开发工具 ## GO 语言编程基础- 关键词和语法(Language Synta ...

  9. switch gnome-terminal tabs

    Ctrl+Page Down (forward) and Ctrl+Page Up (backward). http://unix.stackexchange.com/a/67963

  10. 2019牛客多校第七场C-Governing sand(线段树+枚举)

    Governing sand 题目传送门 解题思路 枚举每一种高度作为最大高度,则需要的最小花费的钱是:砍掉所有比这个高度高的树的所有花费+砍掉比这个高度低的树里最便宜的m棵树的花费,m为高度低的里面 ...