[原创] Hadoop 2.x的DistributedCache无法工作的问题
转载请注明出处: http://www.codelast.com/ 现象:和 这个 帖子描述的一样,简单说来就是,在Hadoop 2.x上,用新的DistributedCache的API,在mapper中会获取不到这个cache文件。 下面就详细地描述一下新旧API的用法区别以及解决办法。 『1』 旧API 将HDFS文
转载请注明出处:http://www.codelast.com/
现象:和这个帖子描述的一样,简单说来就是,在Hadoop 2.x上,用新的DistributedCache的API,在mapper中会获取不到这个cache文件。
下面就详细地描述一下新旧API的用法区别以及解决办法。
『1』旧API
将HDFS文件添加到distributed cache中:
Configuration conf = job.getConfiguration(); DistributedCache.addCacheFile(new URI(inputFileOnHDFS), conf); // add file to distributed cache
其中,inputFileOnHDFS是一个HDFS文件的路径,也就是你要用作distribute cache的文件的路径,例如 /user/codelast/123.txt
在mapper的setup()方法中:
Configuration conf = context.getConfiguration(); Path[] localCacheFiles = DistributedCache.getLocalCacheFiles(conf); readCacheFile(localCacheFiles[0]);
其中,readCacheFile()是我们自己的读取cache文件的方法,可能是这样做的(仅举个例子):
private static void readCacheFile(Path cacheFilePath) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(cacheFilePath.toUri().getPath())); String line; while ((line = reader.readLine()) != null) { //TODO: your code here } reader.close(); }
文章来源:http://www.codelast.com/
『2』新API
上面的代码中,addCacheFile() 方法和 getLocalCacheFiles() 都已经被Hadoop 2.x标记为 @Deprecated 了。
因此,有一套新的API来实现同样的功能,这个链接里有示例,我在这里再详细地写一下。
将HDFS文件添加到distributed cache中:
job.addCacheFile(new Path(inputFileOnHDFS).toUri());
在mapper的setup()方法中:
Configuration conf = context.getConfiguration(); URI[] localCacheFiles = context.getCacheFiles(); readCacheFile(localCacheFiles[0]);
其中,readCacheFile()是我们自己的读取cache文件的方法,可能是这样做的(仅举个例子):
private static void readCacheFile(URI cacheFileURI) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(cacheFileURI.getPath())); String line; while ((line = reader.readLine()) != null) { //TODO: your code here } reader.close(); }
但是就像文章开头的那个链接里所描述的问题一样,你可能会发现 context.getCacheFiles() 总是返回null,也就是你无法读到cache文件。
这个问题有可能是这个bug造成的,你可以对比一下你的Hadoop版本。
文章来源:http://www.codelast.com/
『3』解决办法
(1)打patch
(2)升级Hadoop版本
(3)使用旧的DistributedCache API,经测试OK
文章来源:http://www.codelast.com/
原文地址:[原创] Hadoop 2.x的DistributedCache无法工作的问题, 感谢原作者分享。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Apabila menggunakan Hadoop untuk memproses data besar, anda sering menghadapi beberapa ralat pengecualian Java, yang mungkin menjejaskan pelaksanaan tugas dan menyebabkan pemprosesan data gagal. Artikel ini akan memperkenalkan beberapa ralat Hadoop biasa dan menyediakan cara untuk menangani dan mengelakkannya. Java.lang.OutOfMemoryErrorOutOfMemoryError ialah ralat yang disebabkan oleh memori mesin maya Java yang tidak mencukupi. Apabila Hadoop adalah

Dengan kemunculan era data besar, pemprosesan dan penyimpanan data menjadi semakin penting, dan cara mengurus dan menganalisis sejumlah besar data dengan cekap telah menjadi cabaran bagi perusahaan. Hadoop dan HBase, dua projek Yayasan Apache, menyediakan penyelesaian untuk penyimpanan dan analisis data besar. Artikel ini akan memperkenalkan cara menggunakan Hadoop dan HBase dalam Beego untuk storan dan pertanyaan data besar. 1. Pengenalan kepada Hadoop dan HBase Hadoop ialah sistem storan dan pengkomputeran teragih sumber terbuka yang boleh

Memandangkan jumlah data terus meningkat, kaedah pemprosesan data tradisional tidak lagi dapat menangani cabaran yang dibawa oleh era data besar. Hadoop ialah rangka kerja pengkomputeran teragih sumber terbuka yang menyelesaikan masalah kesesakan prestasi yang disebabkan oleh pelayan nod tunggal dalam pemprosesan data besar melalui storan teragih dan pemprosesan sejumlah besar data. PHP adalah bahasa skrip yang digunakan secara meluas dalam pembangunan web dan mempunyai kelebihan pembangunan pesat dan penyelenggaraan yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP dan Hadoop untuk pemprosesan data besar. Apa itu HadoopHadoop

Apabila bercakap tentang komputer riba permainan daripada ASUS, perkara pertama yang terlintas di fikiran ialah Republic of Gamers Tetapi sebagai tambahan kepada komputer riba permainan mewah di Republic of Gamers, ASUS juga mempunyai komputer riba permainan arus perdana dalam siri Flying Fortress lihat mereka bersama-sama. Bagaimana pula dengan ASUS Flying Fortress 7, yang paling popular di kalangan pemain. ASUS Flying Fortress 7 Komputer riba siri Flying Fortress ASUS diletakkan untuk bermain permainan berskala besar dengan mudah Mereka memfokuskan pada kekukuhan dan ketahanan. Konfigurasi asas Mula-mula, mari kita lihat beberapa konfigurasi teras Flying Fortress 7 ini. Daripada jadual konfigurasi, yang paling penting ialah AMD Ryzen73750H+NVIDIA GeForceGTX1660Ti

Timbunan teknologi data besar Java: Fahami aplikasi Java dalam bidang data besar, seperti Hadoop, Spark, Kafka, dll. Apabila jumlah data terus meningkat, teknologi data besar telah menjadi topik hangat dalam era Internet hari ini. Dalam bidang data besar, kita sering mendengar nama Hadoop, Spark, Kafka dan teknologi lain. Teknologi ini memainkan peranan penting, dan Java, sebagai bahasa pengaturcaraan yang digunakan secara meluas, juga memainkan peranan yang besar dalam bidang data besar. Artikel ini akan memberi tumpuan kepada aplikasi Java secara besar-besaran

Adakah ia dianggap asli selepas mengubah suai md5 Dalam era Internet, mencipta kandungan asli telah menjadi nilai dan sumber yang penting. Walau bagaimanapun, perkara berikut ialah mempersoalkan keaslian dan pelanggaran. Untuk mengelakkan cetak rompak dan plagiarisme, ramai orang cuba menggunakan kaedah yang berbeza untuk melindungi karya asal mereka. Salah satu kaedah biasa ialah menggunakan algoritma MD5 untuk mengubah suai kerja untuk mencapai kesan "perlindungan algoritma". MD5 (MessageDigestAlgorithm5) ialah algoritma ringkasan mesej yang biasa digunakan, yang boleh

1: Pasang JDK1. Jalankan arahan berikut untuk memuat turun pakej pemasangan JDK1.8. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2 Jalankan arahan berikut untuk menyahmampat pakej pemasangan JDK1.8 yang dimuat turun . tar-zxvfjdk-8u151-linux-x64.tar.gz3 Alihkan dan namakan semula pakej JDK. mvjdk1.8.0_151//usr/java84. gema'

Tiga komponen teras Hadoop ialah: Hadoop Distributed File System (HDFS), MapReduce dan Yet Another Resource Negotiator (YARN).
