动态目录

    为了动态修改目录,openLooKeng引入了动态目录的特性。开启此特性需要在etc/config.properties中配置:

    然后在hdfs-config-catalog.propertieslocal-config-catalog.properties中配置用于存储动态目录信息的文件系统。查看文件系统文档以获取更多信息。

    目录操作是通过openLooKeng协调节点上的RESTful API来完成的。HTTP请求具有如下形态(以hive连接节点为例):

    1. request: POST/DELETE/PUT
    2. header: ``X-Presto-User: admin``
    3. form: 'catalogInformation={
    4. "catalogName" : "hive",
    5. "connectorName" : "hive-hadoop2",
    6. "properties" : {
    7. "hive.hdfs.impersonation.enabled" : "false",
    8. "hive.hdfs.authentication.type" : "KERBEROS",
    9. "hive.metastore.service.principal" : "hive/hadoop.hadoop.com@HADOOP.COM",
    10. "hive.metastore.authentication.type" : "KERBEROS",
    11. "hive.metastore.uri" : "thrift://xx.xx.xx.xx:21088",
    12. "hive.allow-drop-table" : "true",
    13. "hive.config.resources" : "core-site.xml,hdfs-site.xml",
    14. "hive.metastore.krb5.conf.path" : "krb5.conf",
    15. "hive.metastore.client.keytab" : "user.keytab",
    16. "hive.metastore.client.principal" : "test@HADOOP.COM",
    17. "hive.hdfs.wire-encryption.enabled" : "true",
    18. "hive.hdfs.presto.principal" : "test@HADOOP.COM"
    19. }
    20. }',
    21. 'catalogConfigurationFiles=path/to/core-site.xml',
    22. 'catalogConfigurationFiles=path/to/user.keytab',
    23. 'globalConfigurationFiles=path/to/krb5.conf'

    当添加新目录时,会向协调节点发送一个POST请求。协调节点首先重写文件路径属性,将文件保存到本地磁盘,并通过加载新添加的目录来验证操作。如果目录加载成功,协调节点将文件保存到共享文件系统(例如HDFS)。

    与添加操作类似,当需要删除目录时,向协调节点发送DELETE请求。接收请求的协调节点从本地磁盘中删除相关目录概要文件,从服务器卸载目录,并从共享文件系统中删除目录。

    其他协调节点和工作节点定期检查共享文件系统中的目录属性文件。当删除目录时,协调节点和工作节点也会删除本地磁盘上的相关配置文件,然后从内存中卸载目录。

    更新操作是删除和添加操作的组合。首先管理员向协调节点发送PUT请求。协调节点收到请求后在本地删除并添加目录以验证更改。如果操作成功,协调节点从共享文件系统中删除目录,并等待所有其他节点从本地文件系统中删除目录。将新的配置文件保存到共享文件系统中。

    其他协调节点和工作节点定期检查共享文件系统中的目录属性文件,并在本地文件系统上执行相应的更改。

    添加:POST host/v1/catalog

    更新:PUT host/v1/catalog

    删除:DELETE host/v1/catalog/{catalogName}

    etc/config.properties中:

    • 添加目录后,在扫描期间查询可能会失败。
    • 更新目录时,正在进行的查询可能会失败。更新目录后,在扫描期间查询可能会失败。