Es-hadoop-hadoop-mapreduce

提供:Dev Guides
移動先:案内検索

Hadoop-MapReduce

MapReduce es un marco con la que podemos escribir aplicaciones para procesar grandes cantidades de datos、paralelamente、en grandes grupos de componentes de manera confiable。

MapReduce¿Quées?

MapReduceは、Javaで処理モデルを作成したり、コンピュータのモデルを作成したりすることができます。 エルアルゴリトモMapReduce contiene dos tareas importantes、サーベルMapa yレデューサー。 マトマ・コンマト・デ・ダトス・イ・セ・・・コンビビリ・・・エン・・オトロ・コンコントト・デ・ダトス、エン・エル・ケ・ロス・ロス・エレモスおよびディバイデン・エン・トゥプラ(パレス・クラベ/バロール)。 segundo lugar、reducir tarea、que toma la salida de un mapa como entrada y combina los datos tuplas en un conjuntomáspequeñode tuplas。 Map of la secuencia de MapReduceエルノムブレインプリカ、ラレドゥッシオンセラリザシエンプレデスプースデケスエルマパ。

MapReventプリンシパルベンタヤは、エスカレーターのプロセスを停止し、ノードのデータを処理します。 原型のMapReduce、原始主義の息子の地図、および地図の作成。 アプリケーションの開発と管理は、簡単に行うことはできません。 Pero、マップ、アプリケーションのマップ、マップの縮小、アプリケーションの作成、ドキュメントの作成、マイルの設定、および設定の作成 Esta escalabilidad sencilla es lo que haatraídoa muchos programadores a usar el modelo MapReduce。

エルアルゴリトモ

  • Paradigma MapReduceで一般的なバサとエンデバーエルオルデナドールドンレジデントロスダトス。
  • MapReduceのプログラムは、セイバーであるエタパスとエタパスです:mapa etapa、shuffle、y reducir。
  • Mapa etapa :トラバホの地図とプロテサーロスダトスデエントラーダの地図。 一般的には、Hadoop(HDFS)のアーカイブとエンターテインメントのアルマシーナとアルマシーナのアーキテクチオンアーカイブとエンタテインメントの両方に対応しています。 エル・アーキボ・デ・エントラダ・セ・パサ・ア・ラ・ファンシオン・マップ・リーナ・ポル・リーニア。 エルマッパープロセサロスダトスアンドクレアバリオスペケニョスフラグメントスデダトス。
  • Reducir etapa :Esta etapa es lacombinaciónde la reproducciónaleatoria *y la * etapa Reducir。 ラ・ピエザ・デ・トラバホesラ・デ・プロセサルロス・ダトス・ケ・レガン・デスデ・エル・マパ。 ラボラシオン・デ・プロセソ・デ・プロボソシオン、プロダッシオン・デ・ラ・プロダッチオン・ジェネレーション、HDFS
  • デュランテエルトラバホ、Hadoop MapReduceの環境マップ、およびタレス、ロサンゼルスの通信担当者など
  • エルマルコデトラバホアドミントラトドスロスデタルズデロスダトスデタレアステイルズコモズラエリミシオンデラスタレアス、Yコピアデロスダトスアントドエルクリストアンテルロスノドス
  • ラ・マヨリア・デ・ロス・インフォラティコス・セ・レヴァ、カボ・アン・ロス・ノドス・デ・ダトス・エン・ロス・ディスコ・ロケールズ・エル・レ・トラフィコ・デ・ラ・レッド
  • ラスタレアスアシグナダス、エルグルポレコピラ、ロスダトスデフォルスウンリザルタドアデクアド、ロエンビアデヴエルタアルサービダーハドープ。

MapReduceアルゴリズム

Las entradas y salidas(Java)

El MapReduce marco funciona en <key、value> pares、es decir、el marco考慮事項que la entrada en el trabajo como un conjunto de <key、value> pares yproduce un un conjunto de etiquetas <key、value> de la salida del trabajo 、posiblemente de distintos tipos。

La clave y el valor de las clases deben ser serializados por el marco y por lo tanto、necesidad de aplicar la Escritura interfaz。 Además、las clases clave tienen que aplicar la interfaz para facilitar Writable-Comparable ordenar por el marco。 MapReduce trabajoのヒント:(Entrada)<k1、v1>→ map→ <k2、v2>→ reduce→ <k3、v3>(salida)。

Entrada Salida
Mapa <k1, v1> lista (<k2, v2>)
Reducir <k2, lista(v2)> lista (<k3, v3>)

