当前位置:   article > 正文

大数据之clickhouse安装部署

clickhouse安装

一、clickhouse简介

ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse

ClickHouse是一个完全的列式分布式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生 client。

优点:

灵活的MPP架构,支持线性扩展,简单方便,高可靠性
多服务器分布式处理数据 ,完备的DBMS系统
底层数据列式存储,支持压缩,优化数据存储,优化索引数据 优化底层存储
容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,可处理数据级别已达到10亿级别
功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署
海量数据存储,分布式运算,快速闪电的性能,几乎实时的数据分析 ,友好的SQL语法,出色的函数支持

缺点:

不支持事务,不支持真正的删除/更新
不支持高并发,官方建议qps为100,可通过修改配置文件增加连接数,但是在服务器足够好的情况下
不支持二级索引
不擅长多表join
元数据管理需要人为干预
尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作
依赖zookeeper

应用场景:

1.绝大多数请求都是用于读访问的, 要求实时返回结果
2.数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作
3.数据只是添加到数据库,没有必要修改
4.读取数据时,会从数据库中提取出大量的行,但只用到一小部分列
5.表很“宽”,即表中包含大量的列
6.查询频率相对较低(通常每台服务器每秒查询数百次或更少)
7.对于简单查询,允许大约50毫秒的延迟
8.列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)
9.在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)
10.不需要事务
11.数据一致性要求较低 [原子性 持久性 一致性 隔离性]
12.每次查询中只会查询一个大表。除了一个大表,其余都是小表
13.查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小

不适用场景:

不支持事务(对并发的读写不支持,批量插入是支持事务的)
不擅长根据主键按行粒度进行查询,不应该把ClickHouse当作Key-Value数据库使用
不擅长按行删除数据(支持但不擅长,一般批量删除)

二、基本概念

分片:ClickHouse的集群由分片 ( Shard ) 组成,而每个分片又通过副本 ( Replica ) 组成。ClickHouse的1个节点只能拥有1个分片。

分区 :ClickHouse支持PARTITION BY子句,在建表时可以指定按照任意合法表达式进行数据分区操作,比如通过toYYYYMM()将数据按月进行分区、toMonday()将数据按照周几进行分区。

副本:数据存储副本,在集群模式下实现高可用。

引擎:不同的引擎决定了表数据的存储特点和表数的操作行为:。

在clickhouse中数据库也有自己的引擎, 数据库目前支持的数据库引擎有5种:

·Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎,使用时无须刻意声明。在此数据库下可以使用任意类型的表引擎

·Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表。

·Memory:内存引擎,用于存放临时数据。此类数据库下的数据表只会停留在内存中,不会涉及任何磁盘操作,当服务重启后数据会被清除。

·Lazy:日志引擎,此类数据库下只能使用Log系列的表引擎。

·MySQL:MySQL引擎,此类数据库下会自动拉取远端MySQL中的数据,并为它们创建MySQL表引擎的数据表。

三、clickhouse安装部署

单节点部署:

1)安装curl工具

yum install -y curl
  • 1

2)添加clickhouse的yum镜像

curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
  • 1

3)检查镜像情况

[root@doit04 yum.repos.d]# yum list | grep clickhouse                        
clickhouse-client.x86_64           20.5.4.40-1.el7     @Altinity_clickhouse
clickhouse-common-static.x86_64    20.5.4.40-1.el7     @Altinity_clickhouse
  • 1
  • 2
  • 3

4)安装clickhouse的服务端和客户端

yum install -y clickhouse-server 
yum -y install clickhouse-client
  • 1
  • 2

5)启动服务daunt

service clickhouse-server start 
  • 1

6)启动交互式客户端

clickhouse-client 
  • 1

分布式部署:

大数据之clickhouse常用函数

四、参数设置

1、允许其他机器访问

vi config.xml

<listen_host>::</listen_host>
  • 1
service clickhouse-server  restart     --重启服务
  • 1

2、目录结构

(1)/etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml
和用户配置users.xml等。

(2)/var/lib/clickhouse:默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)。

(3)/var/log/clickhouse-server:默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)。

五、clickhouse基本入门

1、建表语句,一定要指定引擎

create table tb_test(
	id Int8 ,
	name String
) engine=Memory;
  • 1
  • 2
  • 3
  • 4

2、数据类型

数值类型

数值类型分为整数、浮点数和定点数三类:

1、整数
在这里插入图片描述
在这里插入图片描述
2、浮点数


3、定点数
在这里插入图片描述

字符串类型

字符串类型可以细分为String、FixedString(固定长度)和UUID三类。

时间类型

时间类型分为Date、DateTime(精确到秒)和DateTime64(精确到亚秒)三类。

复杂类型

复杂类型分为Array、Enum、Tuple和Nested四类

1、Array数组类型

create table test_array(
	name String ,
	hobby Array(String)
) engine=Log;

insert into test_array values('于谦',['抽烟','喝酒','烫头']);
insert into test_array values('班长',['抽烟','于谦']);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2、Enum枚举类型

create table test_enum(
	id UInt8 ,
	color Enum('RED'=1,'GREEN'=2 ,'BLUE'=3)
)engine=Memory ;

insert into test_enum values(1,'RED'),(3,'BLUE') ;
insert into test_enum values(4,'PINK');  -- 没有声明的值是不能插入
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、Tuple元祖类型


create table test_tuple(
	name String ,
	info Tuple(String,String,UInt8)
)engine=Memory ;

insert into  test_tuple values('zss',('M','coder',23)),('lss',tuple('F','coder',33));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、Nested嵌套类型

create table test_nested(
	uid Int8 ,
	name String ,
	hobby Nested(
	  id Int8 ,
	  hname1 String ,
	  hname2 String
)
)engine=Memory ;

insert into test_nested values (1,'zss',[1,2,3],['吃','喝','睡'],['eat','drink','sleep']);
insert into test_nested values (2,'lss',[1,2],['吃','喝'],['eat','drink']);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

特殊类型

特殊类型包括Domain 、IPv6、IPv4(存储ip地址)和Nulltable 类型

1、IPv4类型

create table tb_ip2(
	id Int8 ,
	ip IPv4 
)engine=Memory ;

insert into tb_ip2 values(1,'192.167.34.2') ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、Nulltable 类型

create table tb_nulltable  (
	id Int8 ,
	age Nulltable(Int8)  
)engine=Memory ;
  • 1
  • 2
  • 3
  • 4

参考:https://www.kancloud.cn/kanbaobao/clickhouse/2374152

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/246554
推荐阅读
相关标签
  

闽ICP备14008679号