zoukankan      html  css  js  c++  java
  • ClickHouse在CentOS-7 Linux下安装和初体验

    安装

    1、检查系统是否支持clickhouse安装

    grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.
    “SSE 4.2 supported” 代表可以安装,ClickHouse需要使用SSE硬件指令集加速,大大加快了CPU寄存器计算效率。


    2、新建rpm包所在目录
    mkdir -p /opt/software/clickhouse/
    cd /opt/software/clickhouse/

    自动安装:

    首先,您需要添加官方存储库:
    
    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
    如果您想使用最新版本,请将stable替换为testing(建议您在测试环境中使用)。
    
    然后运行这些命令以实际安装包:
    
    yum install clickhouse-server clickhouse-client

    或者按顺序手动安装:
    下载地址:
    https://packagecloud.io/Altinity/clickhouse/

    rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-test-20.8.3.18-1.el7.x86_64.rpm
    rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm

    启动服务
    可以运行如下命令在后台启动服务:

    systemctl start clickhouse-server
    systemctl stop clickhouse-server
    systemctl status clickhouse-server
    or
    service clickhouse-server start

    在我们安装的软件中包含这些包:

    • clickhouse-client 包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。
    • clickhouse-common 包,包含一个ClickHouse可执行文件。
    • clickhouse-server 包,包含要作为服务端运行的ClickHouse配置文件。

    服务端配置文件位于 /etc/clickhouse-server/。 在进一步讨论之前,请注意 config.xml文件中的<path> 元素. Path决定了数据存储的位置,因此该位置应该位于磁盘容量较大的卷上;默认值为 /var/lib/clickhouse/

    可以在/var/log/clickhouse-server/目录中查看日志。

    如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。

    你也可以在控制台中直接启动服务:

    clickhouse-server --config-file=/etc/clickhouse-server/config.xml

    启动命令行客户端

    可以使用命令行客户端连接到服务:

    clickhouse-client
    默认情况下它使用’default’用户无密码的与localhost:9000服务建立连接。
    客户端也可以用于连接远程服务,例如:
    
    clickhouse-client --host=example.com
    clickhouse-client --host=localhost:9099

    测试数据导入

    使用脱敏的Yandex.Metrica数据集
    Dataset由两个表组成,其中包含有关点击命中的匿名数据 (hits_v1)和访问表 (visits_v1),加起来1.8G文件,其中hits 包含1亿行(在列数据库中说“行”这个字比较怪啊,应该说导入1亿条数据)数据的表

    下载和导入点击表:
    
    curl -O https://clickhouse-datasets.s3.yandex.net/hits/partitions/hits_v1.tar
    tar xvf hits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory
    sudo service clickhouse-server restart
    clickhouse-client --query "SELECT COUNT(*) FROM datasets.hits_v1"
    
    下载和导入访问:
    
    curl -O https://clickhouse-datasets.s3.yandex.net/visits/partitions/visits_v1.tar
    tar xvf visits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory
    sudo service clickhouse-server restart
    clickhouse-client --query "SELECT COUNT(*) FROM datasets.visits_v1"

    也可以导入tsv
    https://clickhouse.tech/docs/zh/getting-started/tutorial/

    纽约出租车数据

    12亿行220GB的文件的纽约出租车数据,复杂Groupby查询时间在3台服务器集群下不超过1秒,单服务器不超4秒

    配置:16个物理内核,128G RAM(GROUP BY+Order查询)

    这在Hive还是MySQL都是望尘莫及。

    SELECT passenger_count, toYear(pickup_date) AS year, count(*) FROM trips_mergetree GROUP BY passenger_count, year
    
    SELECT passenger_count, toYear(pickup_date) AS year, round(trip_distance) AS distance, count(*)
    FROM trips_mergetree
    GROUP BY passenger_count, year, distance
    ORDER BY year, count(*) DESC

    https://clickhouse.tech/docs/zh/getting-started/example-datasets/nyc-taxi/

    命令行客户端使用

    这个客户端可以选择使用交互式与非交互式(批量)两种模式。
    使用批量模式,要指定 query 参数,或者发送数据到 stdin(它会检查 stdin 是否是 Terminal),或者两种同时使用。
    它与 HTTP 接口很相似,当使用 query 参数发送数据到 stdin 时,客户端请求就是一行一行的 stdin 输入作为 query 的参数。这种方式在大规模的插入请求中非常方便。

    默认情况下,在批量模式中只能执行单个查询。为了从一个 Script 中执行多个查询,可以使用 --multiquery 参数。除了 INSERT 请求外,这种方式在任何地方都有用。查询的结果会连续且不含分隔符地输出。
    同样的,为了执行大规模的查询,您可以为每个查询执行一次 clickhouse-client。但注意到每次启动 clickhouse-client 程序都需要消耗几十毫秒时间。

    在交互模式下,每条查询过后,你可以直接输入下一条查询命令。

    如果 multiline 没有指定(默认没指定):为了执行查询,按下 Enter 即可。查询语句不是必须使用分号结尾。如果需要写一个多行的查询语句,可以在换行之前输入一个反斜杠,然后在您按下 Enter 键后,您就可以输入当前语句的下一行查询了。

    如果 multiline 指定了:为了执行查询,需要以分号结尾并且按下 Enter 键。如果行末没有分号,将认为当前语句并没有输入完而要求继续输入下一行。

    若只运行单个查询,分号后面的所有内容都会被忽略。

    查询实例

    SELECT StartURL AS URL,AVG(Duration) AS AvgDuration 
    FROM datasets.visits_v1 
    WHERE StartDate BETWEEN '2014-03-23' AND '2014-03-30' 
    GROUP BY URL 
    ORDER BY AvgDuration DESC 
    LIMIT 10
    
    SELECT EventDate,URL,UserID 
    FROM datasets.hits_v1 
    WHERE EventDate BETWEEN '2014-03-23' AND '2014-03-30' 
    LIMIT 10
    
    SELECT EventDate,URL,UserID 
    FROM datasets.hits_v1 
    ORDER BY EventDate DESC 
    LIMIT 10;

    我的虚拟机是8G RAM 1CPU,最后一条查询性能: Elapsed: 0.432 sec. Processed 8.87 million rows, 856.69 MB (20.56 million rows/s., 1.99 GB/s.)

  • 相关阅读:
    python习题-用交集方式产生随机密码
    python习题-产生8位随机密码要包含大小写及数字
    python习题-替换敏感词
    python习题-注册用户程序
    Python习题-登录
    Python习题-统计日志中访问次数超过限制的IP
    PyCharm配置过程记录
    jmeter 多压力机并发测试过程
    Jmete基础使用
    Linux 中直接 I/O 机制的介绍
  • 原文地址:https://www.cnblogs.com/starcrm/p/13826973.html
Copyright © 2011-2022 走看看