我正在使用hadoop来写入我抓取的数据。
我有一个从多个线程调用的 spring 服务,用于将一些内容写入 HDFS。
@Service
public class WriteService
{
public void write(String path, String content)
{
FileSystem fs = FileSystem.get(conf);
}
}
我不确定文件系统对象是否可以是 WriteService 的成员,并且我找不到它是否线程安全。我正在使用分布式文件系统对象。
您知道它是否是线程安全的,我可以将其用作我服务的成员吗?
谢谢
Hadoop DFS使用所谓的WORM模型。这使得它在并发问题方面更加健壮。
但是,要回答这个问题,一般来说是不安全的。您仍然需要考虑并发控制要求。
如果先修改config.setBoolean("fs.hdfs.impl.disable. cache", true);
,则可以在多个线程中使用FileSystem.get(config)
。