簡體   English   中英

Hadoop 2.x中的DistributedCache

[英]DistributedCache in Hadoop 2.x

我在Hadoop 2.x的新API的DistributedCache中遇到問題,我發現有人在解決此問題,但是它不能解決我的問題示例

此解決方案不適用於我,因為在嘗試檢索DistributedCache中的數據時收到NullPointerException

我的配置如下:

司機

    public int run(String[] arg) throws Exception {
        Configuration conf = this.getConf();
        Job job= new Job(conf,"job Name");
        ...
        job.addCacheFile(new URI(arg[1]);

設定

    protected void setup(Context context)
            throws IOException, InterruptedException {
        Configuration conf = context.getConfiguration();
        URI[] cacheFiles = context.getCacheFiles();
        BufferedReader dtardr = new BufferedReader(new FileReader(cacheFiles[0].toString()));

在這里,當它開始創建緩沖的讀取器時,它將引發NullPointerException,這是因為context.getCacheFiles();導致的 始終返回NULL。 如何解決此問題,以及將緩存文件存儲在哪里(HDFS或本地文件系統)

如果在Hadoop中使用本地JobRunner(非分布式模式,作為單個Java進程),則不會創建本地數據目錄;否則,將創建本地數據目錄。 getLocalCacheFiles()或getCacheFiles()調用將返回空結果集。您可以確保以分布式或偽分布式模式運行作業。

Hadoop框架工作會將在分布式緩存中設置的文件復制到作業中每個任務的本地工作目錄。 所有高速緩存文件的副本都放置在每台工作計算機的本地文件系統中。 (它們將位於mapred.local.dir的子目錄中。)

您能否參考此鏈接以了解有關DistributedCache的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM