编辑 /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的server配置文件,默认路径在/etc/clickhouse-server/config.xml
及user.xml
,
config.xml
是clickhouse的系统配置,包括日志,服务部署ip,zk等配置
user.xml
是当前节点服务的配置,包括用户名密码,内存大小限制等
修改 users.xml
文件
在
里加上密码
把
下的
的注释给取消掉
修改 config.xml
文件
在
里改成 0.0.0.0
在
里改成 warning
提示: 一般是IPV4,如果IPV6改成 ::
# 动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-client –host 192.168.152.128 –port 9000 –database default –user default –password ""
ClickHouse集群是一个同质集群。 设置步骤:
分布式表实际上是一种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>
重要: 在每个节点要配置不同的
和
值
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
表也有记录
select total_replicas,table,engine,database,is_leader,zookeeper_path,replica_name,replica_path
from system.replicas;
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');
systemctl start clickhouse-server
systemctl status clickhouse-server
systemctl stop clickhouse-server
# 手动合并数据块
OPTIMIZE TABLE dd.ttl2 FINAL;
# 删除表
drop table dd.ttl2;
# 删除表
drop table dd.ttl2 on cluster;
# 查看表描述
desc dd.ttl2
# 查看建表语句
show create table dd.mm1;