Heim Datenbank MySQL-Tutorial [原创] Hadoop 2.x的DistributedCache无法工作的问题

[原创] Hadoop 2.x的DistributedCache无法工作的问题

Jun 07, 2016 pm 04:34 PM
hadoop 原创

转载请注明出处: 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
Nach dem Login kopieren

其中,inputFileOnHDFS是一个HDFS文件的路径,也就是你要用作distribute cache的文件的路径,例如 /user/codelast/123.txt
在mapper的setup()方法中:

Configuration conf = context.getConfiguration();
Path[] localCacheFiles = DistributedCache.getLocalCacheFiles(conf);
readCacheFile(localCacheFiles[0]);
Nach dem Login kopieren

其中,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();
}
Nach dem Login kopieren

文章来源:http://www.codelast.com/
『2』新API
上面的代码中,addCacheFile() 方法和 getLocalCacheFiles() 都已经被Hadoop 2.x标记为 @Deprecated 了。
因此,有一套新的API来实现同样的功能,这个链接里有示例,我在这里再详细地写一下。
将HDFS文件添加到distributed cache中:

job.addCacheFile(new Path(inputFileOnHDFS).toUri());
Nach dem Login kopieren

在mapper的setup()方法中:

Configuration conf = context.getConfiguration();
URI[] localCacheFiles = context.getCacheFiles();
readCacheFile(localCacheFiles[0]);
Nach dem Login kopieren

其中,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();
}
Nach dem Login kopieren

但是就像文章开头的那个链接里所描述的问题一样,你可能会发现 context.getCacheFiles() 总是返回null,也就是你无法读到cache文件。
这个问题有可能是这个bug造成的,你可以对比一下你的Hadoop版本。
文章来源:http://www.codelast.com/
『3』解决办法
(1)打patch
(2)升级Hadoop版本
(3)使用旧的DistributedCache API,经测试OK
文章来源:http://www.codelast.com/

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Java-Fehler: Hadoop-Fehler, wie man damit umgeht und sie vermeidet Java-Fehler: Hadoop-Fehler, wie man damit umgeht und sie vermeidet Jun 24, 2023 pm 01:06 PM

Java-Fehler: Hadoop-Fehler, wie man damit umgeht und sie vermeidet Wenn Sie Hadoop zur Verarbeitung großer Datenmengen verwenden, stoßen Sie häufig auf einige Java-Ausnahmefehler, die sich auf die Ausführung von Aufgaben auswirken und zum Scheitern der Datenverarbeitung führen können. In diesem Artikel werden einige häufige Hadoop-Fehler vorgestellt und Möglichkeiten aufgezeigt, mit ihnen umzugehen und sie zu vermeiden. Java.lang.OutOfMemoryErrorOutOfMemoryError ist ein Fehler, der durch unzureichenden Speicher der Java Virtual Machine verursacht wird. Wenn Hadoop ist

Verwendung von Hadoop und HBase in Beego für die Speicherung und Abfrage großer Datenmengen Verwendung von Hadoop und HBase in Beego für die Speicherung und Abfrage großer Datenmengen Jun 22, 2023 am 10:21 AM

Mit dem Aufkommen des Big-Data-Zeitalters sind Datenverarbeitung und -speicherung immer wichtiger geworden und die effiziente Verwaltung und Analyse großer Datenmengen ist für Unternehmen zu einer Herausforderung geworden. Hadoop und HBase, zwei Projekte der Apache Foundation, bieten eine Lösung für die Speicherung und Analyse großer Datenmengen. In diesem Artikel wird erläutert, wie Sie Hadoop und HBase in Beego für die Speicherung und Abfrage großer Datenmengen verwenden. 1. Einführung in Hadoop und HBase Hadoop ist ein verteiltes Open-Source-Speicher- und Computersystem, das dies kann

Wie man PHP und Hadoop für die Big-Data-Verarbeitung verwendet Wie man PHP und Hadoop für die Big-Data-Verarbeitung verwendet Jun 19, 2023 pm 02:24 PM

Da die Datenmenge weiter zunimmt, sind herkömmliche Datenverarbeitungsmethoden den Herausforderungen des Big-Data-Zeitalters nicht mehr gewachsen. Hadoop ist ein Open-Source-Framework für verteiltes Computing, das das Leistungsengpassproblem löst, das durch Einzelknotenserver bei der Verarbeitung großer Datenmengen verursacht wird, indem große Datenmengen verteilt gespeichert und verarbeitet werden. PHP ist eine Skriptsprache, die in der Webentwicklung weit verbreitet ist und die Vorteile einer schnellen Entwicklung und einfachen Wartung bietet. In diesem Artikel wird die Verwendung von PHP und Hadoop für die Verarbeitung großer Datenmengen vorgestellt. Was ist HadoopHadoop ist

