持久化配置存储

Drill 持久化存储配置数据在一个 PStore 上。该数据编码成 JSON 或 Protobuf 格式。Drill 可以使用本地文件系统或分布式文件系统,例如 HDFS,去存储该数据。数据被存储在 PStore 中,包含的状态信息有存储插件,查询记录,和系统修改设置。默认的 PStore 类型,依赖 Drill 的安装模式。

下表提供了在每个 Drill 模型下的持久化存储模式:

模式 描述
嵌入式 Drill 持久化存储在本地文件系统。你不能在嵌入式模式中修改 PStore 的位置。
分布式 Drill 持久化存储数据默认在 ZooKeeper。你可以修改 ZooKeeper 所处的数据,或你可以更改持久化数据存储到 HBase。
  1. 注释:切换之间的存储模式不迁移配置数据。

配置 ZooKeeper 的 PStore

Drill 使用 ZooKeeper 去存储持久化配置数据。ZooKeeper PStore 提供所有的持久化配置数据,除了查询记录数据。在 Drill 节点上,ZooKeeper PStore 提供查询记录数据给 Drill 日志目录。

当你运行多个 Drillbit 时,你需要使用 Web 控制台去配置 ZooKeeper PStore。

为什么配置 ZooKeeper PStore

当你运行多个 Drillbit 时,配置指定配置给 ZooKeeper 去卸载查询记录,来替换默认的临时目录。所有的 Drillbit 在集群中不能访问临时目录。因此,当你不配置一个本地的分布式文件系统时,查询发送到 Drillbit 中,在 Web 控制台不会出现完成的部分。所以,你可以点击正在运行的链接来得到更多信息。

如何配置 ZooKeeper PStore

配置 ZooKeeper PStore,在每个节点的 <drill_installation_directory>/conf/drill-override.conf 文件中的 drill.exec 块中,设置 sys.store.provider.zk.blobroot 属性,然后重启 Drillbit 服务。

例如:

  1. drill.exec: {
  2. cluster-id: "my_cluster_com-drillbits",
  3. zk.connect: "<zkhostname>:<port>",
  4. sys.store.provider.zk.blobroot: "hdfs://<directory to store pstore data>/"
  5. }

配置持久化存储插件到 HBase

为了改变 Drill 的持久化存储模式,在 <drill_installation_directory>/conf/drill- override.conf 文件中,增加或修改 sys.store.provider 块。

例如:

  1. sys.store.provider: {
  2. class: "org.apache.drill.exec.store.hbase.config.HBasePStoreProvider",
  3. hbase: {
  4. table : "drill_store",
  5. config: {
  6. "hbase.zookeeper.quorum": "<ip_address>,<ip_address>,<ip_address >,<ip_address>",
  7. "hbase.zookeeper.property.clientPort": "2181"
  8. }
  9. }
  10. },