[原创] 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无法工作的问题, 感谢原作者分享。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Erreurs Java : erreurs Hadoop, comment les gérer et les éviter Lorsque vous utilisez Hadoop pour traiter des données volumineuses, vous rencontrez souvent des erreurs d'exception Java, qui peuvent affecter l'exécution des tâches et provoquer l'échec du traitement des données. Cet article présentera quelques erreurs Hadoop courantes et fournira des moyens de les gérer et de les éviter. Java.lang.OutOfMemoryErrorOutOfMemoryError est une erreur provoquée par une mémoire insuffisante de la machine virtuelle Java. Quand Hadoop est

Avec l'avènement de l'ère du Big Data, le traitement et le stockage des données sont devenus de plus en plus importants, et la gestion et l'analyse efficaces de grandes quantités de données sont devenues un défi pour les entreprises. Hadoop et HBase, deux projets de la Fondation Apache, proposent une solution de stockage et d'analyse du Big Data. Cet article explique comment utiliser Hadoop et HBase dans Beego pour le stockage et les requêtes Big Data. 1. Introduction à Hadoop et HBase Hadoop est un système informatique et de stockage distribué open source qui peut

Alors que la quantité de données continue d’augmenter, les méthodes traditionnelles de traitement des données ne peuvent plus relever les défis posés par l’ère du Big Data. Hadoop est un cadre informatique distribué open source qui résout le problème de goulot d'étranglement des performances causé par les serveurs à nœud unique dans le traitement du Big Data grâce au stockage distribué et au traitement de grandes quantités de données. PHP est un langage de script largement utilisé dans le développement Web et présente les avantages d'un développement rapide et d'une maintenance facile. Cet article explique comment utiliser PHP et Hadoop pour le traitement du Big Data. Qu'est-ce que HadoopHadoop ?

Est-il considéré comme original après la modification de md5 ? À l'ère d'Internet, la création de contenu original est devenue une valeur et une ressource importante. Cependant, ce qui s’ensuit est une remise en question de l’originalité et de la contrefaçon. Afin de prévenir le piratage et le plagiat, de nombreuses personnes tentent d'utiliser différentes méthodes pour protéger leurs œuvres originales. L'une des méthodes courantes consiste à utiliser l'algorithme MD5 pour modifier le travail afin d'obtenir l'effet de « protection par algorithme ». MD5 (MessageDigestAlgorithm5) est un algorithme de résumé de message couramment utilisé, qui peut

Pile technologique Java Big Data : Comprendre l'application de Java dans le domaine du Big Data, comme Hadoop, Spark, Kafka, etc. Alors que la quantité de données continue d'augmenter, la technologie Big Data est devenue un sujet brûlant à l'ère d'Internet d'aujourd'hui. Dans le domaine du big data, on entend souvent les noms de Hadoop, Spark, Kafka et d’autres technologies. Ces technologies jouent un rôle essentiel et Java, en tant que langage de programmation largement utilisé, joue également un rôle majeur dans le domaine du Big Data. Cet article se concentrera sur l'application de Java en général

Lorsqu'il s'agit d'ordinateurs portables de jeu d'ASUS, la première chose qui vient à l'esprit est Republic of Gamers. Mais en plus des ordinateurs portables de jeu haut de gamme de Republic of Gamers, ASUS propose également des ordinateurs portables de jeu grand public dans la série Flying Fortress. jetez-y un œil ensemble. Que diriez-vous d'ASUS Flying Fortress 7, qui est le plus populaire parmi les joueurs. ASUS Flying Fortress 7 Les ordinateurs portables de la série Flying Fortress d'ASUS sont positionnés pour jouer facilement à des jeux à grande échelle. Ils mettent l'accent sur la robustesse et la durabilité. Ils ont toujours été un choix populaire parmi les joueurs et les étudiants. Configuration de base Tout d'abord, jetons un coup d'œil à certaines des configurations de base de ce Flying Fortress 7. Dans le tableau de configuration, la plus remarquable est AMD Ryzen73750H+NVIDIA GeForceGTX1660Ti.

1 : Installez JDK1. Exécutez la commande suivante pour télécharger le package d'installation de JDK1.8. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2 Exécutez la commande suivante pour décompresser le package d'installation JDK1.8 téléchargé. . tar-zxvfjdk-8u151-linux-x64.tar.gz3 Déplacez et renommez le package JDK. mvjdk1.8.0_151//usr/java84. Configurez les variables d'environnement Java. écho'

Alors que la quantité de données continue d’augmenter, le traitement des données à grande échelle est devenu un problème auquel les entreprises doivent faire face et résoudre. Les bases de données relationnelles traditionnelles ne peuvent plus répondre à cette demande pour le stockage et l'analyse de données à grande échelle, les plateformes informatiques distribuées telles que Hadoop, Spark et Flink sont devenues les meilleurs choix. Dans le processus de sélection des outils de traitement de données, PHP devient de plus en plus populaire parmi les développeurs en tant que langage facile à développer et à maintenir. Dans cet article, nous explorerons comment exploiter PHP pour le traitement de données à grande échelle et comment
