ClickHouse快速安装教程(MacOS)

文章目录

  • ClickHouse快速安装教程(MacOS)
    • 1.ClickHouse
    • 2.快速安装
    • 3.快速启动
      • 3.1.启动服务器
      • 3.2.启动客户端
    • 4.使用案例
      • 1.配置文件
      • 2.启动CK服务
      • 3.创建数据库
      • 4.创建表
      • 5.插入数据
      • 6.查询数据

ClickHouse快速安装教程(MacOS)

1.ClickHouse

ClickHouse®是一个用于在线分析处理(OLAP)的高性能、面向列的SQL数据库管理系统(DBMS)。ClickHouse专门针对大规模数据分析和实时查询的场景进行优化。它被设计用于高效处理PB级以上的数据,并能在秒级内完成复杂的查询分析。

OLAP场景的关键特征

  • 绝大多数是读请求
  • 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
  • 已添加到数据库的数据不能修改。
  • 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
  • 宽表,即每个表包含着大量的列
  • 查询相对较少(通常每台服务器每秒查询数百次或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每个查询有一个大表。除了他以外,其他的都很小。
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中

ClickHouse具有以下特点:

  1. 高性能:采用了列式存储和压缩技术,在处理大规模数据时能够快速高效地进行数据读取和查询。它使用了向量化查询引擎和多级缓存,可以实现即时的查询结果响应。
  2. 分布式架构:支持水平扩展,可以轻松地在集群中添加或删除节点。它使用分片和复制机制来实现高可用性和数据冗余。
  3. 强大的查询功能:支持标准的SQL查询语言,并提供了丰富的查询函数和聚合操作,可以方便地进行复杂的数据分析和数据挖掘。
  4. 可伸缩性:能够处理海量数据,并且能够在不降低性能的情况下轻松地扩展到更多的节点,以满足不断增长的数据需求。
  5. 低延迟查询:通过使用基于内存的数据存储和高效的查询引擎,可以在毫秒级的时间范围内处理查询请求,适用于需要实时响应的场景。 总之,ClickHouse是一个专门用于大规模数据分析和实时查询的高性能分布式列式数据库,它具有高可扩展性和低延迟查询的优势,适用于需要处理大量数据和复杂查询的应用场景。

2.快速安装

本地下载ClickHouse最简单的方法是运行以下curl命令:

curl https://clickhouse.com/ | sh

下载ClickHouse(执行本命令安装完成后,你可以编辑ClickHouse的配置文件来自定义参数和设置,例如监听地址、端口,以及数据存储和备份的路径等。)

3.快速启动

3.1.启动服务器

./clickhouse server

3.2.启动客户端

./clickhouse client

可以看到会出现以下警告:最大线程数低于30000。处理大量同时进行的查询可能会出现问题。

Warnings:
 * Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries.

这个警告表明,当前设置的线程数可能不足以处理大量的同时查询。您可以通过修改ClickHouse的配置文件来增加线程数。在/etc/clickhouse-server/config.xml文件中找到max_threads设置,并根据您的服务器性能和负载情况进行调整

4.使用案例

1.配置文件

添加配置文件 config.xml

<clickhouse>
  	<logger>
        <level>trace</level>
        <log>/Users/admin/ck/data/logs/clickhouse.log</log>
        <errorlog>/Users/admin/ck/data/logs/error.log</errorlog>
        <size>500M</size>
        <count>5</count>
    </logger>
    <http_port>8123</http_port>
    <tcp_port>9000</tcp_port>
    <interserver_http_port>9001</interserver_http_port>
    <interserver_http_host>127.0.0.1</interserver_http_host>  
    <listen_host>0.0.0.0</listen_host>
    <max_connections>4096</max_connections>
    <keep_alive_timeout>300</keep_alive_timeout>
    <max_concurrent_queries>1000</max_concurrent_queries>
    <uncompressed_cache_size>8589934592</uncompressed_cache_size>
    <mark_cache_size>5368709120</mark_cache_size>
  	<default_profile>default</default_profile>
    <default_database>default</default_database>
    <builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>
    <max_session_timeout>3600</max_session_timeout>
    <default_session_timeout>300</default_session_timeout>
    <max_table_size_to_drop>0</max_table_size_to_drop>
    <merge_tree>
        <parts_to_delay_insert>300</parts_to_delay_insert>
        <parts_to_throw_insert>600</parts_to_throw_insert>
        <max_delay_to_insert>2</max_delay_to_insert>
    </merge_tree>
    <max_table_size_to_drop>0</max_table_size_to_drop>
    <max_partition_size_to_drop>0</max_partition_size_to_drop>

    <!-- Path to data directory, with trailing slash. -->
    <path>/Users/admin/ck/data/</path>

    <!-- Path to temporary data for processing hard queries. -->
    <tmp_path>/Users/admin/ck/data/tmp/</tmp_path>
    <!-- Sources to read users, roles, access rights, profiles of settings, quotas. -->
    <user_directories>
        <users_xml>
            <!-- Path to configuration file with predefined users. -->
          	<!-- 此处的目录地址指向下方的users.xml -->
            <path>/Users/admin/ck/users.xml</path>
        </users_xml>
        <local_directory>
            <!-- Path to folder where users created by SQL commands are stored. -->
            <!-- 用户创建sql语句的存储目录 -->
            <path>/Users/admin/ck/users/</path>
        </local_directory>
    </user_directories>
</clickhouse>

添加用户配置文件 users.xml

<clickhouse>
  	<profiles>
        <default>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
        </default>
        <readonly>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
            <readonly>1</readonly>
        </readonly>
    </profiles>
    <quotas>
        <!-- Name of quota. -->
        <default>
            <interval>
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
    <users>
        <default>
          <!-- 明文:123456 -->
  <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
          <networks>
                <ip>::/0</ip>
            </networks>  
          <profile>default</profile>
          <quota>default</quota>
          <access_management>1</access_management>
        </default>
    </users>
</clickhouse>

⚠️注意:

如果不配置以上配置文件,使用CK默认的配置,在新增用户并配置权限会出现以下问题:DB::Exception: Could not insert user test because there is no writeable access

在这里插入图片描述

2.启动CK服务

与之前不同,此处使用指定的配置文件启动,也就是上节的配置文件地址。

./clickhouse server --config-file=/Users/admin/ck/config.xml

启动客户端,与之前一样。

3.创建数据库

CREATE DATABASE IF NOT EXISTS test

4.创建表

CREATE TABLE IF NOT EXISTS test.t_users
(
    `id` String COMMENT 'ID',
  	`name` Nullable(String) COMMENT '名称',
  	`age` Nullable(Int64) COMMENT '年龄',
  	`create_date` Nullable(Date) DEFAULT toDate(now()) COMMENT '创建时间'
) ENGINE = MergeTree 
PRIMARY KEY(id);

5.插入数据

INSERT INTO test.t_users(id,name,age) VALUES (1, 'jack', 18)

6.查询数据

select * from test.t_users where id = '1'

20240611160724911.png&pos_id=img-wqtrt12o-1718093364139)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700832.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLO检测环境安装配置