Terminología

  • * Cargaútil*-Aplicaciones aplicar el mapa y reduzca las funciones y forman elnúcleodel trabajo。
  • Mapa -Mapa mapas la entradaがclave/valorを意味します。
  • NamedNode -Hadoop分散ファイルシステム(HDFS)を使用します。
  • DataNode -変換の前にデータを表示します。
  • MasterNode JobTracker-トラバジョデロスクライアントのペチコーンを使用したジョブの実行。
  • SlaveNode -Mapa y Reducirのプログラムプログラムを実行します。
  • JobTracker -ロストラバヨスとラスアギアトラバホスはタレアトラッカーです。
  • Tarea Tracker -タリア地域の最新情報がJobTrackerに通知されます。
  • Trabajo :マッピングとリコンダクターの統合とデータの統合。
  • Tarea :地図と地図の作成者。
  • Tarea intento -SlaveNode以外の特定の領域に固有の特定の領域。

Escenario de ejemplo

継続的な組織の組織的な関係。 contiene el consumoeléctricomensual y el promedio anual de diferentesaños。

Jan Feb Mar Apr Mayo Jun Jul Ago Sep Oct Nov Dec Avg
1979 23 23 2 43 24 25 26 26 26 26 25 26 25
1980 26 27 28 28 28 30 31 31 31 30 30 30 29
1981 31 32 32 32 33 34 35 36 36 34 34 34 34
1984 39 38 39 39 39 41 42 43 40 39 38 38 40
1985 38 39 39 39 39 41 41 41 00 40 39 39 45

Si los datos anteriores no se da da como entrada、tenemos que escribir aplicaciones para procesar y producir resultados tales como encontrar elañode usomáximo、añode usomínimo、yasísucesivamente。 レジストラのプログラムを作成します。 簡単に説明されているように、プロデューサーは結果を記録します。

シン・エンバーゴ、クレタ・ケ・デ・ロス・ダトス・ケ・レプレ・ア・エル・コンスモ・エレクトリコ・デ・トドス・ロス・グランデス・セクターズ・デ・ウン・エスタード、特にデ・デ・ス・フォルマシオン。

Al escribir aplicaciones para procesar esos datos por lotes、

  • Quetendráunmontónde tiempo para que se ejecute。 *赤と黒のハバナ・グラント・カンティダード・ラ・クアンド・ノス・ムーブモス・ロス・ダトス・デ・デ・デ・オリ・エン・エル・サービデバー・デ・ラ・レッド・イ・アシ・サシバメント。

Para Resolverは、MapReduceフレームワークの問題を解決します。

ダトスデエントラダ

Los datos anteriores se guardan como* ejemplo.txtand * dada como entrada。 継続的なエル・アーキボ・デ・ヴェト・コム・セ・ミューエストラ。

1979   23   23   2   43   24   25   26   26   26   26   25   26  25
1980   26   27   28  28   28   30   31   31   31   30   30   30  29
1981   31   32   32  32   33   34   35   36   36   34   34   34  34
1984   39   38   39  39   39   41   42   43   40   39   38   38  40
1985   38   39   39  39   39   41   41   41   00   40   39   39  45

イェメンプロのプログラム

MapReduceフレームワークを使用した継続的なミューエスタプログラミングプログラムです。

package hadoop;

import java.util.*;

import java.io.IOException;
import java.io.IOException;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;

public class ProcessUnits
{
  //Mapper class
   public static class E_EMapper extends MapReduceBase implements
   Mapper<LongWritable ,/*Input key Type */
   Text,               /*Input value Type*/
   Text,               /*Output key Type*/
   IntWritable>       /*Output value Type*/
   {

     //Map function
      public void map(LongWritable key, Text value,
      OutputCollector<Text, IntWritable> output,
      Reporter reporter) throws IOException
      {
         String line = value.toString();
         String lasttoken = null;
         StringTokenizer s = new StringTokenizer(line,"\t");
         String year = s.nextToken();

         while(s.hasMoreTokens())
            {
               lasttoken=s.nextToken();
            }

         int avgprice = Integer.parseInt(lasttoken);
         output.collect(new Text(year), new IntWritable(avgprice));
      }
   }


