hadoop第一个程序WordCount.java的编译运行过程
java是hadoop开发的标准官方语言,本文下载了官方的WordCount.java并对其进行了编译和打包,然后使用测试数据运行了该hadoop程序。 这里假定已经装好了hadoop的环境,在Linux下运行hadoop命令能够正常执行; 下载java版本的WordCount.java程序。 将WordCount
java是hadoop开发的标准官方语言,本文下载了官方的WordCount.java并对其进行了编译和打包,然后使用测试数据运行了该hadoop程序。
这里假定已经装好了hadoop的环境,在Linux下运行hadoop命令能够正常执行;
下载java版本的WordCount.java程序。
将WordCount.java复制到linux下的一个目录,这里我复制到/home/crazyant/hadoop_wordcount
[crazyant@dev.mechine hadoop_wordcount]$ ll
total 4
-rwxr–r–? 1 crazyant crazyant 1921 Aug 16 20:03 WordCount.java
在该目录(/home/crazyant/hadoop_wordcount)下创建wordcount_classes目录,用于存放编译WordCount.java生成的class文件。
[crazyant@dev.mechine hadoop_wordcount]$ mkdir wordcount_classes
[crazyant@dev.mechine hadoop_wordcount]$ ll
total 8
drwxrwxr-x? 2 crazyant crazyant 4096 Aug 16 20:07 wordcount_classes
-rwxr–r–? 1 crazyant crazyant 1921 Aug 16 20:03 WordCount.java
编译WordCount.java文件,其中-classpath选项表示要引用hadoop官方的包,-d选项表示要将编译后的class文件生成的目标目录。
[crazyant@dev.mechine hadoop_wordcount]$ javac -classpath /home/crazyant/app/hadoop/hadoop-2-core.jar -d wordcount_classes WordCount.java
[crazyant@dev.mechine hadoop_wordcount]$ ll -R
.:
total 8
drwxrwxr-x? 3 crazyant crazyant 4096 Aug 16 20:09 wordcount_classes
-rwxr–r–? 1 crazyant crazyant 1921 Aug 16 20:03 WordCount.java
./wordcount_classes:
total 4
drwxrwxr-x? 3 crazyant crazyant 4096 Aug 16 20:09 org
./wordcount_classes/org:
total 4
drwxrwxr-x? 2 crazyant crazyant 4096 Aug 16 20:09 myorg
./wordcount_classes/org/myorg:
total 12
-rw-rw-r–? 1 crazyant crazyant 1546 Aug 16 20:09 WordCount.class
-rw-rw-r–? 1 crazyant crazyant 1938 Aug 16 20:09 WordCount$Map.class
-rw-rw-r–? 1 crazyant crazyant 1611 Aug 16 20:09 WordCount$Reduce.class
然后将编译后的class文件打包:
[crazyant@dev.mechine hadoop_wordcount]$ jar -cvf wordcount.jar -C wordcount_classes/ .
added manifest
adding: org/(in = 0) (out= 0)(stored 0%)
adding: org/myorg/(in = 0) (out= 0)(stored 0%)
adding: org/myorg/WordCount$Map.class(in = 1938) (out= 798)(deflated 58%)
adding: org/myorg/WordCount$Reduce.class(in = 1611) (out= 649)(deflated 59%)
adding: org/myorg/WordCount.class(in = 1546) (out= 749)(deflated 51%)
[crazyant@dev.mechine hadoop_wordcount]$ ll
total 12
drwxrwxr-x? 3 crazyant crazyant 4096 Aug 16 20:09 wordcount_classes
-rw-rw-r–? 1 crazyant crazyant 3169 Aug 16 20:11 wordcount.jar
-rwxr–r–? 1 crazyant crazyant 1921 Aug 16 20:03 WordCount.java
在本地用echo生成一个文件,用于输入数据:
[crazyant@dev.mechine hadoop_wordcount]$ echo “hello world, hello crazyant, i am the ant, i am your brother” > inputfile
[crazyant@dev.mechine hadoop_wordcount]$ more inputfile
hello world, hello crazyant, i am the ant, i am your brother
在hadoop上建立一个目录,里面建立输入文件的目录
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -mkdir /app/word_count/input
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -ls /app/word_count
Found 1 items
drwxr-xr-x?? 3 czt czt????????? 0 2013-08-16 20:16 /app/word_count/input
将本地刚刚写的的inputfile上传到hadoop上的input目录
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -put inputfile /app/word_count/input
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -ls /app/word_count/input
Found 1 items
-rw-r–r–?? 3 czt czt???????? 61 2013-08-16 20:18 /app/word_count/input/inputfile
运行jar,以建立的Input目录作为输入参数
[crazyant@dev.mechine hadoop_wordcount]$ hadoop jar wordcount.jar org.myorg.WordCount /app/word_count/input /app/word_count/output
13/08/16 20:19:38 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/08/16 20:19:40 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/08/16 20:19:40 INFO compress.LzoCodec: Successfully loaded & initialized native-lzo library
13/08/16 20:19:40 INFO compress.LzmaCodec: Successfully loaded & initialized native-lzma library
13/08/16 20:19:40 INFO compress.QuickLzCodec: Successfully loaded & initialized native-quicklz library
13/08/16 20:19:40 INFO mapred.FileInputFormat: Total input paths to process : 1
13/08/16 20:19:41 INFO mapred.JobClient: splits size : 61
13/08/16 20:19:41 INFO mapred.JobClient: Running job: job_20130813122541_105844
13/08/16 20:19:43 INFO mapred.JobClient:? map 0% reduce 0%
13/08/16 20:19:57 INFO mapred.JobClient:? map 24% reduce 0%
13/08/16 20:20:07 INFO mapred.JobClient:? map 93% reduce 0%
13/08/16 20:20:16 INFO mapred.JobClient:? map 100% reduce 1%
13/08/16 20:20:26 INFO mapred.JobClient:? map 100% reduce 61%
13/08/16 20:20:36 INFO mapred.JobClient:? map 100% reduce 89%
13/08/16 20:20:47 INFO mapred.JobClient:? map 100% reduce 96%
13/08/16 20:20:57 INFO mapred.JobClient:? map 100% reduce 98%
13/08/16 20:21:00 INFO mapred.JobClient: Updating completed job! Ignoring …
13/08/16 20:21:00 INFO mapred.JobClient: Updating completed job! Ignoring …
13/08/16 20:21:00 INFO mapred.JobClient: Job complete: job_20130813122541_105844
13/08/16 20:21:00 INFO mapred.JobClient: Counters: 19
13/08/16 20:21:00 INFO mapred.JobClient:?? File Systems
13/08/16 20:21:00 INFO mapred.JobClient:???? HDFS bytes read=1951
13/08/16 20:21:00 INFO mapred.JobClient:???? HDFS bytes written=68
13/08/16 20:21:00 INFO mapred.JobClient:???? Local bytes read=5174715
13/08/16 20:21:00 INFO mapred.JobClient:???? Local bytes written=256814
13/08/16 20:21:00 INFO mapred.JobClient:?? Job Counters
13/08/16 20:21:00 INFO mapred.JobClient:???? Launched reduce tasks=100
13/08/16 20:21:00 INFO mapred.JobClient:???? Rack-local map tasks=61
13/08/16 20:21:00 INFO mapred.JobClient:???? ORIGINAL_REDUCES=100
13/08/16 20:21:00 INFO mapred.JobClient:???? Launched map tasks=61
13/08/16 20:21:00 INFO mapred.JobClient:???? MISS_SCHEDULED_REDUCES=15
13/08/16 20:21:00 INFO mapred.JobClient:?? TASK_STATISTICS
13/08/16 20:21:00 INFO mapred.JobClient:???? Total Map Slot Time=34
13/08/16 20:21:00 INFO mapred.JobClient:???? Attempt_0 Map Task Count=61
13/08/16 20:21:00 INFO mapred.JobClient:???? Total Reduce Slot Time=892
13/08/16 20:21:00 INFO mapred.JobClient:?? Map-Reduce Framework
13/08/16 20:21:00 INFO mapred.JobClient:???? Reduce input groups=9
13/08/16 20:21:00 INFO mapred.JobClient:???? Combine output records=0
13/08/16 20:21:00 INFO mapred.JobClient:???? Map input records=1
13/08/16 20:21:00 INFO mapred.JobClient:???? Reduce output records=9
13/08/16 20:21:00 INFO mapred.JobClient:???? Map input bytes=61
13/08/16 20:21:00 INFO mapred.JobClient:???? Combine input records=0
13/08/16 20:21:00 INFO mapred.JobClient:???? Reduce input records=9
查看output目录是否有结果
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -ls /app/word_count/output??????????????????????????????????????????????????? Found 100 items
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00000
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00001
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00002
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00003
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00004
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00005
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00006
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00007
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00008
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00009
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00010
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00011
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00012
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00013
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00014
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00015
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00016
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00017
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00018
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00019
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00020
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00021
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00022
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00023
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00024
-rw-r–r–?? 3 czt czt????????? 0 2013-08-16 20:20 /app/word_count/output/part-00025
将该目录下所有文本文件合并后下载到本地
[crazyant@dev.mechine hadoop_wordcount]$ hadoop fs -getmerge /app/word_count/output wordcount_result
[crazyant@dev.mechine hadoop_wordcount]$ ls
inputfile? wordcount_classes? wordcount.jar? WordCount.java? wordcount_result
查看一下下载下来的计算结果
[crazyant@dev.mechine hadoop_wordcount]$ more wordcount_result
i?????? 2
your??? 1
crazyant,?????? 1
brother 1
hello?? 2
am????? 2
world,? 1
the???? 1
ant,??? 1
统计结果正确;
参考文章:http://hadoop.apache.org/docs/r0.18.3/mapred_tutorial.html#Example%3A+WordCount+v1.0
原文地址:hadoop第一个程序WordCount.java的编译运行过程, 感谢原作者分享。

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)

