cassandra 由于ParserException,设置memtable属性返回ConfigurationException,“Invalid yaml”

pobjuy32  于 2023-06-22  发布在  Cassandra
关注(0)|答案(2)|浏览(154)

如何在Cassandra 4.1.2中更新memtable大小?
cassandra.yaml中,我更新了memtable_heap_space: 5000memtable_offheap_space: 5000的值,并重新启动了cassandra服务。重启时出现异常。Exception Image

cunj1qz1

cunj1qz11#

您在图像中发布的错误表明YAML文件格式不正确。由于memtable_heap_spacememtable_offheap_space在默认情况下被注解掉了,所以(在我看来)在这些属性之前可能会有一个额外的空间。这对YAML格式无效。
在下面的例子中,您可以看到memtable_heap_space的格式正确,而memtable_offheap_space的格式不正确。

# Min unit: MiB
memtable_heap_space: 2048MiB
# Min unit: MiB
 memtable_offheap_space: 2048MiB

还要注意的是,这些属性在MiB中。如果期望的结果是增加GIB中的memtable使用率,那么您需要确保它们是1024的倍数而不是1000:

5000 MiB = 4.883 GiB
5120 MiB = 5.0 GiB
gk7wooem

gk7wooem2#

YAML是通常用于配置文件的数据序列化语言。与Python类似,缩进很重要,因为它用于确定数据的结构,嵌套的数据表示层次结构。
如果您错误地嵌套(缩进)了缺少空格或多余空格的行,则会使YAML无效,YAML解析器将无法正确读取它。
在您的例子中,异常显示解析器在cassandra.yaml的第616行失败,因为它期望嵌套块结束,但由于该行开头的额外空格而得到了一个块“start”:

...
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
 ...
expected <block end>, but found '<block mapping start>'
 in 'reader', line 616, column 2:
     memtable_heap_space: 5000
     ^
 ...

如果删除行首的空格(``),应该可以解决问题。
您应该始终检查cassandra.yaml中的条目格式是否正确,否则Cassandra将无法启动。干杯!

相关问题