我已经使用distributedcache.addfiletoclasspath(path file,conf)方法向分布式缓存添加了一组jar,以使依赖关系可用于集群中的map reduce作业。现在,我想从缓存中删除所有这些jar以开始清理,并确保在那里有正确的jar版本。我注解掉了将文件添加到缓存中的代码,并将它们从hdfs中复制的位置删除。问题是jar看起来仍然在类路径中,因为map reduce作业没有抛出classnotfound异常。有没有办法在不重新启动任何服务的情况下刷新此缓存?
编辑:随后我刷新了以下文件夹:/var/lib/hadoop hdfs/cache/mapred/mapred/local/tasktracker/distcache/。但这并没有解决问题。这份工作仍然能找到推荐人。
1条答案
按热度按时间qpgpyjmq1#
我现在明白我的问题是什么了。我之前已经将jar复制到/usr/lib/hadoop/lib/文件夹中。这使他们永久地可以使用Map减少工作。从那里删除它们之后,作业抛出了预期的classnotfoundexception。另外,我注意到如果我不使用addfiletoclasspath添加jar,它们就不能用于作业。因此,不需要刷新分布式缓存或删除addfiletoclasspath中添加的内容,因为您在其中放置的内容仅对指定作业示例可见。