使用JanusGraph部署Hadoop-Gremlin启动报错求助
问题解决方案
JanusGraph 0.6.3 「java.io.IOException: No FileSystem for scheme: wasbs」错误修复
- 问题本质:JanusGraph 0.6.3默认依赖的Hadoop版本低于3.1.1,未内置Azure WASB文件系统的驱动包,导致无法识别wasbs协议。
- 操作步骤:
- 找到HDInsight集群中Hadoop客户端的lib目录(通常为
/usr/hdp/current/hadoop-client/lib/),提取其中带azure标识的jar包,包括hadoop-azure-3.1.1.*.jar、azure-storage-*.jar。 - 将这些jar包复制到JanusGraph安装目录的
lib/文件夹下。 - 启动gremlin.sh前确认环境变量配置:
export HADOOP_CONF_DIR=/etc/hadoop/conf export CLASSPATH=$CLASSPATH:/usr/hdp/current/hadoop-client/lib/* ./gremlin.sh
- 找到HDInsight集群中Hadoop客户端的lib目录(通常为
JanusGraph 1.0.0-rc2 「java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.azure.NativeAzureFileSystem$Secure not found」错误修复
- 问题本质:Hadoop 3.1.1中
NativeAzureFileSystem$Secure内部类已被重构,JanusGraph 1.0.0-rc2的依赖适配未同步,且缺少Azure存储驱动包。 - 操作步骤:
- 从HDInsight的
/usr/hdp/current/hadoop-client/lib/复制hadoop-azure-3.1.1.*.jar、azure-core-*.jar、azure-storage-blob-*.jar到JanusGraph的lib/目录。 - 修改gremlin.sh脚本,强制加载Hadoop配置与依赖:
export HADOOP_CONF_DIR=/etc/hadoop/conf export CLASSPATH=$HADOOP_CONF_DIR:$CLASSPATH:/usr/hdp/current/hadoop-client/lib/* - 检查
core-site.xml(位于$HADOOP_CONF_DIR下)的文件系统配置,若存在错误指向NativeAzureFileSystem$Secure的项,修正为:fs.wasbs.impl org.apache.hadoop.fs.azure.NativeAzureFileSystem fs.AbstractFileSystem.wasbs.impl org.apache.hadoop.fs.azure.Wasbs - 重启gremlin.sh完成测试。
- 从HDInsight的
通用注意事项
- 复制jar包时必须保证版本与HDInsight的Hadoop 3.1.1完全一致,避免版本冲突。
- 仅添加缺失的Azure驱动包,不要替换JanusGraph原有Hadoop相关jar包,防止破坏默认依赖链。
- 启动前通过
echo $HADOOP_CONF_DIR和echo $CLASSPATH确认环境变量配置正确。
内容的提问来源于stack exchange,提问作者Paritosh Gote
相关产品推荐
相关产品推荐

