初识Clickhouse 安装与部署(一)

  • 一、简介
    • 1.1 特性
    • 1.2 限制
  • 二、安装与部署
    • 2.1 环境要求
    • 2.2 版本选择及下载
    • 2.3 安装
    • 2.4 Clickhouse目录结构
    • 2.5启动服务

一、简介

Clickhouse是由俄国Yandex在2016年发布的一个分布式数据分析型数据库,其效率要比Veritca快约5倍,其不依赖于Hadoop生态软件和基础及高可用的特性适用于许多数据分析场景

1.1 特性

1.数据压缩
在一些列式数据库管理系统中(例如:InfiniDB CE 和 MonetDB) 并没有使用数据压缩。但是, 若想达到比较优异的性能,数据压缩确实起到了至关重要的作用。

2.数据的磁盘存储
许多的列式数据库(如 SAP HANA, Google PowerDrill)只能在内存中工作,这种方式会造成比实际更多的设备预算。ClickHouse被设计用于工作在传统磁盘上的系统,它提供每GB更低的存储成本,但如果有可以使用SSD和内存,它也会合理的利用这些资源。

6.多核心并行处理
ClickHouse会使用服务器上一切可用的资源,从而以最自然的方式并行处理大型查询。

4.多服务器分布式处理
上面提到的列式数据库管理系统中,几乎没有一个支持分布式的查询处理。
在ClickHouse中,数据可以保存在不同的shard上,每一个shard都由一组用于容错的replica组成,查询可以并行地在所有shard上进行处理。这些对用户来说是透明的

5.支持SQL
ClickHouse支持基于SQL的声明式查询语言,该语言大部分情况下是与SQL标准兼容的。
支持的查询包括 GROUP BY,ORDER BY,IN,JOIN以及非相关子查询。
不支持窗口函数和相关子查询。

6.向量引擎
为了高效的使用CPU,数据不仅仅按列存储,同时还按向量(列的一部分)进行处理,这样可以更加高效地使用CPU。

7.实时的数据更新
ClickHouse支持在表中定义主键。为了使查询能够快速在主键中进行范围查找,数据总是以增量的方式有序的存储在MergeTree中。因此,数据可以持续不断地高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。

8.索引
按照主键对数据进行排序,这将帮助ClickHouse在几十毫秒以内完成对数据特定值或范围的查找。

9.适合在线查询
在线查询意味着在没有对数据做任何预处理的情况下以极低的延迟处理查询并将结果加载到用户的页面中。

10.支持近似计算
ClickHouse提供各种各样在允许牺牲数据精度的情况下对查询进行加速的方法:

用于近似计算的各类聚合函数,如:distinct values, medians, quantiles
基于数据的部分样本进行近似查询。这时,仅会从磁盘检索少部分比例的数据。
不使用全部的聚合条件,通过随机选择有限个数据聚合条件进行聚合。这在数据聚合条件满足某些分布条件下,在提供相当准确的聚合结果的同时降低了计算资源的使用。
支持数据复制和数据完整性
ClickHouse使用异步的多主复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其他副本,以保证系统在不同副本上保持相同的数据。在大多数情况下ClickHouse能在故障后自动恢复,在一些少数的复杂情况下需要手动恢复。

1.2 限制

1.没有完整的事务支持。
2.缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR。
3.稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。

二、安装与部署

2.1 环境要求

Clickhouse 仅支持Linux 且必须支持SSE4.2 指令集
这里用Centos7进行演示

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

得出下列结果

SSE 4.2 supported

如果服务器不支持SSE指令集,则不能直接下载预编译安装包,需要通过源码编译特定版本进行安装

systemctl stop firewalld.service
systemctl disable firewalld.service

关闭防火墙以及防火墙自启动

2.2 版本选择及下载

mkdir -p /opt/software/clickhouse/

先创建目录存放下载的文件

然后选择所需要的的版本进行下载

https://packagecloud.io/Altinity/clickhouse

选择所需的安装包,只需要下面四种即可,其中el/7表示为centos7版本
(此处为示例版本):

包名
clickhouse-server-common-20.3.12.112-1.el7.x86_64.rpm
clickhouse-server-20.3.12.112-1.el7.x86_64.rpm el/7
clickhouse-common-static-20.3.12.112-1.el7.x86_64.rpm
clickhouse-client-20.3.12.112-1.el7.x86_64.rpm

在该页面中找到下载链接即可,示例:
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.3.12.112-1.el7.x86_64.rpm/download.rpm

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.3.12.112-1.el7.x86_64.rpm/download.rpm

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.3.12.112-1.el7.x86_64.rpm/download.rpm

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.3.12.112-1.el7.x86_64.rpm/download.rpm

更多安装方法请参照官方安装文档,此处不再阐述

2.3 安装

下载上述4类安装包后到对应目录中,进行安装

 # rpm -ivh ./*.rpm


全部安装完无错误信息即可,在过程中可能会出现缺少安装包的情况,此时需要将缺失的依赖补齐即可

2.4 Clickhouse目录结构

  1. /etc/clickhouse-server : 服务端的配置文件目录,包括全局配置config.xml 和用户配置users.xml,其中如需要外网访问则需要打开config.xml中更改配置:
