• CentOS7下安装ClickHouse详解


    禁用透明大页

    编辑 /etc/default/grub文件,在 GRUB_CMDLINE_LINUX 行最后加上 transparent_hugepage=never ,例如:

    GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_wjwcentos7/root rd.lvm.lv=centos_wjwcentos7/swap rhgb quiet transparent_hugepage=never"
    

    紧接着执行生效命令grub2-mkconfig -o /boot/grub2/grub.cfg, 然后重启!

    安装Clickhouse之前需要安装相关依赖包,否则会报错

    yum install -y libtool
    yum install -y *unixODBC*
    yum install -y libicu.x86_64
    
    #可选
    yum install -y perl-JSON.noarch
    

    RPM安装包

    推荐使用CentOS、RedHat和所有其他基于rpm的Linux发行版的官方预编译rpm包。

    首先,您需要添加官方存储库:

    yum install -y yum-utils
    yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
    yum install -y clickhouse-server clickhouse-client
    
    /etc/init.d/clickhouse-server start
    clickhouse-client # or "clickhouse-client --password" if you set up a password.
    

    修改Clickhouse配置文件

    clickhouse的server配置文件,默认路径在/etc/clickhouse-server/config.xmluser.xml

    config.xml是clickhouse的系统配置,包括日志,服务部署ip,zk等配置
    user.xml 是当前节点服务的配置,包括用户名密码,内存大小限制等

    修改 users.xml 文件

    里加上密码

    下的1的注释给取消掉

    修改 config.xml 文件
    里改成 0.0.0.0

    trace 里改成 warning

    💡提示: 一般是IPV4,如果IPV6改成 ::

    启动Clickhouse 或者关闭Clickhouse

    # 动Clickhouse
    sudo service clickhouse-server start
     
    # 止Clickhouse
    sudo service clickhouse-server stop
    
    # 重启Clickhouse
    sudo service clickhouse-server restart
     
    # 查看服务状态
    service clickhouse-server status
    
    #设置开机自启
    systemctl enable clickhouse-server
    
    #查看开机自启是否成功
    systemctl is-enabled clickhouse-server
    

    防火墙设置

    firewall-cmd --zone=public --add-port=8123/tcp --permanent
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --zone=public --add-port=9009/tcp --permanent
    
    #防火墙重新加载
    firewall-cmd --reload
    
    #查看放行的端口
    firewall-cmd --list-ports
    

    客户端连接Clickhouse

    clickhouse-client –host 192.168.152.128 –port 9000 –database default –user default –password ""
    

    集群部署

    ClickHouse集群是一个同质集群。 设置步骤:

    1. 在群集的所有机器上安装ClickHouse服务端
    2. 需要Zookeeper集群
    3. 在配置文件中设置集群配置
    4. 在每个实例上创建本地表
    5. 创建一个分布式表

    分布式表实际上是一种view,映射到ClickHouse集群的本地表。 从分布式表中执行SELECT查询会使用集群所有分片的资源。 您可以为多个集群指定configs,并创建多个分布式表,为不同的集群提供视图。

    具有三个分片,每个分片一个副本的集群的示例配置:

    每个节点上都要修改主配置文件: /etc/clickhouse-server/config.xml,在节点里的最后面添加上一行

    <yandex>
      <include_from>/etc/clickhouse-server/config.d/metrika-shard.xmlinclude_from>
    yandex>
    

    /etc/clickhouse-server/config.d/metrika-shard.xml文件里这样配置:

    
    <yandex>
      <clickhouse_remote_servers>
        <gmall_cluster>
          
          <shard>
            
            <internal_replication>trueinternal_replication>
            <replica>
              
              <host>hadoop101host>
              <port>9000port>
            replica>
          shard>
          <shard>
            
            <internal_replication>trueinternal_replication>
            <replica>
              
              <host>hadoop102host>
              <port>9000port>
            replica>
          shard>
          <shard>
            
            <internal_replication>trueinternal_replication>
            <replica>
              
              <host>hadoop103host>
              <port>9000port>
            replica>
          shard>
        gmall_cluster>
      clickhouse_remote_servers>
      <zookeeper-servers>
        <node index="1">
          <host>hadoop101host>
          <port>2181port>
        node>
        <node index="2">
          <host>hadoop102host>
          <port>2181port>
        node>
        <node index="3">
          <host>hadoop103host>
          <port>2181port>
        node>
      zookeeper-servers>
      <macros>
        <shard>01shard>
        
        <replica>rep_01replica>
        
      macros>
    yandex>
    

    🔔重要: 在每个节点要配置不同的

    分片副本表测试

    1、在个节点上执行建库、建表语句

    ReplicatedMergeTree 创建的本地表元数据不会同步到副本节点和集群中的其他节点;

    # 创建测试库
    create database dd;
    
    # 创建测试副本表
    create table dd.mm on cluster gmall_cluster  (
        id UInt32,
        sku_id String,
        total_amount Decimal(16,2),
        create_time  Datetime
     ) engine =ReplicatedMergeTree('/clickhouse/tables/dd/{shard}/mm1','{replica}') 
     partition by toYYYYMMDD(create_time)
     primary key (id)
     order by (id,sku_id);
    

    1、这种方式不需要每台节点都执行命令,在集群中一个节点执行就可以
    2、但是刚建完show tables 看不到,但是select可以查询到数据,system.replicas表也有记录

    2、查询系统元数据
    select total_replicas,table,engine,database,is_leader,zookeeper_path,replica_name,replica_path 
    from system.replicas;
    
    3、插入数据
    insert into dd.mm  values
    (101,'sku_001',1000.00,'2020-06-02 12:00:01') ,
    (102,'sku_002',2000.00,'2020-06-02 12:00:01') ,
    (103,'sku_004',2500.00,'2020-06-02 12:00:01') ,
    (104,'sku_002',2000.00,'2020-06-01 12:00:00') ,
    (105,'sku_003',600.00 ,'2020-06-02 12:00:00');
    

    常用命令

    1. 集群命令

    systemctl start clickhouse-server
    systemctl status clickhouse-server
    systemctl stop clickhouse-server
    
    

    2. 常用SQL

    # 手动合并数据块
    OPTIMIZE TABLE dd.ttl2 FINAL;
    
    # 删除表
    drop table dd.ttl2;
    
    # 删除表
    drop table dd.ttl2 on cluster;
    
    # 查看表描述
    desc dd.ttl2
    
    # 查看建表语句
    show create table dd.mm1;
    
  • 相关阅读:
    测试.net开源敏感词检测库ToolGood.Words
    asp家电维修管理系统设计
    什么是内存泄漏,为什么threadlocal会造成内存泄漏?
    无锡布里渊——厘米级分布式光纤-锅炉安全监测解决方案
    全球公链进展| Metis 将成为完全去中心化的 L 2 网络;Circle在NEAR和Noble上推出原生 USDC
    论文作图之高压缩比导出PDF
    BUUCTF 被偷走的文件 1
    通过jsonobject.tostring 传字符串为有空格问题
    专攻yolo目标检测但是创新点缺乏的同学看过来
    02矩阵01 —— 基本矩阵 : 对角矩阵、方幂、数量矩阵、转置矩阵、对称矩阵、逆矩阵、奇异矩阵、三角矩阵
  • 原文地址:https://blog.csdn.net/wjw465150/article/details/127036860