Clickhouse入门篇——一篇足矣

背景

我司今年要立个小的科研项目,前几个项目做完之后数据有了(物联网数据),基于数据也有些简单的图表报表显示了,领导要求今年搞一下,如何基于此可以做些大数据分析,请教了原来大佬同事,给指了条道。让看看clickhouse,所以,井底小蛙的我划分了下学习计划:
(1)什么是clickhouse,能解决啥问题
(2)动手搭建一下,安装部署启动了解一下
(3)客户端的身份介入看看效果
(4)程序连一波combo三连试,看看跑得灵否。
在学习到第三步时,我就跑去问大佬,有啥好用的可视化客户端不?大佬说著名的superset了解下。
接着我又把情况和大致想搭的架构和大佬絮叨了一下:想着从kafka拉数据,然后用ck做批处理(历史数据分析 用),用flink+redis做实时数据的处理,包括指标排名类并存储到redis中去。大佬给说flink+redis是上古之路了,不如去了解下kafka table -》engine merge tree table,这个可以做实时分析,即kafka+ck 可以搞定一切了~~

经大佬提点,如获至宝,下午赶紧在补一下缺少的知识。感谢我领导,给我时间让我探索,杠杠地nice

1.Clickhouse初识

1.1 clickhouse简介

ClickHourse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)是Yandex公司产品,俄语支持最大的搜索引擎,基于点击数据流 click stream的data house数据仓库

1.2 clickhouse特点

  • 支持SQL、DDL、DML语句内置数百个函数
  • 接口丰富,提供TCP、HTTP、提供JDBC、CLI等 封装接口,支持JAVA、Python、NodeJS等众多第三方接口
  • 在线查询:实时应答,无需预处理。支持立方体预聚合
  • 分布式:MPP架构,支持集群模式,支持数据分区、分片、副本
  • 高性能:列存、高压缩、向量化引擎,单机部署,就有高性能
  • 安全可靠:熔断机制、防误删机制(eg:超过50G数据不许删除)
  • 权限:客户端接入权限、资源访问权限、操作访问权限、数据行级权限
  • 面各表编程,包括代理访问外部资源(eg:Zookeeper、文件等 )

2.Clickhouse 适应场景与不适合场景

  • 宽表(<10000列),结构化数据
  • 查询QPS相对较低,但是每个请求的数据使用量很高
  • 可应用于BI、电信、金融、电子商务、信息安全、网络游戏、物联网等领域
  • 不适合场景:(1)OLTP场景(2)Key-Value数据库

3.Clickhouse 安装

3.1 安装包下载地址

rpm安装包地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/;
其它参考官网安装描述;
也可以从以下地址找到需要安装的版本进行安装

3.2 安装包列表描述

  • clickhouse-common-static:clickhouse编译的二进制文件
  • clickhouse-server:创建clickhouse-server软连接,并按装默认配置服务
  • clickhouse-client:创建clickhouse-client客户端工具软连接,并安装客户端配置文件
  • clickhouse-common-static-dbg:带有调试信息的clickhouse二进制文件

3.3 安装与部署

3.3.1 系统要求

clickhouse需要在具有SSE 4.2指令集的系统上进行安装,通过以下命令查看系统CPU是否支持SSE4.2命令 ,如果不支持需要额外下载预编译的安装包,可参看官网描述

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

3.3.2 下载安装包并安装

由于我们服务器无法连接外网,所以选择离线方式安装
在这里插入图片描述
执行安装命令

 rpm -ivh /data/soft/clickhouse-*.rpm

安装完成后提示安装完成[100%]中间如出错,可自查安装依赖,补齐安装即可。通过如下命令可查看安装路径;
在这里插入图片描述
小知识补充:Linux系统中目录结果如下所说明

/bin: 存放常用普通命令
/sbin:存放管理员常用的命令
/lib:系统依赖的动态链接库
/sys:系统文件
/etc:存放系统配置文件
/usr:用户安装的应用程序
/var: 日志文件存放

系统的配置文件存在etc下面,可以进入相应路径查看其配置信息
在这里插入图片描述
配置信息包括大至内容如下所示:

1.logger :日志信息配置
2.http_port:默认是8123
3.tpc_port: 默认是9000
4.openSSL: ssl的认证配置
5.listen_host:对外提供服务的监听地址,需要把这里注释打开
6.path : 这上是存数据文件的路径,通常可以自定义
7.remote_server:配置clusters用到的

启动服务

两种启动方式,一种手动指一配置文件的方式启动;另一种通过service方式启动,如下命令所示:

 (1)sudo -u clickhouse  clickhouse-server --config-file=/etc/clickhouse-server/config.xml

Clickhouse入门篇——一篇足矣_第1张图片
注:直接用clickhouse-server --config-file=/etc/clickhouse-server/config.xml启动时报错,提示用sudo -u clickhouse启动,可以按说明填加参数,启动即可如上成功了
在这里插入图片描述

(2) /etc/init.d/clickhouse-server start 或 systemctl start clickhouse-server

在这里插入图片描述
通过ps -ef |grep clickhouse可以看到进程启动成功
在这里插入图片描述
若要停止服务也可以通过服务的方式/etc/init.d/clickhouse-server stop来停止

客户端连接

通过命令clickhouse-clinet可以直接连接server了如下图所示:在这里插入图片描述
最后有一句异常提示Code: 210. DB::NetException: Connection refused (localhost:9000),需要修改配置文件注释桌红框中内容,放开蓝框中内容,重启服务再次尝试
在这里插入图片描述
Clickhouse入门篇——一篇足矣_第2张图片
至此为止,安装与服务启动成功了,这次真的成功了,见图如下:
Clickhouse入门篇——一篇足矣_第3张图片

创建数据库并建表

根据官网描述,clickhouse-client后直接复制了创建数据库的语句CREATE DATABASE IF NOT EXISTS tutorial创建成功后,接着复制了创建表的语句(建表的时候指定数据类型,建表的时候一定要指定表引擎),结果报错了,原因是clickhouse-client只能执行一行名语,如果要执行多行,需要后面加上-m参数。以下是常用到的命令

clickhouse client -m  执行多行语句时,需要加-m

show databases;  查看数据库

create database tutorial;  创建一个数据库 
 
drop database  tutorial;   删除数据库

show tables:  查看表

select currentDatabase(); 查看当前数据库

use tutorial; 选择使用数据库db_zltest

desc hits_v1 ; 查看表结构

官网离线下载了数据示例:hits_v1和visits_v1,并通过tar xvf *.tar /data/clickhouse #path to ClickHouse data directory导入数据后重启服务service clickhouse-server restart。通过语句SELECT COUNT(*) FROM datasets.hits_v1查询是否导入数据成功
Clickhouse入门篇——一篇足矣_第4张图片

4.JAVA结合Clickhouse入门

你可能感兴趣的:(大数据分析,clickhouse,数据库,java,database,OLAP,大数据分析)