YOLO介绍 YOLO学习手册&#xff1a;YOLO教程 YOLO [ˈjoʊloʊ]&#xff08;You Only Look Once&#xff09;是一种快速而准确的目标检测算法&#xff0c;由Joseph Redmon等人在2016年提出。YOLO被广泛应用于计算机视觉领域&#xff0c;包括实时视频分析、自动驾驶、安防监控、…

Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)

我们经常会被问到这样一个问题。你接口返回的好慢呀&#xff0c;能不能提升一下接口响应时间啊&#xff1f;这个时候我们就需要去分析&#xff0c;为什么慢&#xff0c;慢在哪。而这首先应该做的就是确定接口返回时间过长确实是在服务内消耗的时间。而不是我们将请求发给网关或…

如何解决 Git 默认不区分文件名大小写和同名文件共存?

修改文件命名的大小写&#xff0c;不会有 git 记录 本文章的例子&#xff1a;将 demo.vue 文件命名改为 Demo.vue 1、在Git项目路径下执行该命令 git config core.ignorecase false &#xff08;1&#xff09;以上方法可以实现 git 区分 demo.vue 与 Demo.vue 文件&#xff0…

Catia零件颜色修改和透明度

可以调出这个功能 或者 可以修改透明度

2024 年 5 月区块链游戏研报:市值增长、玩家参与变迁、迷你游戏兴起

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;GameFi 研究页面 2024 年 5 月&#xff0c;以太坊的表现因 SEC 批准现货以太坊 ETF 的初步申请而得到显著提振。区块链游戏代币的总市值达到 201 亿美元&#xff0c;环比上涨 6.7%。然而&#xff0c;尽管市值有…

[大模型]LLaMA3-8B-Instruct Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架&#xff0c;对 LLaMA3-8B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法&#xff0c;深入了解其原理可参见博客&#xff1a;知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c…

观成科技:基于深度学习技术的APT加密流量检测与分类检测方案

