本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:战斗民族开源神器ClickHouse:一款适合于构建量化(5)

时间:2017-07-28 19:12来源:香港现场开奖 作者:118开奖 点击:
你可以在集群的所有机器上创建分布式表。这将允许在任何机器上运行分布式查询。除了分布式表外,还可以使用 “remote”表函数 。 我们来运行 INSERT

你可以在集群的所有机器上创建分布式表。这将允许在任何机器上运行分布式查询。除了分布式表外,还可以使用“remote”表函数

我们来运行INSERT SELECT语句,往分布式表中插入数据,将表扩展到多个服务器。

INSERTINTOontime_all SELECT* FROMontime;

值得注意的是,上面介绍的方法不适合那些大表分片。请使用内置的分片特性

如你所料,重量级查询在3台服务器上的执行速度比在1台机器上快N倍:

码报:战斗民族开源神器ClickHouse:一款适合于构建量化

这个例子中我们使用了包含3个分片的集群,每个分片包含了一个副本。

在生产环境中为了提供数据恢复能力,我们建议每个分片最好有2-3个副本分布到多个数据中心之间。Clickhouse支持无限数量的副本。

下面是一个分片包含三个副本的集群配置:

<remote_servers>... <perftest_1shards_3replicas><shard><replica><host>example-perftest01j.yandex.ru </host><port>9000 </port></replica><replica><host>example-perftest02j.yandex.ru </host><port>9000 </port></replica><replica><host>example-perftest03j.yandex.ru </host><port>9000 </port></replica></shard></perftest_1shards_3replicas>

</remote_servers>

要实现数据复制,ZooKeeper必不可少。Clickhouse会照顾到所有副本数据的一致性,在运行故障发生后能自动恢复程序。建议吧ZooKeeper集群部署到独立的服务器上。

简单起见,你可能自己写程序代将数据写到所有副本中来完成数据复制,那么这就不需要ZooKeeper了。这种做法我们不推荐,因为这种情况下Clickhouse不能保证所有副本的数据一致性。看你啰!搞砸了我不负责!

在配置文件中设置ZooKeeper的位置:

<zookeeper-servers><node><host>zoo01.yandex.ru </host><port>2181 </port></node><node><host>zoo02.yandex.ru </host><port>2181 </port></node><node><host>zoo03.yandex.ru </host><port>2181 </port></node>

</zookeeper-servers>

我们还需要设置确定分片和副本的宏,这在创建表的时候会用到。

<macros><shard>01 </shard><replica>01 </replica>

</macros>

如果复制表在创建的时候没有副本,首个新的副本将会被实例化。如果已经有过副本,新的副本将从已存在的副本中克隆。你可以先创建所有复制表,再向其中插入数据;也可以创建若干副本,再在数据插入期间或之后加入其它副本。

CREATETABLEontime_replica (...)

ENGINE= ReplicatedMergeTree(

'/clickhouse_perftest/tables/{shard}/ontime',

'{replica}',FlightDate, (Year, FlightDate),

8192);

这里我们使用的是ReplicatedMergeTree表类型。在参数中我们指定Zookeeper的路径,其中包含了分片和副本标示符。

INSERTINTOontime_replica SELECT* FROMontime;

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容