MapReduce2.0处理机制
MapReduce(分布式计算模型)作为Hadoop家族一重要的家庭成员主要用于搜素领域,海量数据计算等问题。 内部模型采用分而治之的思想。MapReduce分为两部分(Map和Reduce)。其中Shuffler是对Reduce的预处理。 map和reduce的数据处理方式均采取键对的方式:即 [k1
MapReduce(分布式计算模型)作为Hadoop家族一重要的家庭成员主要用于搜素领域,海量数据计算等问题。
内部模型采用"分而治之"的思想。MapReduce分为两部分(Map和Reduce)。其中Shuffler是对Reduce的预处理。
map和reduce的数据处理方式均采取键值对的方式:即 [k1,v1]->MAP->[K2,V2]->Reduce->[k3,v3]。
MR执行流程
(1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)
(2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId
(3).client将jar包写入到HDFS当中(path = hdfs上的地址 + jobId)
(4).开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
(5).JobTracker进行初始化任务
(6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
(7).TaskTracker通过心跳机制领取任务(任务的描述信息)
(8).下载所需的jar,配置文件等
(9).TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
(10).将结果写入到HDFS当中
在hadoop2.0以上版本中JobTracker取名为RM(resourceManage) TastTracker取名为NM(nodeManage)
mapReduce操作实现wordcount功能(即从文本中读取内容,计算出每个单词出现的次数)
程序分为3个类(自定义MAP方法功能实现,自定义REDUCE方法功能实现,最后类拼凑成mapreduce模式导成jar包,在HDFS分布式功能中实现)
1.WCMapper类(实现map)
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
/*
* 给wordcount写mapper
* 定义mapper
* KEYIN:k1的类型
* VALUEIN:v1的类型
*
* 重写map方法
* hadoop没有使用jdk默认的序列化机制(long->longwriteable String->Text)
*/
public class WCMapper extends Mapper
@Override
protected void map(LongWritable key, Text value,
Mapper
throws IOException, InterruptedException {
// TODO Auto-generated method stub
// 接收信息V1
String line = value.toString();
// 切分数据
String[] words = line.split(" ");
// 循环
for (String w : words) {
// 出现一次记一个1,输出
// 构一个新的key,value
context.write(new Text(w), new LongWritable(1));
}
}
}
2.WCReducer类实现reduce功能
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
/*
* KEYIN k2的类型
* VALUEIN v2的类型
*
* 重写reducer方法
*/
public class WCReducer extends Reducer
@Override
protected void reduce(Text k2, Iterable
Reducer
throws IOException, InterruptedException {
// 接收数据
Text k3 = k2;
// 定义一个计数器
Long count = (long) 0;
// 循环v2s
for (LongWritable i : v2s) {
count += i.get();
}
// 输出
context.write(k3, new LongWritable(count));
}
}
3.wordCount类。拼凑前两个类,符合mapreduce格式
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
/*
* mapReduce
*
* 组装自定义的map和reduce
*/
public class wordCount {
public static void main(String[] args) throws Exception {
// Job job=Job.instance(new Configuration()); //版本hadoop2
Job job = new Job(new Configuration()); // 版本hadoop1
// 4.注意---将main方法中的类设进去
job.setJarByClass(wordCount.class);
// 1.设置自定义Mapper
job.setMapperClass(WCMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
// 设置mapper读入的path(hdfs路径)
FileInputFormat.setInputPaths(job, new Path("/words.txt"));
// 2.设置reduce
job.setReducerClass(WCReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
FileOutputFormat.setOutputPath(job, new Path("/WcountResult"));
// 3.提交
job.waitForCompletion(true); // 打印进度和详情
}
}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











1. Zuerst klicken wir mit der rechten Maustaste auf die leere Stelle der Taskleiste und wählen die Option [Task-Manager] oder klicken mit der rechten Maustaste auf das Startlogo und wählen dann die Option [Task-Manager]. 2. In der geöffneten Task-Manager-Oberfläche klicken wir ganz rechts auf die Registerkarte [Dienste]. 3. Klicken Sie in der geöffneten Registerkarte [Dienst] unten auf die Option [Dienst öffnen]. 4. Klicken Sie im sich öffnenden Fenster [Dienste] mit der rechten Maustaste auf den Dienst [InternetConnectionSharing(ICS)] und wählen Sie dann die Option [Eigenschaften]. 5. Ändern Sie im sich öffnenden Eigenschaftenfenster die Option „Öffnen mit“ in „Deaktiviert“, klicken Sie auf „Übernehmen“ und dann auf „OK“. 6. Klicken Sie auf das Startlogo, dann auf die Schaltfläche zum Herunterfahren, wählen Sie [Neustart] und schließen Sie den Neustart des Computers ab.

Lernen Sie schnell, wie Sie Dateien im CSV-Format öffnen und verarbeiten. Mit der kontinuierlichen Weiterentwicklung der Datenanalyse und -verarbeitung ist das CSV-Format zu einem der am weitesten verbreiteten Dateiformate geworden. Eine CSV-Datei ist eine einfache und leicht lesbare Textdatei mit verschiedenen, durch Kommas getrennten Datenfeldern. Ob in der akademischen Forschung, in der Geschäftsanalyse oder in der Datenverarbeitung – wir stoßen häufig auf Situationen, in denen wir CSV-Dateien öffnen und verarbeiten müssen. Die folgende Anleitung zeigt Ihnen, wie Sie schnell lernen, Dateien im CSV-Format zu öffnen und zu verarbeiten. Schritt 1: Verstehen Sie zunächst das CSV-Dateiformat.

Im PHP-Entwicklungsprozess ist der Umgang mit Sonderzeichen ein häufiges Problem, insbesondere bei der Zeichenfolgenverarbeitung werden Sonderzeichen häufig mit Escapezeichen versehen. Unter diesen ist die Umwandlung von Sonderzeichen in einfache Anführungszeichen eine relativ häufige Anforderung, da einfache Anführungszeichen in PHP eine gängige Methode zum Umschließen von Zeichenfolgen sind. In diesem Artikel erklären wir, wie man in PHP mit einfachen Anführungszeichen bei der Konvertierung von Sonderzeichen umgeht, und stellen spezifische Codebeispiele bereit. Zu den Sonderzeichen in PHP gehören unter anderem einfache Anführungszeichen ('), doppelte Anführungszeichen ("), Backslash () usw. In Zeichenfolgen

Wenn das von uns verwendete Betriebssystem Win7 ist, können einige Freunde beim Upgrade möglicherweise kein Upgrade von Win7 auf Win10 durchführen. Der Herausgeber meint, wir könnten es noch einmal mit einem Upgrade versuchen, um zu sehen, ob das Problem dadurch gelöst werden kann. Schauen wir uns an, was der Editor getan hat, um Einzelheiten zu erfahren. Was zu tun ist, wenn das Upgrade von Win7 auf Win10 fehlschlägt: 1. Es wird empfohlen, zuerst einen Treiber herunterzuladen, um zu prüfen, ob Ihr Computer auf Win10 aktualisiert werden kann Verwenden Sie nach dem Upgrade den Treibertest. Überprüfen Sie, ob Treiberanomalien vorliegen, und beheben Sie diese dann mit einem Klick. Methode 2: 1. Löschen Sie alle Dateien unter C:\Windows\SoftwareDistribution\Download. 2.win+R führen Sie „wuauclt.e“ aus

Für den Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung sind spezifische Codebeispiele erforderlich. In der modernen Softwareentwicklung sind XML und JSON zwei weit verbreitete Datenformate. XML (Extensible Markup Language) ist eine Auszeichnungssprache zum Speichern und Übertragen von Daten, während JSON (JavaScript Object Notation) ein leichtes Datenaustauschformat ist. Bei der C#-Entwicklung müssen wir häufig XML- und JSON-Daten verarbeiten und verarbeiten. Dieser Artikel konzentriert sich auf die Verwendung von C# zum Verarbeiten und Anhängen dieser beiden Datenformate

Generatoren in PHP7: Wie kann man große Datenmengen effizient verarbeiten und Speicher sparen? Überblick: PHP7 führt Generatoren als leistungsstarkes Werkzeug im Hinblick auf die Verarbeitung großer Datenmengen und die Speichereinsparung ein. Generatoren sind eine besondere Art von Funktion in der PHP-Sprache. Im Gegensatz zu gewöhnlichen Funktionen können Generatoren die Ausführung anhalten und Zwischenergebnisse zurückgeben, anstatt alle Ergebnisse auf einmal zurückzugeben. Dadurch ist der Generator ideal für die Verarbeitung großer Datenmengen, reduziert den Speicherverbrauch und verbessert die Verarbeitungseffizienz. In diesem Artikel werden Studierende vorgestellt

Für den Umgang mit Mehrsprachigkeits- und Internationalisierungsproblemen in der PHP-Entwicklung sind spezifische Codebeispiele erforderlich. Mit der Entwicklung des Internets wird die Nachfrage der Menschen nach Mehrsprachigkeit und Internationalisierung immer größer. In der PHP-Entwicklung ist der effektive Umgang mit Mehrsprachen- und Internationalisierungsproblemen zu einer wichtigen Aufgabe geworden, die Entwickler lösen müssen. Handhabung der Zeichenkodierung Bei der PHP-Entwicklung müssen wir zunächst sicherstellen, dass die Zeichenkodierung korrekt gehandhabt wird. In mehrsprachigen Umgebungen ist die Verwendung der UTF-8-Kodierung die häufigste Wahl. Sie können den folgenden Code zum Kopf der PHP-Datei hinzufügen: header('C

Fähigkeiten zur Ausnahmebehandlung und Fehlerprotokollierung in C# Einführung: Im Softwareentwicklungsprozess sind Ausnahmebehandlung und Fehlerprotokollierung sehr wichtige Verknüpfungen. Für C#-Entwickler kann die Beherrschung von Fähigkeiten zur Ausnahmebehandlung und Fehlerprotokollierungsmethoden dabei helfen, Code besser zu verfolgen und zu debuggen sowie die Stabilität und Wartbarkeit des Programms zu verbessern. In diesem Artikel werden gängige Ausnahmebehandlungstechniken in C# vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, die Ausnahmebehandlung und Fehlerprotokollierung besser zu verstehen und anzuwenden. 1. Grundkonzepte der Ausnahmebehandlung Ausnahmen beziehen sich auf die