La carte par défaut sur l'iPhone est Maps, le fournisseur de géolocalisation propriétaire d'Apple. Même si la carte s’améliore, elle ne fonctionne pas bien en dehors des États-Unis. Il n'a rien à offrir par rapport à Google Maps. Dans cet article, nous discutons des étapes réalisables pour utiliser Google Maps afin de devenir la carte par défaut sur votre iPhone. Comment faire de Google Maps la carte par défaut sur iPhone Définir Google Maps comme application cartographique par défaut sur votre téléphone est plus facile que vous ne le pensez. Suivez les étapes ci-dessous – Étapes préalables – Vous devez avoir Gmail installé sur votre téléphone. Étape 1 – Ouvrez l'AppStore. Étape 2 – Recherchez « Gmail ». Étape 3 – Cliquez à côté de l'application Gmail

Pour automatiser les tâches et gérer plusieurs systèmes, un logiciel de planification de mission est un outil précieux dans votre arsenal, notamment en tant qu'administrateur système. Le Planificateur de tâches Windows fait parfaitement le travail, mais dernièrement, de nombreuses personnes ont signalé des erreurs de demande rejetée par l'opérateur. Ce problème existe dans toutes les itérations du système d’exploitation, et même s’il a été largement signalé et couvert, il n’existe pas de solution efficace. Continuez à lire pour découvrir ce qui pourrait réellement fonctionner pour d’autres personnes ! Quelle est la demande dans le Planificateur de tâches 0x800710e0 qui a été refusée par l'opérateur ou l'administrateur ? Le planificateur de tâches permet d'automatiser diverses tâches et applications sans intervention de l'utilisateur. Vous pouvez l'utiliser pour planifier et organiser des applications spécifiques, configurer des notifications automatiques, aider à transmettre des messages, et bien plus encore. il