  //Reducer class
   public static class E_EReduce extends MapReduceBase implements
   Reducer< Text, IntWritable, Text, IntWritable >
   {

     //Reduce function
      public void reduce( Text key, Iterator <IntWritable> values,
         OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException
         {
            int maxavg=30;
            int val=Integer.MIN_VALUE;

            while (values.hasNext())
            {
               if((val=values.next().get())>maxavg)
               {
                  output.collect(key, new IntWritable(val));
               }
            }

         }
   }


  //Main function
   public static void main(String args[])throws Exception
   {
      JobConf conf = new JobConf(Eleunits.class);

      conf.setJobName("max_eletricityunits");
      conf.setOutputKeyClass(Text.class);
      conf.setOutputValueClass(IntWritable.class);
      conf.setMapperClass(E_EMapper.class);
      conf.setCombinerClass(E_EReduce.class);
      conf.setReducerClass(E_EReduce.class);
      conf.setInputFormat(TextInputFormat.class);
      conf.setOutputFormat(TextOutputFormat.class);

      FileInputFormat.setInputPaths(conf, new Path(args[0]));
      FileOutputFormat.setOutputPath(conf, new Path(args[1]));

      JobClient.runJob(conf);
   }
}

プログラムの保護ProcessUnits.java。プログラムの継続性を説明します。

CompilaciónyEjecucióndel Programa Unidades de proceso

スポンガモス・ケ・エスタモス・アン・エル・ディレクター・プリンシパル・デ・ヌ・ウスアリオ・ハドープ(e.g./home/hadoop)。

シガロスパソケスショーインディカンは、前のプログラムと同様の連続したパラグラフです。

手順1

El comando siguiente es crear un directorio para almacenar el compilado las clases de java。

$ mkdir units

手順2

ダウンロード** Hadoop-core-1.2.1.jar、* MapReduceに対応したユーティリティを使用してください。 訪問者は、http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/1.2.1をダウンロードしてください。 Supongamos que el archivo .exeダウンロードes /home/hadoop/. *

手順3

Los siguientes comandos se utilizan para laelaboraciónde las* ProcessUnits.java * programa java y crear una jarra para el programa。

$ javac -classpath hadoop-core-1.2.1.jar -d units ProcessUnits.java
$ jar -cvf units.jar -C units/.

手順4

HDFSを使用するためのコマンドラインコマンドです。

$HADOOP_HOME/bin/hadoop fs -mkdir input_dir

パソ5

エル・アーキボ・デ・コルド・エル・アーキボ・デ・エントラダ・ラマドサンプル.txtエル・ディレクター・デ・エントラダ・デ・HDFS。

$HADOOP_HOME/bin/hadoop fs -put/home/hadoop/sample.txt input_dir

手順6

エル・アーキテクト・デ・ユティリザ・パラ・ベリフィカル・ロス・アーキボス・アンド・エル・ディレクター・デ・エントラーダ。

$HADOOP_HOME/bin/hadoop fs -ls input_dir/

手順7

エルユナイテッドコマースショーアユーティリザパラエイプリカシオンエレユニットマックステニエンドエンロスロスアーキボスデエントラダエンエルディレクターリオデエントラダ。

$HADOOP_HOME/bin/hadoop jar units.jar hadoop.ProcessUnits input_dir output_dir

Espere un momento hasta que el archivo es ejecutado。 Despuésde laejecución、como se muestra acontinuación、la salidacontendráelnúmerode divisiones、elnúmerode tareas mapa、elnúmerode pieza tareasなど

INFO mapreduce.Job: Job job_1414748220717_0002
completed successfully
14/10/31 06:02:52
INFO mapreduce.Job: Counters: 49
File System Counters

FILE: Number of bytes read=61
FILE: Number of bytes written=279400
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=546
HDFS: Number of bytes written=40
HDFS: Number of read operations=9
HDFS: Number of large read operations=0
HDFS: Number of write operations=2 Job Counters


   Launched map tasks=2
   Launched reduce tasks=1
   Data-local map tasks=2
   Total time spent by all maps in occupied slots (ms)=146137
   Total time spent by all reduces in occupied slots (ms)=441
   Total time spent by all map tasks (ms)=14613
   Total time spent by all reduce tasks (ms)=44120
   Total vcore-seconds taken by all map tasks=146137

   Total vcore-seconds taken by all reduce tasks=44120
   Total megabyte-seconds taken by all map tasks=149644288
   Total megabyte-seconds taken by all reduce tasks=45178880

Map-Reduce Framework

Map input records=5
   Map output records=5
   Map output bytes=45
   Map output materialized bytes=67
   Input split bytes=208
   Combine input records=5
   Combine output records=5
   Reduce input groups=5
   Reduce shuffle bytes=6
   Reduce input records=5
   Reduce output records=5
   Spilled Records=10
   Shuffled Maps =2
   Failed Shuffles=0
   Merged Map outputs=2
   GC time elapsed (ms)=948
   CPU time spent (ms)=5160
   Physical memory (bytes) snapshot=47749120
   Virtual memory (bytes) snapshot=2899349504
   Total committed heap usage (bytes)=277684224

File Output Format Counters

