M1 Mac运行AsterixDB加载数据集报HYR0010节点不存在错误问询
M1芯片Mac搭建AsterixDB集群加载CSV文件报错排查
问题现状
在搭载M1芯片的Mac设备上搭建AsterixDB示例集群,集群可正常启动,以下SQL语句可成功执行:
drop dataverse csv if exists; create dataverse csv; use csv; create type csv_type as { lat: int32, long: int32 }; create dataset csv_set (csv_type) primary key lat;
执行CSV加载操作时集群抛出异常,错误信息如下:
Error Code: 1 "HYR0010: Node asterix_nc2 does not exist"
触发报错的加载语句:
use csv; load dataset csv_set using localfs (("path"="127.0.0.1:///Users/nicholassantini/Downloads/test.csv"), ("format"="delimited-text"));
目前已尝试切换Java 18最新版、Java 17.0.3运行环境,调整多个查询端口,问题仍未解决。运行日志提示节点连接失败,暂无法判定故障来自端口配置还是节点本身。待加载CSV为简单2列2行文件,所有字段值均为个位数整数。
排查解决思路
- 先校验集群实际存活节点:集群启动后执行
select * from Metadata.Node;查询元数据,确认返回结果中是否存在asterix_nc2节点。如果不存在,说明该NC(Node Controller)进程根本没启动成功,M1架构下如果使用x86架构的AsterixDB二进制包,Rosetta转译兼容问题很容易导致部分NC进程启动失败,优先更换aarch64适配版本的安装包,或者直接修改集群配置为单NC模式,删除多余的asterix_nc2配置项,避免调度不存在的节点。 - 修正本地文件路径写法:使用localfs加载本地文件时,不需要写
127.0.0.1://前缀,错误的URI格式会让AsterixDB的CC(Cluster Controller)误以为要从远端节点拉取文件,触发跨节点调度逻辑去找不存在的NC。可先将路径修改为("path"="localhost:///Users/nicholassantini/Downloads/test.csv")重试,部分版本直接写绝对路径也可正常识别。 - 检查文件权限:确认启动AsterixDB的用户对目标路径下的test.csv有读权限,权限校验失败时部分版本会抛出节点不存在的误导性报错,可先将CSV文件移动到AsterixDB安装目录下的非权限受限路径再尝试加载。
- 验证配置一致性:检查
conf目录下的集群配置文件,确认配置中声明的NC节点数量、IP、端口和实际启动的NC进程一一对应,默认示例集群如果是多节点配置,本地调试时经常出现端口被占用导致部分NC启动失败、配置和实际运行节点不匹配的问题。
内容的提问来源于stack exchange,提问作者Nick S
相关产品推荐
相关产品推荐