Le fonctionnement de Windows s'améliore de plus en plus à chaque version, avec des fonctionnalités attrayantes pour améliorer l'expérience utilisateur. Une fonctionnalité que les utilisateurs voudront explorer sur Windows 10 et 11 est la possibilité de trier les photos par visages. Cette fonctionnalité vous permet de regrouper les photos de vos amis et de votre famille grâce à la reconnaissance faciale. Ça a l'air amusant, non ? Lisez la suite pour savoir comment profiter de cette fonctionnalité. Puis-je regrouper des photos par visages sous Windows ? Oui, vous pouvez utiliser l'application Photos pour regrouper les images par visages sous Windows 10 et 11. Cependant, cette fonctionnalité n'est pas disponible sur la version de l'application Photos. De plus, vous pouvez lier ces photos à des contacts à l'aide de l'onglet Personnes. Ainsi, en utilisant cette fonction, vous pouvez

C++ est un langage de programmation largement utilisé qui est très pratique pour écrire des programmes de compte à rebours. Le programme de compte à rebours est une application courante qui peut nous fournir des fonctions de calcul du temps et de compte à rebours très précises. Cet article explique comment utiliser C++ pour écrire un programme de compte à rebours simple. La clé pour mettre en œuvre un programme de compte à rebours est d’utiliser une minuterie pour calculer le passage du temps. En C++, nous pouvons utiliser les fonctions du fichier d'en-tête time.h pour implémenter la fonction timer. Ce qui suit est le code d'un simple programme de compte à rebours

