zoukankan      html  css  js  c++  java
  • ClickHouse 简单使用(一)

    1 前言

    1.1 简介

    ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。在传统的行式数据库系统中,处于同一行中的数据总是被物理的存储在一起。而在列式数据库系统中,来自不同列的值被单独存储,来自同一列的数据被存储在一起。

    ClickHouse 有以下重要优势:

    1. 真正的面向列的数据库管理系统。在真正的面向列DBMS中,没有额外的数据与值一起存储。

    2. 数据压缩。它提供了在磁盘空间和CPU消耗之间权衡取舍的压缩编解码器,

    3. 独特的数据磁盘存放方式。按照主键对数据进行物理排序,可以提取数据的特定值或值范围的低延迟(小于几十毫秒)。

    4. 多核并行处理。使用当前服务器上所有可用的必要资源,使大型查询自然而然地并行化。

    5. 在多台服务器上进行分布式处理。在ClickHouse中,数据可以驻留在不同的分片上。每个分片可以是一组用于容错的副本。

    6.  SQL支持。 ClickHouse支持一种基于SQL的声明式查询语言,在许多情况下与ANSI SQL标准相同。

    7. 向量计算引擎。数据不仅按列存储,而且通过向量(列的一部分)进行处理,从而可以实现较高的CPU效率。

    8. 数据复制和数据完整性支持。ClickHouse使用异步多主复制。写入任何可用的副本后,所有其余副本在后台检索其副本。系统在不同副本上维护相同的数据。

    同时,它也有一些不足:

    1. 不支持事务事务。

    2. 缺乏以高速率和低延迟修改或删除已插入数据的能力。但有批量删除和更新可用于清理或修改数据。

    3. 稀疏索引使得ClickHouse在点查询中根据键检索单行时效率不高。

    ClickHouse的特性决定了它适合OLAP场景。本文将介绍clickhouse的基础知识,常用功能和使用方法。

    1.2实验环境

    服务器:

    六台服务器,IP 地址和主机名分别如下:

    IP地址

    主机名

    10.19.134.22

    node01

    10.19.134.23

    node02

    10.19.134.24

    node03

    10.19.134.25

    node04

    10.19.134.26

    node05

    10.19.134.27

    node06

    硬件:

     CPU:逻辑CPU 8个,

    内存:32GB

    操作系统:

    CentOS 7.7

    软件:

    yum

      ClickHouse 20.9.2.20

    2 安装ClickHouse

    本文安装的ClickHouse 20.9.2.20 ,需要以下依赖:

    gcc 9.1

    ninja 1.7.2

    cmake 3.3

    yum 3.4.3,并安装了 Centos-7.repo 和 epel-7.repo

    php

    pthreads

        

    我们分别介绍通过 yum 安装和源码安装的方法。

    2.1 通过yum 安装

    这个方法操作简单,成功率高。

    只需要执行如下几条命令。

    在中国:

    yum install yum-utils

    rpm --import https://mirrors.tuna.tsinghua.edu.cn/clickhouse/CLICKHOUSE-KEY.GPG

    yum-config-manager --add-repo  https://mirrors.tuna.tsinghua.edu.cn/clickhouse/rpm/stable/x86_64

    yum install clickhouse-server clickhouse-client

    在国外:

    yum install yum-utils

    rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG

    yum-config-manager --add-repo  https://repo.clickhouse.tech/rpm/stable/x86_64

    yum install clickhouse-server clickhouse-client

    安装后,程序会创建操作系统用户clickhouse.

    2.2 源码安装

    这种方法操作复杂,成功率低。

     

    1. 首先,使用yum安装依赖组件:

    yum -y install gcc

    yum -y install gcc-c++

    yum -y install zlib

    yum -y install zlib-devel

    yum -y install libtool

    yum -y install -y libstdc++-static

    yum -y install -y readline-devel

    yum -y install -y libicu-devel

     

    2. 安装 cmake 3.3 以上的版本

    2.1 下载 cmake 3.3 以上的版本。这里我们下载cmake-3.19.0-rc1.tar.gz.

    2.2 解压这个包,并进入解压后的目录

    tar zxvf cmake-3.19.0-rc1.tar.gz.

    2.3 编译并安装

    ./bootstrap

    make && make install

    3. 安装 gcc 9.0

    3.1 下载gcc 源码,版本9.0以上。

    wget https://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz

     

    3.2 解压文件包并进入解压后的目录:

    tar zxvf gcc-9.1.0.tar.gz

    cd gcc-9.1.0

    3.3 执行脚本download_prerequisites,下载所依赖库。

    ./contrib/download_prerequisites

    或者手动将这些包下载到gcc源码的目录中,然后解压,并创建如下软连接。

    tar zxvf mpc-1.0.3.tar.gz

    tar jxvf gmp-6.1.0.tar.bz2

    tar jxvf isl-0.18.tar.bz2

    tar jxvf mpfr-3.1.4.tar.bz2

    ln -sf mpc-1.0.3 mpc

    ln -sf gmp-6.1.0 gmp

    ln -sf isl-0.18 isl

    ln -sf mpfr-3.1.4 mpfr

    3.4 编译前配置

    ./configure --enable-languages=c,c++ --disable-multilib --disable-checking

     

    3.5 扩大交换分区。gcc 的编译和安装需要很大的存储空间。

    SWAP=/tmp/swap

    dd if=/dev/zero of=$SWAP bs=1M count=500

    mkswap $SWAP

    swapon $SWAP

     

    3.6 编译,这会花费1个小时左右的时间。

    make -j 16

     

    3.7之后正式安装

    make install

    3.8 完成上述过程后,gcc会安装到 /usr/local/bin。进入这个目录,创建如下软链接

    ln -sf /usr/local/bin/gcc /usr/local/bin/gcc-9

    ln -sf /usr/local/bin/g++ /usr/local/bin/g++-9

    ln -sf /usr/local/bin/gcc /usr/local/bin/cc

    ln -sf /usr/local/bin/g++ /usr/local/bin/c++

     

    3.9 将动态库 libstdc++.so 复制到 /usr/lib64 目录中。对于gcc-9.1 需要复制的是 libstdc++.so.6.0.26。

    cp ./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/ libstdc++.so.6.0.26 /usr/lib64

    3.10 在/usr/lib64中创建指向libstdc++.so.6.0.26的软链接:

    cd /usr/lib64

    rm -f libstdc++.so.6

    ln -s libstdc++.so.6.0.26 libstdc++.so.6

    4. 安装 clickhouse

    4.1 声明如下环境变量:

    export CC=gcc-9

    export CXX=g++-9

     

    4.2 下载 ClickHouse源码。本文下载的版本是20.9.2.20。

    4.3 解压这个包,并进入解压后的目录

    tar ClickHouse-20.9.2.20-stable.tar.gz

    cd ClickHouse-20.9.2.20-stable

        

    4.4 编译并安装

    mkdir build

    cd build

    cmake ..

    ninja

     

    4.5 安装后,创建用户clickhouse,用户组clickhouse。

    groupadd -g 993 clickhouse

    useradd -g clickhouse --no-create-home -d /nonexistent --shell /bin/false clickhouse

    3 配置

    ClickHouse 的配置文件位于etc/clickhouse-server/中。ClickHouse支持多配置文件管理。主配置文件是 /etc/clickhouse-server/config.xml。其余文件在目录 /etc/clickhouse-server/config.d中。

    这一章介绍一些基本的配置。第8章会介绍一些针对特定的场景的配置。

    1. 在初次安装的clickhouse 中,配置监听的地址。具体方法是编辑 /etc/clickhouse-server/config.xml,在 <yandex>…</yandex> 内部,配置listen_host。

    例如:

    <listen_host>::</listen_host>

    表示监听所有ip地址。

      配置参数详见服务器配置

    2. clickhouse的默认的用户是“default”,初始是没有密码的。为了安全起见,应该为用户 “default”设置密码,还应该创建自定义的用户。

    为 default 设置密码的方法:

    1. 获取自定义密码的SHA256密文形式。

    我们可以自己设置密码。例如,这里密码的明文为“default”,则获取密文的方法如下:

    [root@node01 ~]# echo -n "default" | sha256sum | tr -d '-'

    37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f

    也可以生成随机的密码:

    [root@node01 ~]# PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'

    O96NIXfx

    094c52130fd080481d988e02bd8fc2226ab12d2ec335a5993b6f3e2188c05337

    上面的两行结果分别是是明文密码和密文密码。

    2. 编辑 users.xml,在yandex-> users->default中新增条目 <password_sha256_hex>,内容是上一步获得的密文密码,例如:

    <password_sha256_hex>37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f </password_sha256_hex>

        

    它也支持明文密码,标签是 <password>,但安全性不如密文密码。

    3. 创建自定义用户。编辑文件 users.xml,在yandex -> users中,新增用户。本文中添加用户 clickhouse,密码是clickhouse。

    <clickhouse>

    <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>

            <access_management>1</access_management>

            <networks incl="networks" replace="replace">

                <ip>::/0</ip>

            </networks>

            <profile>default</profile>

            <quota>default</quota>

         </clickhouse>

    这里 access_management是一个很重要的参数,如果值为1,则表示用户是超级用户。如果值为或没有配置,则用户只能登录。除非这个用户得到超级用户的授权。

    4. 如果希望更安全,可以取消属主以外用户的对配置文件的读写权限。

    cd /etc/clickhouse-server

    chmod o-rwx *

    5. 重启数据库即可

    systemctl restart clickhouse-server.service

  • 相关阅读:
    Windows 7 远程协助
    Windows 7 帮助和支持资源—第三方网站
    Windows 7 帮助和支持资源—第三方软件
    数据结构-队列
    数据结构-栈
    pycharm每日技巧-2
    数据结构-链表
    时间处理-1
    二维数组的排序
    《疯狂的简洁》书摘
  • 原文地址:https://www.cnblogs.com/xianghuaqiang/p/14381077.html
Copyright © 2011-2022 走看看