日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据源管理 | OLAP查询引擎,ClickHouse集群化管理

發布時間:2025/3/16 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据源管理 | OLAP查询引擎,ClickHouse集群化管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、列式庫簡介

ClickHouse是俄羅斯的Yandex公司于2016年開源的列式存儲數據庫(DBMS),主要用于OLAP在線分析處理查詢,能夠使用SQL查詢實時生成分析數據報告。

列式存儲

行式存儲和列式存儲,數據在磁盤上的組織結構有著根本不同,數據分析計算時,行式存儲需要遍歷整表,列式存儲只需要遍歷單個列,所以列式庫更適合做大寬表,用來做數據分析計算。

絮叨一句:注意這里比較的場景,是數據分析計算的場景。

二、集群配置

1、基礎環境

ClickHouse單服務默認已經安裝完畢

  • Linux下安裝ClickHouse單機服務
  • SpringBoot整合ClickHouse列式數據庫

2、取消文件限制

vim /etc/security/limits.conf vim /etc/security/limits.d/90-nproc.conf 文件末尾追加 * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072

3、取消SELINUX

修改/etc/selinux/config中的SELINUX=disabled后重啟

4、集群配置文件

服務分別添加集群配置:vim /etc/metrika.xml

<yandex> <clickhouse_remote_servers><clickhouse_cluster><shard><internal_replication>true</internal_replication><replica><host>192.168.72.133</host><port>9000</port></replica></shard><shard><replica><internal_replication>true</internal_replication><host>192.168.72.136</host><port>9000</port></replica></shard><shard><internal_replication>true</internal_replication><replica><host>192.168.72.137</host><port>9000</port></replica></shard></clickhouse_cluster> </clickhouse_remote_servers><zookeeper-servers><node index="1"><host>192.168.72.133</host><port>2181</port></node><node index="2"><host>192.168.72.136</host><port>2181</port></node><node index="3"><host>192.168.72.137</host><port>2181</port></node> </zookeeper-servers><macros><replica>192.168.72.133</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>

注意這里

<macros><replica>192.168.72.133</replica> </macros>

配置各自服務的IP地址。

5、啟動集群

分別啟動三臺服務

service clickhouse-server start

6、登錄客戶端查看

這里登錄任意一臺服務就好

clickhouse-client en-master :) select * from system.clusters

這里這里集群名稱:clickhouse_cluster,后續使用。

7、基本環境測試

三臺服務上同時創建表結構。

CREATE TABLE ontime_local (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);

133環境創建分布表

CREATE TABLE ontime_all AS ontime_local ENGINE = Distributed(clickhouse_cluster, default, ontime_local, rand());

隨便寫入一臺服務數據

insert into ontime_local (FlightDate,Year) values ('2020-03-12',2020);

查詢總表

select * from ontime_all;

寫入總表,數據會分布到各個單表中

insert into ontime_all (FlightDate,Year)values('2001-10-12',2001); insert into ontime_all (FlightDate,Year)values('2002-10-12',2002); insert into ontime_all (FlightDate,Year)values('2003-10-12',2003);

任意關閉一臺服務,集群查詢直接掛掉

三、集群環境整合

1、基礎配置

url:配置全部的服務列表,主要用來管理表結構,批量處理;

cluster:集群連接服務,可以基于Nginx代理服務配置;

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourceclick:driverClassName: ru.yandex.clickhouse.ClickHouseDriverurl: jdbc:clickhouse://127.0.0.1:8123/default,jdbc:clickhouse://127.0.0.1:8123/default,jdbc:clickhouse://127.0.0.1:8123/defaultcluster: jdbc:clickhouse://127.0.0.1:8123/defaultinitialSize: 10maxActive: 100minIdle: 10maxWait: 6000

2、管理接口

分別向每個單節點服務創建表和寫入數據:

data_shard(單節點數據)

data_all(分布數據)

@RestController public class DataShardWeb {@Resourceprivate JdbcFactory jdbcFactory ;/*** 基礎表結構創建*/@GetMapping("/createTable")public String createTable (){List<JdbcTemplate> jdbcTemplateList = jdbcFactory.getJdbcList();for (JdbcTemplate jdbcTemplate:jdbcTemplateList){jdbcTemplate.execute("CREATE TABLE data_shard (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192)");jdbcTemplate.execute("CREATE TABLE data_all AS data_shard ENGINE = Distributed(clickhouse_cluster, default, data_shard, rand())");}return "success" ;}/*** 節點表寫入數據*/@GetMapping("/insertData")public String insertData (){List<JdbcTemplate> jdbcTemplateList = jdbcFactory.getJdbcList();for (JdbcTemplate jdbcTemplate:jdbcTemplateList){jdbcTemplate.execute("insert into data_shard (FlightDate,Year) values ('2020-04-12',2020)");}return "success" ;} }

3、集群查詢

上述步驟執行完成后,可以連接集群服務查詢分布總表和單表的數據。

基于Druid連接

@Configuration public class DruidConfig {@Resourceprivate JdbcParamConfig jdbcParamConfig ;@Beanpublic DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(jdbcParamConfig.getCluster());datasource.setDriverClassName(jdbcParamConfig.getDriverClassName());datasource.setInitialSize(jdbcParamConfig.getInitialSize());datasource.setMinIdle(jdbcParamConfig.getMinIdle());datasource.setMaxActive(jdbcParamConfig.getMaxActive());datasource.setMaxWait(jdbcParamConfig.getMaxWait());return datasource;} }

基于mapper查詢

<mapper namespace="com.ckhouse.cluster.mapper.DataAllMapper"><resultMap id="BaseResultMap" type="com.ckhouse.cluster.entity.DataAllEntity"><result column="FlightDate" jdbcType="VARCHAR" property="flightDate" /><result column="Year" jdbcType="INTEGER" property="year" /></resultMap><select id="getList" resultMap="BaseResultMap" >select * from data_all where Year=2020</select> </mapper>

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/data-manage-parent GitEE·地址 https://gitee.com/cicadasmile/data-manage-parent

推薦閱讀:數據源管理

序號標題
A01數據源管理:主從庫動態路由,AOP模式讀寫分離
A02數據源管理:基于JDBC模式,適配和管理動態數據源
A03數據源管理:動態權限校驗,表結構和數據遷移流程
A04數據源管理:關系型分庫分表,列式庫分布式計算
A05數據源管理:PostGreSQL環境整合,JSON類型應用
A06數據源管理:基于DataX組件,同步數據和源碼分析

總結

以上是生活随笔為你收集整理的数据源管理 | OLAP查询引擎,ClickHouse集群化管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。