一、前言 近年来APT攻击的案例屡见不鲜&#xff0c;给国家、企业以及个人的利益造成极大威胁。随着流量加密技术的不断成熟&#xff0c;许多APT组织倾向于将流量加密后进行传输&#xff0c;从而保护传输内容。由于加密流量的实际载荷已被加密&#xff0c;故采用原始的流量检测…

[大模型]Llama-3-8B-Instruct FastApi 部署调用

环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源…

RabbitMQ从入门到入土

同步与异步 同步调用 优势&#xff1a; 时效性强&#xff0c;等到结果后就返回 问题&#xff1a; 扩展性差 性能下降 级联失败问题 异步调用 优势&#xff1a; 耦合度低&#xff0c;扩展性强 无需等待&#xff0c;性能好 故障隔离&#xff0c;下游服务故障不影响上游 缓…

【C语言】12.C语言内存函数

文章目录 1.memcpy使用和模拟实现2.memmove使用和模拟实现3.memset函数的使用4.memcmp函数的使用 memcpy&#xff1a;内存拷贝 memmove&#xff1a;内存移动 memset&#xff1a;内存设置 memcmp&#xff1a;内存比较 1.memcpy使用和模拟实现 memcpy&#xff1a;内存拷贝 void…

Mysql查询分析工具Explain的使用

一、前言 作为一名合格的开发人员&#xff0c;与数据库打交道是必不可少的&#xff0c;尤其是在业务规模和数据体量大规模增长的条件下&#xff0c;应用系统大部分请求读写比例在10:1左右&#xff0c;而且插入操作和一般的更新操作很少出现性能问题&#xff0c;遇到最多的&…

产品人生(12):从“产品生命周期管理”看如何做“职业规划”

产品生命周期管理是产品人常接触的一个概念&#xff0c;它是一种全面管理产品从概念构想、设计开发、生产制造、市场推广、销售使用&#xff0c;直至最终退役的全生命周期过程的方法论和一系列业务流程。下面我们来简单介绍下产品生命周期管理&#xff1a; 概念阶段&#xff1a…

MybatisPlus代码生成器使用案例

针对数据库中的实体类表&#xff0c;自动生成相关的pojo类&#xff0c;mapper&#xff0c;service等 1. Get-Started 基于mybatisplus&#xff0c;idea下载mybatisplus插件 sql文件 /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 …

面试官:MySQL也可以实现分布式锁吗?

首先说结论&#xff0c;可以做&#xff0c;但不推荐做。 我们并不推荐使用数据库实现分布式锁。 如果非要这么做&#xff0c;实现大概有两种。 1、锁住Java的方法&#xff0c;借助insert实现 如何用数据库实现分布式锁呢&#xff0c;简单来说就是创建一张锁表&#xff0c;比…

PB案例学习笔记-19制作一个图片按钮

写在前面 这是PB案例学习笔记系列文章的第19篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

MAC认证

简介 MAC认证是一种基于接口和MAC地址对用户的网络访问权限进行控制的认证方法&#xff0c;它不需要用户安装任何客户端软件。设备在启动了MAC认证的接口上首次检测到用户的MAC地址以后&#xff0c;即启动对该用户的认证操作。认证过程中&#xff0c;不需要用户手动输入用户名…

Leetcode3174. 清除数字

Every day a Leetcode 题目来源&#xff1a;3174. 清除数字 解法1&#xff1a;栈 用栈模拟&#xff0c;遇到数字就弹出栈顶&#xff0c;遇到字母就插入栈。 最后留在栈里的就是答案。 代码&#xff1a; /** lc appleetcode.cn id3174 langcpp** [3174] 清除数字*/// lc c…

如何做好期货投资?

期货&#xff0c;这个词对于很多人来说可能还是个陌生的词汇&#xff0c;但是&#xff0c;随着经济的发展和人们对金融投资的需求增加&#xff0c;期货投资也变得越来越受到关注。那么&#xff0c;如何才能做好期货投资呢&#xff1f; 首先&#xff0c;了解期货的基本知识是非…

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易&#xff0c;就应该从它交易细则的入手&#xff0c;先彻底认识这个品种&#xff0c;因为它是来自欧美市场的投资方式&#xff0c;所以无论是从合约的计的单位&#xff0c;计价的货币&#xff0c;交易的具体时间&#xff0c;以及买卖过程…

word空白页删除不了怎么办?

上方菜单栏点击“视图”&#xff0c;下方点击“大纲视图”。找到文档分页符的位置。将光标放在要删除的分节符前&#xff0c;按下键盘上的“Delet”键删除分页符。