!1068 Add documentation explaining Hetu Metastore and State Store setup with Memory Connector

Merge pull request !1068 from arjunkrishna/global-cache-docs
This commit is contained in:
i-robot 2021-08-19 18:08:41 +00:00 committed by Gitee
commit f2ef01ffe0
2 changed files with 121 additions and 15 deletions

View File

@ -16,7 +16,66 @@ For example, you can write:
connector.name=memory
memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
```
#### Other Required Configurations
- This section will cover other configurations required to use Memory Connector.
- Refer to the documentation of [Hetu Metastore](../admin/meta-store.md) and [State Store](../admin/state-store.md) for more information.
##### Single Node Setup
- This section will give an example configuration for Memory Connector on a single node cluster.
- Create a file `etc/catalog/memory.properties` with the following information:
``` properties
connector.name=memory
memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
- Create the file `etc/hetu-metastore.properties` with these configurations:
```properties
hetu.metastore.type=hetufilesystem
hetu.metastore.hetufilesystem.profile-name=default
hetu.metastore.hetufilesystem.path=/tmp/hetu/metastore
hetu.metastore.cache.type=local
```
##### Multi-Node Setup
- This section will give an example configuration for Memory Connector an a cluster with more than one node.
- Create a file `etc/catalog/memory.properties` with the following information:
``` properties
connector.name=memory
memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
- Add this line in `etc/config.properties` to enable State Store:
- State Store allows Memory Connector to automatically clean up dropped tables, otherwise tables will only be cleaned up when another table is created.
```properties
hetu.embedded-state-store.enabled=true
```
- Create a file called `etc/state-store.properties` with the following contents:
```properties
state-store.type=hazelcast
state-store.name=test
state-store.cluster=test-cluster
hazelcast.discovery.mode=tcp-ip
hazelcast.discovery.port=7980
# The ip address and hazelcast discovery ports of each server should be included here
# formatted like `hazelcast.discovery.tcp-ip.seeds=host1:port,host2:port`
hazelcast.discovery.tcp-ip.seeds=host1:7980, host2:7980
```
- Create the file `etc/hetu-metastore.properties` with these configurations:
```properties
hetu.metastore.type=hetufilesystem
hetu.metastore.hetufilesystem.profile-name=hdfs
hetu.metastore.hetufilesystem.path=/tmp/hetu/metastore
# make sure to use global cache!
hetu.metastore.cache.type=global
```
- Create the file `etc/filesystem/hdfs.properties` to direct openLooKeng to your hdfs file system:
```properties
fs.client.type=hdfs
# Path to hdfs resource files (e.g. core-site.xml, hdfs-site.xml)
hdfs.config.resources=/tmp/hetu/hdfs-site.xml
# hdfs authentication, accepted values: KERBEROS/NONE
hdfs.authentication.type=NONE
```
**Note:**
- `spill-path` should be set to a directory with enough free space to hold
@ -26,12 +85,6 @@ memory.spill-path=/opt/hetu/data/spill
- In `etc/config.properties` ensure that `task.writer-count` is set to
`>=` number of nodes in the cluster running openLooKeng. This will help
distribute the data uniformly between all the workers.
- Hetu Metastore must be configured. The default settings are included in
`etc/hetu-metastore.properties`.
- Check [Hetu Metastore](../admin/meta-store.md) for more information.
- State Store must be configured to enable automatic memory refresh on workers.
- Check [State Store](../admin/state-store.md) for more information
- Automatic memory refresh will allow Memory Connector to clean unused tables more often resulting in more efficient use of memory.
Examples
--------
@ -158,7 +211,6 @@ For queries containing > >= < <= BETWEEN IN similar logic is applied.
Limitations and known Issues
---------------------------------------------
- After `DROP TABLE`, memory is not released immediately. It is released on next `CREATE TABLE` operation.
- A simple workaround is to create a small temporary table to trigger a cleanup `CREATE TABLE memory.default.tmp AS SELECT * FROM tpch.tiny.nation;`
- Without State Store and Hetu Metastore with global cache, after `DROP TABLE`, memory is not released immediately on the workers. It is released on the next `CREATE TABLE` operation.
- Currently only a single column in ascending order is supported by `sorted_by`
- If a CTAS (CREATE TABLE AS) query fails or is cancelled, an invalid table will remain. This table must be dropped manually.

View File

@ -16,14 +16,69 @@ memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
#### 其他必要的配置
- 本节将介绍使用内存连接器所需的其他配置。
- 更多信息请参考[Hetu Metastore](../admin/meta-store.md)和[State Store](../admin/state-store.md)的文档。
##### 单个节点设置
- 本节将给出单节点集群上内存连接器的示例配置。
- 创建文件 `etc/catalog/memory.properties`并填入以下配置:
``` properties
connector.name=memory
memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
- 创建文件 `etc/hetu-metastore.properties` 并填入以下配置:
```properties
hetu.metastore.type=hetufilesystem
hetu.metastore.hetufilesystem.profile-name=default
hetu.metastore.hetufilesystem.path=/tmp/hetu/metastore
hetu.metastore.cache.type=local
```
##### 多节点设置
- 本节将为具有多个节点的集群提供内存连接器的示例配置。
- 创建文件 `etc/catalog/memory.properties` 并填入以下配置:
``` properties
connector.name=memory
memory.max-data-per-node=200GB
memory.spill-path=/opt/hetu/data/spill
```
- 在 `etc/config.properties` 文件中加入以下代码来启用 State Store:
- State Store 允许 Memory Connector 自动清理删除的表,否则只有在创建另一个表时才会清理表。
```properties
hetu.embedded-state-store.enabled=true
```
- 创建文件 `etc/state-store.properties` 并填入以下配置:
```properties
state-store.type=hazelcast
state-store.name=test
state-store.cluster=test-cluster
hazelcast.discovery.mode=tcp-ip
hazelcast.discovery.port=7980
# 每个服务器的ip地址和hazelcast端口应该被声明在这里。
# 格式:`hazelcast.discovery.tcp-ip.seeds=host1:port,host2:port`
hazelcast.discovery.tcp-ip.seeds=host1:7980, host2:7980
```
- 创建文件 `etc/hetu-metastore.properties` 并填入以下配置:
```properties
hetu.metastore.type=hetufilesystem
hetu.metastore.hetufilesystem.profile-name=hdfs
hetu.metastore.hetufilesystem.path=/tmp/hetu/metastore
# 确认使用全局缓存!
hetu.metastore.cache.type=global
```
- 创建文件 `etc/filesystem/hdfs.properties` 使openLooKeng使用相应的文件系统:
```properties
fs.client.type=hdfs
# Path to hdfs resource files (e.g. core-site.xml, hdfs-site.xml)
hdfs.config.resources=/tmp/hetu/hdfs-site.xml
# hdfs authentication, accepted values: KERBEROS/NONE
hdfs.authentication.type=NONE
```
**提示:**
- `spill-path`必须设置为一个有充足存储空间的路径。推荐使用SSD以获得更好性能。 可以依照需求自定义。
- 关于更多详细信息与其他可选配置项,请参见**配置属性** 章节。
- 在`etc/config.properties`中,请确保`task.writer-count`的数字不小于配置的openLooKeng集群的节点个数。这会帮助把所有数据更均匀地分配到各个节点上。
- Hetu Metastore必须被妥善配置来保证内存连接器的正常功能。请参阅[Hetu Metastore](../admin/meta-store.md)。
- 必须配置StateStore使得worker上的表自动刷新生效
- 请参阅[State Store](../admin/state-store.md)
- 自动刷新特性使得worker节点定期从metastore获取最新的表的列表并在本地清理已经删除的表
## 示例
使用内存连接器创建表:
@ -142,8 +197,7 @@ LogicalPart 中创建了布隆过滤器、稀疏索引和 MinMax 索引。
## 内存连接器限制和已知问题
- `DROP TABLE`之后worker上的内存没有立即释放。内存在下一次对内存连接器进行创建操作后释放。
- 可以通过创建一个临时的表来在worker上强制清理如`CREATE TABLE memory.default.tmp AS SELECT * FROM tpch.tiny.nation;`
- 如果没有 State Store 和带有全局缓存的 Hetu Metastore`DROP TABLE` 之后,内存不会立即释放到 worker 上。它将在下一个“CREATE TABLE”操作时被释放。
- 当前`sorted_by`只支持按一个列排序。
- 如果一个CTAS (CREATE TABLE AS)查询失败或被取消,一个无效的表的记录会留在系统中。该表将需要被手动删除。