idea运行main找不到类_Alluxio使用贴士:客户端显示找不到FileSystem类问题分析与解决...

907271f5a37b8ac43635d4a39663fc39.png

我们发现时常在用户邮件列表上会出现一个有关作业失败的问题,这个失败伴随着错误消息“java.lang.ClassNotFoundException:Class alluxio.hadoop.FileSystemnot found”。这篇博客分析解释了这种失败的原因以及发生该问题时的解决方案。

常用链接

  • Alluxio项目官网
  • Alluxio Inc网站
  • Alluxio在各大厂用例
  • 关注Alluxio微信公众号

为什么会发生这个错误?

这个错误说明Alluxio客户端在运行时不可用。当作业尝试访问Alluxio文件系统但没能找到Alluxio客户端的实现以连接到对应的服务时,就会导致异常。

Alluxio客户端是一个Java包,它定义了alluxio.hadoop.FileSystem类,以便根据用户请求调用Alluxio服务(例如,创建文件、列出目录内容等)。它通常被预编译成一个名为alluxio-1.8.1-client.jar(对于v1.8.1而言)的jar文件,并与Alluxio压缩包一起发布。为了能够与应用程序协作,Alluxio客户端jar文件应该位于JVM的classpath中。如果应用程序无法在classpath中找到这个文件,它就不知道类alluxio.hadoop.FileSystem的实现,因此会抛出异常。

如何解决这个问题?

该问题的解决方案就是确保Alluxio客户端jar在应用程序的classpath中。在故障排除时有几个因素应当考虑。

如果应用程序分布在多个节点上,那么应该将这个jar分发给其中每一个节点。根据计算框架的不同,具体的配置方法可能有很大差异:

  • 对于MapReduce或YARN应用程序,可以将Alluxio客户端jar的路径加到mapreduce.application.classpath或yarn.application.classpath以确保每个任务都能找到它。除此之外,你也可以将这个路径作为-libjars的参数,如下所示:
 $ bin/hadoop jar 
 libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount 
 -libjars /<PATH_TO_ALLUXIO>/client/alluxio-1.8.1-client.jar 
  <INPUT FILES> <OUTPUT DIRECTORY>

取决于Hadoop的发行版,设置$HADOOP_CLASSPATH也可能有用:

 export HADOOP_CLASSPATH=/<PATH_TO_ALLUXIO>/client/alluxio-1.8.1-client.jar:${HADOOP_CLASSPATH}
  • 对于Spark应用程序,在每个Spark运行节点上的spark/conf/spark-defaults.conf文件中添加如下设置,并重启长期运行的Spark服务器进程:
spark.driver.extraClassPath  /<PATH_TO_ALLUXIO>/client/alluxio-1.8.1-client.jar
spark.executor.extraClassPath  /<PATH_TO_ALLUXIO>/client/alluxio-1.8.1-client.jar
  • 对于Hive,在conf/hive-env.sh文件中设置环境变量HIVE_AUX_JARS_PATH:
 export HIVE_AUX_JARS_PATH=/<PATH_TO_ALLUXIO>/client/alluxio-1.8.1-client.jar:${HIVE_AUX_JARS_PATH}

在某些情况下,一个计算引擎依赖于另一个计算引擎。例如,Hive服务可以使用MapReduce作为分布式查询的引擎。在这种情况下,必须为Hive和MapReduce两者分别都设置classpath才能正确配置。

总结

  • 对于使用Alluxio的应用程序,它们必须将Alluxio客户端jar文件加入其classpath中。
  • 如何将Alluxio客户端jar文件配置到classpath可以根据计算框架的具体情况进行具体分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值