logo资料库

大数据技术之ClickHouse.docx

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
第1章 ClickHouse概述
1.1 什么是ClickHouse
1.2 什么是列式存储
1.3 安装前的准备
1.3.1 CentOS取消打开文件数限制
1.3.2 CentOS取消SELINUX
1.3.3 关闭防火墙
1.3.4 安装依赖
第2章 安装
2.1 网址
2.2 单机模式
2.2.1 上传5个文件到/opt/software/
2.2.2分别安装这5个rpm文件
2.2.3 启动ClickServer
2.2.4 使用client连接server
2.3 分布式集群安装
2.3.1 在hadoop103,hadoop104上面执行之前的所有步骤
2.3.2 三台机器修改配置文件config.xml
2.3.3 在三台机器的etc目录下新建metrika.xml文件
3.3.4 三台机器启动ClickServer
第3章 数据类型
3.1 整型
3.2 浮点型
3.3 布尔型
3.4 字符串
3.5 枚举类型
3.6 数组
3.7 元组
3.8 Date
第4章 表引擎
4.1 TinyLog
4.2 Memory
4.3 Merge
4.4 MergeTree
4.5 ReplacingMergeTree
4.6 SummingMergeTree
4.7 Distributed
第5章 SQL语法
5.1 CREATE
5.1.1 CREATE DATABASE
5.1.2 CREATE TABLE
5.2 INSERT INTO
5.3 ALTER
5.4 DESCRIBE TABLE
5.5 CHECK TABLE
尚硅谷大数据技术之 ClickHouse 尚硅谷大数据技术之 Clickhouse (作者:尚硅谷大数据研发部) 版本:V1.0 第 1 章 ClickHouse 概述 1.1 什么是 ClickHouse ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),主要用 于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。 1.2 什么是列式存储 Name 张三 以下面的表为例: Id 1 2 3 采用行式存储时,数据在磁盘上的组织结构为: 1 好处是想查某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想查所 Age 18 22 34 18 34 22 张三 李四 李四 王五 2 3 王五 有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。 2 而采用列式存储时,数据在磁盘上的组织结构为: 1 这时想查所有人的年龄只需把年龄那一列拿出来就可以了 1.3 安装前的准备 张三 李四 王五 3 18 22 34 1.3.1 CentOS 取消打开文件数限制 在/etc/security/limits.conf、/etc/security/limits.d/90-nproc.conf 这 2 个文件的末尾加入一下 内容: [root@hadoop102 software]# vim /etc/security/limits.conf 在文件末尾添加: * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 [root@hadoop102 /etc/security/limits.d/90-nproc.conf 在文件末尾添加: software]# vim 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 Clickhouse * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 重启服务器之后生效,用 ulimit -n 或者 ulimit -a 查看设置结果 [root@hadoop102 ~]# ulimit -n 65536 1.3.2 CentOS 取消 SELINUX 修改/etc/selinux/config 中的 SELINUX=disabled 后重启 [root@hadoop102 ~]# vim /etc/selinux/config SELINUX=disabled 1.3.3 关闭防火墙 [root@hadoop102 ~]# service iptables stop [root@hadoop102 ~]# service ip6tables stop ip6tables:将 chains 设置为 ACCEPT 策略:filter ip6tables:清除防火墙规则: :正在卸载模块: 1.3.4 安装依赖 [root@hadoop102 ~]# yum install -y libtool [root@hadoop102 ~]# yum install -y *unixODBC* 第 2 章 安装 2.1 网址 [确定] [确定] [确定] 官网:https://clickhouse.yandex/ 下载地址:http://repo.red-soft.biz/repos/clickhouse/stable/el6/ 2.2 单机模式 2.2.1 上传 5 个文件到/opt/software/ [root@hadoop102 software]# ls clickhouse-client-1.1.54236-4.el6.x86_64.rpm clickhouse-server-1.1.54236-4.el6.x86_64.rpm clickhouse-compressor-1.1.54236-4.el6.x86_64.rpm clickhouse-server-common-1.1.54236-4.el6.x86_64.rpm clickhouse-debuginfo-1.1.54236-4.el6.x86_64.rpm 2.2.2 分别安装这 5 个 rpm 文件 [root@hadoop102 software]# rpm -ivh *.rpm Preparing... ########################################### [100%] 1:clickhouse-server-commo##################################### ###### [ 20%] ########################################### [ 40%] 2:clickhouse-server 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 Clickhouse 3:clickhouse-client 4:clickhouse-debuginfo 5:clickhouse-compressor ########################################### [ 60%] ########################################### [ 80%] ########################################### [100%] 2.2.3 启动 ClickServer software]# 前台启动: [root@hadoop102 --config-file=/etc/clickhouse-server/config.xml 后台启动: [root@hadoop102 --config-file=/etc/clickhouse-server/config.xml >null 2>&1 & [1] 2696 software]# clickhouse-server nohup clickhouse-server 2.2.4 使用 client 连接 server [root@hadoop102 software]# clickhouse-client ClickHouse client version 1.1.54236. Connecting to localhost:9000. Connected to ClickHouse server version 1.1.54236. :) 2.3 分布式集群安装 2.3.1 在 hadoop103,hadoop104 上面执行之前的所有步骤 2.3.2 三台机器修改配置文件 config.xml [root@hadoop102 ~]# vim /etc/clickhouse-server/config.xml :: [root@hadoop103 ~]# vim /etc/clickhouse-server/config.xml :: [root@hadoop104 ~]# vim /etc/clickhouse-server/config.xml :: 2.3.3 在三台机器的 etc 目录下新建 metrika.xml 文件 [root@hadoop102 ~]# vim /etc/metrika.xml 添加如下内容: 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
true hadoop103 9000 尚硅谷大数据技术之 Clickhouse true hadoop102 9000 true hadoop104 9000 hadoop102 2181 hadoop103 2181 hadoop104 2181 hadoop102 ::/0 10000000000 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 Clickhouse 0.01 lz4 注意:上面标红的地方需要根据机器不同去修改 3.3.4 三台机器启动 ClickServer 首先在三台机器开启 Zookeeper software]# 前台启动: [root@hadoop102 --config-file=/etc/clickhouse-server/config.xml 后台启动: [root@hadoop102 --config-file=/etc/clickhouse-server/config.xml >null 2>&1 & [1] 2696 software]# clickhouse-server nohup clickhouse-server 第 3 章 数据类型 3.1 整型 固定长度的整型,包括有符号整型或无符号整型。 整型范围(-2n-1~2n-1-1): Int8 - [-128 : 127] Int16 - [-32768 : 32767] Int32 - [-2147483648 : 2147483647] Int64 - [-9223372036854775808 : 9223372036854775807] 无符号整型范围(0~2n-1): UInt8 - [0 : 255] UInt16 - [0 : 65535] UInt32 - [0 : 4294967295] UInt64 - [0 : 18446744073709551615] 3.2 浮点型 Float32 - float Float64 – double 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
建议尽可能以整数形式存储数据。例如,将固定精度的数字转换为整数值,如时间用毫 尚硅谷大数据技术之 Clickhouse 秒为单位表示,因为浮点型进行计算时可能引起四舍五入的误差。 :) select 1-0.9 ┌───────minus(1, 0.9)─┐ │ 0.09999999999999998 │ └─────────────────────┘ 与标准 SQL 相比,ClickHouse 支持以下类别的浮点数: Inf-正无穷: :) select 1/0 ┌─divide(1, 0)─┐ │ └──────────────┘ -Inf-负无穷: :) select -1/0 ┌─divide(1, 0)─┐ │ └──────────────┘ NaN-非数字: :) select 0/0 ┌─divide(0, 0)─┐ │ └──────────────┘ -inf │ inf │ nan │ 3.3 布尔型 没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0 或 1。 3.4 字符串 1)String 字符串可以任意长度的。它可以包含任意的字节集,包含空字节。 2)FixedString(N) 固定长度 N 的字符串,N 必须是严格的正自然数。当服务端读取长度小于 N 的字符 串时候,通过在字符串末尾添加空字节来达到 N 字节长度。 当服务端读取长度大于 N 的 字符串时候,将返回错误消息。 与 String 相比,极少会使用 FixedString,因为使用起来不是很方便。 3.5 枚举类型 包括 Enum8 和 Enum16 类型。Enum 保存 'string'= integer 的对应关系。 Enum8 用 'String'= Int8 对描述。 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 Clickhouse Enum16 用 'String'= Int16 对描述。 用法演示: 创建一个带有一个枚举 Enum8('hello' = 1, 'world' = 2) 类型的列: CREATE TABLE t_enum ( ) ENGINE = TinyLog 这个 x 列只能存储类型定义中列出的值:'hello'或'world'。如果尝试保存任何其 x Enum8('hello' = 1, 'world' = 2) 他值,ClickHouse 抛出异常。 :) INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello') INSERT INTO t_enum VALUES Ok. 3 rows in set. Elapsed: 0.002 sec. :) insert into t_enum values('a') INSERT INTO t_enum VALUES Exception on client: Code: 49. DB::Exception: Unknown element 'a' for type Enum8('hello' = 1, 'world' = 2) 从表中查询数据时,ClickHouse 从 Enum 中输出字符串值。 SELECT * FROM t_enum ┌─x─────┐ │ hello │ │ world │ │ hello │ └───────┘ 如果需要看到对应行的数值,则必须将 Enum 值转换为整数类型。 SELECT CAST(x, 'Int8') FROM t_enum ┌─CAST(x, 'Int8')─┐ │ │ │ └─────────────────┘ 1 │ 2 │ 1 │ 3.6 数组 Array(T):由 T 类型元素组成的数组。 T 可以是任意类型,包含数组类型。 但不推荐使用多维数组,ClickHouse 对多维数组 的支持有限。例如,不能在 MergeTree 表中存储多维数组。 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 Clickhouse 可以使用 array 函数来创建数组: array(T) 也可以使用方括号: [] 创建数组案例: :) SELECT array(1, 2) AS x, toTypeName(x) SELECT [1, 2] AS x, toTypeName(x) │ ┌─x─────┬─toTypeName(array(1, 2))─┐ │ [1,2] │ Array(UInt8) └───────┴─────────────────────────┘ 1 rows in set. Elapsed: 0.002 sec. :) SELECT [1, 2] AS x, toTypeName(x) SELECT [1, 2] AS x, toTypeName(x) ┌─x─────┬─toTypeName([1, 2])─┐ │ [1,2] │ Array(UInt8) │ └───────┴────────────────────┘ 1 rows in set. Elapsed: 0.002 sec. 3.7 元组 Tuple(T1, T2, ...):元组,其中每个元素都有单独的类型。 创建元组的示例: :) SELECT tuple(1,'a') AS x, toTypeName(x) SELECT (1, 'a') AS x, toTypeName(x) ┌─x───────┬─toTypeName(tuple(1, 'a'))─┐ │ (1,'a') │ Tuple(UInt8, String) └─────────┴────────────────────────── ─┘ │ 1 rows in set. Elapsed: 0.021 sec. 3.8 Date 日期类型,用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值。 还有很多数据结构,可以参考官方文档:https://clickhouse.yandex/docs/zh/data_types/ 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
分享到:
收藏