   Bytes Written=40

手順8

エル・シギエンテ・コマンド・アンド・ユーティリザ・パラ・ベリフィカル・ロス・アーキボス・結果物デ・ラ・カペラ・デ・サライダ。

$HADOOP_HOME/bin/hadoop fs -ls output_dir/

手順9

エル・シギエンテ・コマンド・ユーティリティ・パラ・ベル・エル・リザルト・アン・アン・ラ Part-00000 アーカイブ。 HDFSによるアーカイブ。

$HADOOP_HOME/bin/hadoop fs -cat output_dir/part-00000

MapReduceプログラムによる一般的な継続的なサービス。

1981    34
1984    40
1985    45

手順10

エル・シギエンテ・コマンド・セ・ユーティリザ・パラ・コピア・ラ・カペラ・デ・サリダ・デ・ロスHDFSエン・エル・システマ・デ・アーキヴォス・ローカル・パラ・アナリザー。

$HADOOP_HOME/bin/hadoop fs -cat output_dir/part-00000/bin/hadoop dfs get output_dir/home/hadoop

Comandos重要

Hadoop Todos los comandos son invocados por el * $ HADOOP_HOME/bin/hadoop *。 Ejecuta el script Hadoop sin argumentos imprime ladescripciónde todos los comandos。

使用法:hadoop [--config confdir] COMANDO

ラシギエンテタブラデタララスオプシオンディスポナブルズアンドスデスクリプション。

Opciones Descripción
Namenode -formato La DFS Formatos archivos.
Secondarynamenode Ejecuta el DFS namenode secundario.
Namenode Ejecuta el DFS namenode.
Datanode Ejecuta un DFS datanode.
Dfsadmin Ejecuta un DFS cliente admin.
Mradmin Ejecuta un Map-Reduce cliente admin.
Fsck Ejecuta una utilidad de comprobación de archivos.
Fs Archivos genéricos se ejecuta un cliente usuario.
Equilibradora Ejecuta un balanceo del cluster utilidad.
oiv Se aplica el visor sin conexión fsimage a un fsimage.
Fetchdt Obtiene un token de la delegación NameNode.
Jobtracker Ejecuta el trabajo MapReduce Tracker nodo.
Tubos Tubos se ejecuta un trabajo.
Tasktracker Ejecuta una tarea MapReduce Tracker nodo.
Historyserver Historial de trabajo se ejecuta servidores como un demonio independiente.
Trabajo Manipula los trabajos MapReduce.
Cola Obtiene información sobre JobQueues.
Versión Imprime el número de versión.
jar <jar> Se ejecuta un archivo jar.
distcp <srcurl> <desturl> Copia el archivo o directorios recursivamente.
distcp2 <srcurl> <desturl> DistCp versión 2.
Archive -archiveName NOMBRE -p Hadoop crea un archivo.
<parent path> <src>* <dest>
Classpath. Imprime la ruta de la clase necesaria para obtener el Hadoop jar y las bibliotecas necesarias.
Daemonlog Obtener/Establecer el nivel de registro para cada demonio

マップインタラクションコンロストラバホスMapReduce

ウソ:hadoop job [GENERIC_OPTIONS]

Las siguientes son las opcionesgenéricasdisponibles on Hadoop trabajo。

GENERIC_OPTIONS Descripción
-submit <job-file> Envía el trabajo.
Estado <job-id> Imprime el mapa y reducir porcentaje de finalización y contadores de trabajos.
Contador <id de trabajo> <group-name> <countername> Imprime el valor del contador.
-Matar <id de trabajo> Mata el trabajo.
-Eventos <id de trabajo> <fromevent- #> < # -de eventos> Imprime las citas recibidas por los detalles jobtracker para el rango dado.
-Historia [todos] <jobOutputDir> - historia < jobOutputDir> Imprime los detalles del trabajo, error y mató detalles punta. Más detalles sobre el trabajo, como tareas y éxito los intentos realizados para cada tarea se pueden ver mediante la especificación de la opción [todos].
-List [todos] Muestra todos los trabajos. -List muestra sólo los trabajos que todavía no se han completado.
-Matar tarea <tarea-id> Mata a la tarea. Muertas las tareas no se imputarán a intentos fallidos.
-No-tarea <tarea-id> Falla la tarea. Las tareas no se imputarán a
Intentos fallidos.
De prioridad <id de trabajo> <prioridad> Cambia la prioridad del trabajo. Los valores de prioridad son permitidos VERY_HIGH, ALTA, NORMAL, BAJA, VERY_LOW

Para ver el estado de trabajo

$ $HADOOP_HOME/bin/hadoop job -status <JOB-ID>
e.g.
$ $HADOOP_HOME/bin/hadoop job -status job_201310191043_0004

Para ver la historia de salida del trabajo-dir

$ $HADOOP_HOME/bin/hadoop job -history <DIR-NAME>
e.g.
$ $HADOOP_HOME/bin/hadoop job -history/user/expert/output

パラマタルエルトラバホ

$ $HADOOP_HOME/bin/hadoop job -kill <JOB-ID>
e.g.
$ $HADOOP_HOME/bin/hadoop job -kill job_201310191043_0004