L'application horloge est-elle absente de votre téléphone ? La date et l'heure apparaîtront toujours sur la barre d'état de votre iPhone. Cependant, sans l'application Horloge, vous ne pourrez pas utiliser l'horloge mondiale, le chronomètre, le réveil et bien d'autres fonctionnalités. Par conséquent, réparer l’application d’horloge manquante devrait figurer en haut de votre liste de tâches. Ces solutions peuvent vous aider à résoudre ce problème. Correctif 1 – Placer l’application Horloge Si vous avez supprimé par erreur l’application Horloge de votre écran d’accueil, vous pouvez remettre l’application Horloge à sa place. Étape 1 – Déverrouillez votre iPhone et commencez à faire glisser votre doigt vers la gauche jusqu'à atteindre la page Bibliothèque d'applications. Étape 2 – Ensuite, recherchez « horloge » dans le champ de recherche. Étape 3 – Lorsque vous voyez « Horloge » ci-dessous dans les résultats de recherche, maintenez-la enfoncée et

Visitez-vous fréquemment le même site Web à peu près à la même heure chaque jour ? Cela peut conduire à passer beaucoup de temps avec plusieurs onglets de navigateur ouverts et à encombrer le navigateur lors de l'exécution des tâches quotidiennes. Eh bien, que diriez-vous de l’ouvrir sans avoir à lancer le navigateur manuellement ? C'est très simple et ne nécessite pas de télécharger d'applications tierces, comme indiqué ci-dessous. Comment configurer le Planificateur de tâches pour ouvrir un site Web ? Appuyez sur la touche , tapez Planificateur de tâches dans la zone de recherche, puis cliquez sur Ouvrir. Windows Dans la barre latérale droite, cliquez sur l'option Créer une tâche de base. Dans le champ Nom, saisissez le nom du site Web que vous souhaitez ouvrir et cliquez sur Suivant. Ensuite, sous Déclencheurs, cliquez sur Fréquence temporelle, puis sur Suivant. Sélectionnez la durée pendant laquelle vous souhaitez que l'événement se répète et cliquez sur Suivant. Sélectionnez activer

Dans iOS 17, Apple a non seulement ajouté plusieurs nouvelles fonctionnalités de messagerie, mais a également modifié la conception de l'application Messages pour lui donner un aspect plus épuré. Toutes les applications et outils iMessage, tels que les options d'appareil photo et de photo, sont désormais accessibles en appuyant sur le bouton "+" au-dessus du clavier et à gauche du champ de saisie de texte. Cliquer sur le bouton "+" fait apparaître une colonne de menu avec un ordre d'options par défaut. En partant du haut, il y a l'appareil photo, les photos, les autocollants, l'argent liquide (si disponible), l'audio et l'emplacement. Tout en bas se trouve un bouton « Plus » qui, lorsque vous appuyez dessus, révèle toutes les autres applications de messagerie installées (vous pouvez également faire glisser votre doigt vers le haut pour révéler cette liste cachée). Comment réorganiser votre application iMessage Vous pouvez le faire en suivant

Le message « Impossible d'autoriser l'accès à la caméra et au microphone » s'affiche-t-il lorsque vous essayez d'utiliser l'application ? En règle générale, vous accordez des autorisations de caméra et de microphone à des personnes spécifiques en fonction de leurs besoins. Cependant, si vous refusez l'autorisation, la caméra et le microphone ne fonctionneront pas et afficheront ce message d'erreur à la place. Résoudre ce problème est très simple et vous pouvez le faire en une minute ou deux. Correctif 1 – Fournir les autorisations de caméra et de microphone Vous pouvez fournir les autorisations de caméra et de microphone nécessaires directement dans les paramètres. Étape 1 – Accédez à l'onglet Paramètres. Étape 2 – Ouvrez le panneau Confidentialité et sécurité. Étape 3 – Activez-y l’autorisation « Caméra ». Étape 4 – À l’intérieur, vous trouverez une liste des applications qui ont demandé l’autorisation d’accéder à l’appareil photo de votre téléphone. Étape 5 – Ouvrez la « Appareil photo » de l'application spécifiée
