ClickHouse 单机部署 - 大数据分析 clickhouse


https://hub.docker.com/r/clickhouse/clickhouse-server

https://abc.htmltoo.com/thread-45884.htm    #  clickhouse 集群部署 - 大数据分析


docker run -d  -p 8123:8123  --name ch  --restart=always --ulimit nofile=262144:262144  -e TZ='Asia/Shanghai' -v /etc/localtime:/etc/localtime:ro -v /data/file:/data/file -v /data/site/docker/env/mysql/clickhouse/one:/etc/clickhouse-server:ro    --link mariadb   clickhouse/clickhouse-server


docker exec -it  ch  /bin/bash


# 设置远程登陆及修改默认用户名密码

config.xml

    <!--<listen_host>::</listen_host>-->
    <!--<listen_host>::1</listen_host>-->
    <listen_host>0.0.0.0</listen_host>
    <timezone>Asia/Shanghai</timezone>
---开启web,把以下注释去掉 
    <!-- Default root page on http[s] server. For example load UI from https://tabix.io/ when opening http://localhost:8123 -->
    <!--
    <http_server_default_response><![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]></http_server_default_response>

-登录Tabix

http://g.htmltoo.com:8123


user.xml

# 将default用户改为只读
# 将<profile>default</profile>改为以下内容
<profile>readonly</profile>
# 新增root用户
# 在</default>下一行添加以下内容
<root>
		<password_sha256_hex>275617f1e3d0764300de0505056983006a92dd3877394931bfca978cea0a0259</password_sha256_hex>
		<networks incl="networks" replace="replace">
			<ip>::/0</ip>
		</networks>
		<profile>default</profile>
		<quota>default</quota>
</root>
<root>
# echo -n 123456789 | openssl dgst -sha256
# (stdin)= 15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225
            <!-- <password></password> -->
            <password_sha256_hex>275617f1e3d0764300de0505056983006a92dd3877394931bfca978cea0a0259</password_sha256_hex>

clickhouse-client --password

-输入密码 c 

clickhouse-client -u root --password 

-输入密码 c 


# 开启 ClickHouse 物化引擎

set global on cluster default max_partitions_per_insert_block = 10000;

SET allow_experimental_database_materialized_mysql = 1

users.xml

            <load_balancing>random</load_balancing>
            <allow_experimental_window_functions>1</allow_experimental_window_functions>

CREATE DATABASE dbhtmltoo ENGINE = MaterializeMySQL('mariadb:3306', 'dbhtmltoo', 'root', 'wdqdmm@r');

-选择同步的表

CREATE DATABASE IF NOT EXISTS dbhtmltoobak

ENGINE = MaterializeMySQL('mariadb:3306', 'dbhtmltoo', 'root', 'wdqdmm@r') 

SETTINGS allows_query_when_mysql_lost=true,max_wait_time_when_mysql_unavailable=10000,materialized_mysql_tables_list='dr_1_blog, dr_1_blog_data_0'

-查询表

show tables;


# 表同步

CREATE TABLE IF NOT EXISTS dr_1_blog ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('mariadb:3306','dbhtmltoo','dr_1_blog','root','wdqdmm@r')

CREATE TABLE IF NOT EXISTS dr_1_blog_data_0 ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('mariadb:3306','dbhtmltoo','dr_1_blog_data_0','root','wdqdmm@r')


# JDBC-URL

/default?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai?socket_timeout=300000&session_id=123


应用: clickhouse -> 添加服务端服务: server

镜像: yandex/clickhouse-server:latest

卷:

/etc/localtime:/etc/localtime:ro

/data/file:/data/file

/data/docker/monitor/clickhouse:/etc/clickhouse-server:ro

端口:(http)8123-8123


应用: clickhouse -> 添加交互式客户端服务: client

镜像: yandex/clickhouse-client:latest

命令:

--host server

卷:

/etc/localtime:/etc/localtime:ro

/data/file:/data/file


======================================

备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。

ClickHouse是“战斗民族”俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向 OLAP 的分布式列式DBMS,圈内人戏称为“喀秋莎数据库”。ClickHouse有一个简称"CK",与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:

列式存储数据库,数据压缩

关系型、支持SQL

分布式并行计算,把单机性能压榨到极限

高可用

数据量级在PB级别

实时数据更新

索引

================OLAP场景的特点======================

读多于写

不同于事务处理(OLTP)的场景,比如电商场景中加购物车、下单、支付等需要在原地进行大量insert、update、delete操作,数据分析(OLAP)场景通常是将数据批量导入后,进行任意维度的灵活探索、BI工具洞察、报表制作等。

数据一次性写入后,分析师需要尝试从各个角度对数据做挖掘、分析,直到发现其中的商业价值、业务变化趋势等信息。这是一个需要反复试错、不断调整、持续优化的过程,其中数据的读取次数远多于写入次数。这就要求底层数据库为这个特点做专门设计,而不是盲目采用传统数据库的技术架构。

大宽表,读大量行但是少量列,结果集较小

在OLAP场景中,通常存在一张或是几张多列的大宽表,列数高达数百甚至数千列。对数据分析处理时,选择其中的少数几列作为维度列、其他少数几列作为指标列,然后对全表或某一个较大范围内的数据做聚合计算。这个过程会扫描大量的行数据,但是只用到了其中的少数列。而聚合计算的结果集相比于动辄数十亿的原始数据,也明显小得多。

数据批量写入,且数据不更新或少更新

OLTP类业务对于延时(Latency)要求更高,要避免让客户等待造成业务损失;而OLAP类业务,由于数据量非常大,通常更加关注写入吞吐(Throughput),要求海量数据能够尽快导入完成。一旦导入完成,历史数据往往作为存档,不会再做更新、删除操作。

无需事务,数据一致性要求低

OLAP类业务对于事务需求较少,通常是导入历史日志数据,或搭配一款事务型数据库并实时从事务型数据库中进行数据同步。多数OLAP系统都支持最终一致性。

灵活多变,不适合预先建模

分析场景下,随着业务变化要及时调整分析维度、挖掘方法,以尽快发现数据价值、更新业务指标。而数据仓库中通常存储着海量的历史数据,调整代价十分高昂。预先建模技术虽然可以在特定场景中加速计算,但是无法满足业务灵活多变的发展需求,维护成本过高。


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回