# vi /etc/clickhouse-server/config.xml
<interserver_http_host>example.yandex.ru</interserver_http_host>--><!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. --><!-- <listen_host>::</listen_host> --><!-- Same for hosts with disabled ipv6: --><!-- <listen_host>0.0.0.0</listen_host> --><!-- Default values - try listen localhost on ipv4 and ipv6: --><!--<listen_host>::1</listen_host><listen_host>127.0.0.1</listen_host>--><!-- Don't exit if ipv6 or ipv4 unavailable, but listen_host with this protocol specified --><!-- <listen_try>0</listen_try> -->

其中需要放开<listen_host>::</listen_host>的注释即可

  1. /var/lib/clickhouse : 默认的数据存储目录,通常会修改,将数据保存到大容量磁盘路径中
  2. /var/log/cilckhouse-server : 默认保存日志的目录,通常会修改,将数据保存到大容量磁盘路径中

2.5启动服务

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

可以在/var/log/clickhouse-server/目录中查看日志。

如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。

你也可以在控制台中直接启动服务:

clickhouse-server --config-file=/etc/clickhouse-server/config.xml

在这种情况下,日志将被打印到控制台中,这在开发过程中很方便。
如果配置文件在当前目录中,你可以不指定’–config-file’参数。它默认使用’./config.xml’。

你可以使用命令行客户端连接到服务:

clickhouse-client
ClickHouse client version 20.3.12.112.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.3.12 revision 54433.wbl.clickhouse :)

验证sql

wbl.clickhouse :) select 1 SELECT 1┌─1─┐
│ 1 │
└───┘1 rows in set. Elapsed: 0.003 sec. 

参考资料

  1. Clickhouse中文文档[引用日期2020-06-29]
  2. ClickHouse原理解析与应用实践 .朱凯[引用日期2020-06-29]

初识Clickhouse 安装与部署(一)相关推荐

  1. clickhouse安装_初识ClickHouse——安装与入门

    前言: 久闻 ClickHouse 大名,一直没有去详细了解.近期看了下 ClickHouse 相关文档,决定安装体验下.想了解 ClickHouse 的小伙伴可以一起跟着学习哦.本篇文章主要介绍 C ...

  2. 大数据之clickhouse安装部署

    一.clickhouse简介 ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(D ...

  3. ClickHouse安装部署流程(tgz版)

    这里写自定义目录标题 ClickHouse安装包地址 安装 部署 ClickHouse安装包地址 http://repo.yandex.ru/clickhouse/ 因为我们使用tgz包进行安装,所以 ...

  4. 场景引擎是什么意思_初识ClickHouse、大数据多场景的热捧者

    点击蓝字获取更多精彩信息 编 者 说 Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(columnar DBMS).随着业务的增长走到尽头,查询会变得越来越慢.你可能通过增 ...

  5. 【clickhouse】Centos7部署Clickhouse数据库

    目录 1.clickhouse数据库安装说明 2.clickhouse数据库安装介质 3.clickhouse数据库安装前配置 3.1配置操作系统yum源(可选) 3.2配置NTP客户端 3.3配置s ...

  6. clickhouse + ProxySQL 单机部署及增量同步数据

    背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重.故引进clickhou ...

  7. Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit

    文章目录 为什么要静态编译(static link) 1.源码下载/source code download 2. 编译工具下载/compiler download 编译环境选择:MinGW/MSVC ...

  8. Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

  9. Qt最新版5.12在Windows环境静态编译安装和部署的完整过程(VS2017)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

最新文章

  1. java.util.concurrent.Callable 接口 源码
  2. edgeR基因表达差异分析
  3. HDLBits 系列(7)对for循环以及generate for的各种实践
  4. openstack之neutron linuxbridge + vlan组网
  5. 在Win平台得到磁盘、CPU、用户信息
  6. C语言程序设计及上机指导,《C语言程序设计上机指导》全套教案
  7. leetcode512. 游戏玩法分析 II(SQL)
  8. 世界顶尖品牌的经典广告词欣赏
  9. php yii 表单title,Yii2.0-ActiveForm表单结构自定义教程
  10. CISA:很多受害者和 SolarWinds 之间并不直接相关
  11. Objective-C学习之旅(四)----内存管理2----retain点语法
  12. Java棘手面试问题
  13. linux怎么做ppapi工具,如何在Linux上构建PPAPI插件?
  14. 实用工具系列 - Xshell安装下载与使用
  15. AI语音交互机器人,揭秘你不知道的隐藏功能
  16. Typora+PicGo-core插入图片自动上传,gitee,gitgub,sm.ms三种免费图床
  17. 营收1亿美金的美国软件公司_我如何在60天内损失1亿美元
  18. 大学排行引发大争议,谁在给大学排座次?
  19. HTML对表格隔行变色
  20. Android 快速集成谷歌账户登录

热门文章

  1. 2015年《大数据》高被引论文Top10文章No.6——医疗健康大数据:应用实例与系统分析...
  2. 【加强锻炼篇】如何进行科学有效的健身锻炼
  3. Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置
  4. 认知环境,环境对产品的影响无孔不入
  5. matlab中conv什么意思,matlab卷积函数conv matlab中conv()是什么意思?
  6. 概率dp 期望 逆推
  7. 10 个实用的 JavaScript 技巧
  8. 长江水系与珠江水系有望实现互联互通
  9. 【面向校招】操作系统面经总结
  10. lcg_value() 函数