Gilt das geänderte MD5 als Originalinhalt? Gilt das geänderte MD5 als Originalinhalt? Feb 19, 2024 pm 08:04 PM

Gilt es nach der Änderung von md5 als originell? Im Internetzeitalter ist die Erstellung von Originalinhalten zu einem wichtigen Wert und einer wichtigen Ressource geworden. Was jedoch folgt, ist die Infragestellung der Originalität und der Rechtsverletzung. Um Piraterie und Plagiate vorzubeugen, versuchen viele Menschen, ihre Originalwerke mit unterschiedlichen Methoden zu schützen. Eine der am häufigsten verwendeten Methoden ist die Verwendung des MD5-Algorithmus zur Änderung der Arbeit, um den Effekt des „Algorithmusschutzes“ zu erzielen. MD5 (MessageDigestAlgorithm5) ist ein häufig verwendeter Message-Digest-Algorithmus, der dies kann

Entdecken Sie die Anwendung von Java im Bereich Big Data: Verständnis von Hadoop, Spark, Kafka und anderen Technologie-Stacks Entdecken Sie die Anwendung von Java im Bereich Big Data: Verständnis von Hadoop, Spark, Kafka und anderen Technologie-Stacks Dec 26, 2023 pm 02:57 PM

Java-Big-Data-Technologie-Stack: Verstehen Sie die Anwendung von Java im Bereich Big Data wie Hadoop, Spark, Kafka usw. Da die Datenmenge weiter zunimmt, ist die Big-Data-Technologie im heutigen Internetzeitalter zu einem heißen Thema geworden. Im Bereich Big Data hören wir oft die Namen Hadoop, Spark, Kafka und andere Technologien. Diese Technologien spielen eine entscheidende Rolle, und Java spielt als weit verbreitete Programmiersprache auch im Bereich Big Data eine große Rolle. Dieser Artikel konzentriert sich auf die Anwendung von Java im Großen und Ganzen

ASUS Flying Fortress 7 – Original ASUS Flying Fortress 7 – Original Jul 14, 2023 pm 10:09 PM

Wenn es um Gaming-Laptops von ASUS geht, fällt mir als Erstes Republic of Gamers ein. Aber zusätzlich zu den High-End-Gaming-Laptops der Republic of Gamers bietet ASUS auch Mainstream-Gaming-Laptops der Flying Fortress-Serie an Schauen Sie sie sich gemeinsam an. Wie wäre es mit ASUS Flying Fortress 7, das bei Gamern am beliebtesten ist? ASUS Flying Fortress 7 Die Notebooks der Flying Fortress-Serie sind für das problemlose Spielen großer Spiele geeignet. Sie legen Wert auf Robustheit und Langlebigkeit. Sie waren schon immer eine beliebte Wahl bei Gamern und Studenten. Grundkonfiguration Werfen wir zunächst einen Blick auf einige der Kernkonfigurationen dieser Flying Fortress 7. Aus der Konfigurationstabelle ist AMD Ryzen73750H+NVIDIA GeForceGTX1660Ti am bemerkenswertesten

So installieren Sie Hadoop unter Linux So installieren Sie Hadoop unter Linux May 18, 2023 pm 08:19 PM

1: Installieren Sie JDK1. Führen Sie den folgenden Befehl aus, um das JDK1.8-Installationspaket herunterzuladen. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2. Führen Sie den folgenden Befehl aus, um das heruntergeladene JDK1.8-Installationspaket zu dekomprimieren . tar-zxvfjdk-8u151-linux-x64.tar.gz3. Verschieben Sie das JDK-Paket und benennen Sie es um. mvjdk1.8.0_151//usr/java84. Konfigurieren Sie Java-Umgebungsvariablen. Echo'

Verwenden Sie PHP, um eine groß angelegte Datenverarbeitung zu erreichen: Hadoop, Spark, Flink usw. Verwenden Sie PHP, um eine groß angelegte Datenverarbeitung zu erreichen: Hadoop, Spark, Flink usw. May 11, 2023 pm 04:13 PM

Da die Datenmenge weiter zunimmt, ist die Datenverarbeitung in großem Maßstab zu einem Problem geworden, dem sich Unternehmen stellen und das sie lösen müssen. Herkömmliche relationale Datenbanken können diesen Bedarf nicht mehr decken. Für die Speicherung und Analyse großer Datenmengen sind verteilte Computerplattformen wie Hadoop, Spark und Flink die beste Wahl. Im Auswahlprozess von Datenverarbeitungstools erfreut sich PHP als einfach zu entwickelnde und zu wartende Sprache bei Entwicklern immer größerer Beliebtheit. In diesem Artikel werden wir untersuchen, wie und wie PHP für die Verarbeitung großer Datenmengen genutzt werden kann

See all articles