一、Hape工具介绍
Hape是Havenask PE的简称,可用于管理Havenask集群。
如下图所示:
一个Havenask集群可以分为三部分。
- 首先,它包含一个消息队列Swift集群;其次,它包含一个Havenask在线查询集群;最后,它还包含一个全量表索引构建的buildservice集群。每个集群都有各自的admin,当用户用Hape向这些集群admin发送命令时,它们就会基于Hippo调度器,在用户给定的IP列表机器上拉起对应的worker。这样,我们就成功创建了一个Havenask集群。
- 然后,我们可以用hape表命令在这个Havenask集群中新增或者删除表,这些表可以同数据库中的表一样,用SQL语句进行读写。更多Hape工具的介绍,可以在Havenask官网或者Github主页的Hape介绍文档中查询。
参考链接:https://havenask.net/#/doc/sql/petool/intro
二、创建单机版Havenask
这部分,学习实际部署一个单机版Havenask集群。部署一个单机版Havenask集群主要分为四个步骤,首先,准备Hape环境;然后,创建Havenask集群;接着,在集群上新增表;最后,对这张表进行SQL语句的读写。接下来,参考Havenask官网或者Github主页的单机版Havenask部署文档,逐步进行操作。
参考链接:https://havenask.net/#/doc/sql/petool/localmode
1、准备环境
拉取最新的Havenask镜像,同时,应确保本机能够免密登录,必要时可编写相应的命令。然后,将拉取的镜像命名,如hape_runtime。这样,容器就创建成功了,进入容器。在进入容器时,存在一个可选步骤,即使用Hape validate命令检验环境是否异常。在直接执行时,会进行基础校验。
2、创建集群
使用style命令拉起集群,在这个过程中,被拉起的不仅时Havenask,还有Swift跟BS。此时,就初步拉起了一个Havenask集群。
3、创建表
在创建的集群中添加表,本次分享仅介绍直写表。我们可以拷贝相应的命令建立一张直写表,这个直写表会先建立Swift对应的topic,然后再把表的目标下发到Havenask集群上。这样就成功创建了新表,
执行GS子命令即可看到该集群上的各个进程以及集群最终的状态。此外,还可以用GS table查看该表的结构,可以看到这是一张分片为1的表,它的主键是ID,包含hits crate time title subject等字段,其中title subject是一个文本字段。
4、读写数据
接下来,在表中写入数据,可以直接拷贝案例中的命令插入数据,这条数据的ID为4。然后,即可查询到这条成功插入的数据。在这个过程中可以发现,title和subject两个文本字段的值是null,要看text类型的字段,还需要拷贝对应的语句。这是因为,如果想要查看text类型的字段,需要查询摘要索引,摘要索引的具体含义可点击以上链接查看。如果想要弃用该集群,可以单独清理Havenask以及Swift,也可以直接用delete all情况所有相关的内容。
5、案例
- 首先是关于normal的案例。它会搭建一个普通的集群,进行一些SQL读写。
- 然后是关于Custom_analyzer的案例,其与normal的区别主要是分词器不同,它使用了jieba分词器,还包含一些文本UDF,可以在查询时候展示出文本相关性。最后是关于Vector的案例,它包含向量索引,且在查询时,会用UDF返回向量的得分。
- 详细的操作方法,链接中提供了相应的脚本,只要传入案例的名称,即可自动搭建集群,并进行内置的读写。在案例运行结束后,集群不会删除,可以对这些集群进行进一步的交互,也可进行进一步的SQL读写。
三、Hape问题排查
关于Hape的问题排查,一般包括三类信息。第一类是使用Hape工具来打开debug信息定位问题;第二类是排查进程创建过程中出现的错误;第三类是排查表创建过程中出现的错误。具体操作可以参考Havenask官网或Github主页上的常见问题与排查文档。
参考链接:https://havenask.net/#/doc/sql/petool/problem
1、开启debug信息
Hape包含两种debug办法。首先,可以使用Hape validate检查集群是否存在基础性的错误。其次,假设集群存在联通性问题,或权限问题,该命令就会报错误。无论使用哪种Hape命令,都可以前置加-v选项,即可看到集群创建过程中的某个错误命令,并实现错误命令的定位。
2、排查集群进程创建错误
在hape start havenask命令前加-v选项,即可查询其进程,如发现该命令是执行了Docker指令,若其发生ERROR,复制错误命令,手动执行,检查其是否报错。
Hape start命令如果在启动过程中存在问题,原因可能有二。其一,创建容器有误,一般使用-v就即可发现error。其二,如果最终日志显示admin不ready,则说明可能是其进程启动异常,而非容器异常,此时可以使用hape gs子命令判断该admin位于哪台机器,然后查看该日志最新的ERROR。假设hape start命令最后返回Swift admin未ready,则可以执行hape gs swift命令,可以看到admin在本机,然后查看该引擎的日志。
Havenask集群工作目录一般都在home下,可以看到该Havenask某某local,即默认情况下的集群名称。假设Swift admin有问题,因此。进入该工作目录,查看Swift的日志,如果其中有较明显的error,即可定位到问题。
3、排查表错误
该类问题的排查可以使用Hape gs命令,因为,可能是QRS发生错误。假设,执行gs Havenask,如果QRS是正常的,然后database,即searcher存在问题,则可找到对应的机器,演示中在本机,查看日志检查是否有明显的error信息。
此外,该文档还提供了一些常见问题的配置方法,也可用于参考。以上是本次分享的全部内容。
四、总结
具体Havenask单机模式的演示视频可以通过链接查看,欢迎各位开发者使用。
视频链接:https://developer.aliyun.com/live/253655?spm=a2c6h.13262185.profile.12.563bee42LdD7By
关注我们:
Havenask 开源官网:https://havenask.net/
Havenask-Github 开源项目地址:https://github.com/alibaba/havenask
阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch
钉钉扫码加入 Havenask 开源官方技术交流群: