GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu16.04でHadoopMapReduceプログラムを実行する方法

このブログでは、MapReduceプログラムを実行する方法を紹介します。 MapReduceはApacheHadoopのコア部分の1つであり、ApacheHadoopの処理レイヤーです。したがって、MapReduceプログラムの実行方法を説明する前に、MapReduceについて簡単に説明します。

MapReduceは、大規模なデータセットを並列処理するためのシステムです。 MapReduceはデータを結果に還元し、データの要約を作成します。 mapreduceプログラムには、マッパーとレデューサーの2つの部分があります。マッパーが作業を終了すると、レデューサーのみが開始します。

マッパー: 入力キー/値ペアを一連の中間キー/値ペアにマップします。

レデューサー: キーを共有する中間値のセットを、より小さな値のセットに減らします。

基本的に、wordcount mapreduceプログラムでは、入力ファイル(任意のテキストファイル)を入力として提供します。 mapreduceプログラムが起動すると、実行されるプロセスは次のとおりです。

分割: 入力ファイルの各行を単語に分割します。

マッピング: これはキーと値のペアを形成します。ここで、wordはキーで、1は各キーに割り当てられた値です。

シャッフル: 共通のキーと値のペアがグループ化されます。

削減: 類似のキーの値が合計されます。

MapReduceプログラムの実行

MapReduceプログラムはJavaで書かれています。そして、ほとんどの場合、EclipseIDEは開発者によるプログラミングに使用されます。そのため、このブログでは、mapreduceプログラムをEclipse IDEからjarファイルにエクスポートし、Hadoopクラスターで実行する方法を紹介します。

MapReduceプログラムはEclipseIDEにあります。

このMapReduceプログラムをhadoopクラスターで実行するために、プロジェクトをjarファイルとしてエクスポートします。 Eclipse ideで[ファイル]オプションを選択し、[エクスポート]をクリックします。 Javaオプションで、Jarファイルを選択し、「次へ」をクリックします。

Wordcountプロジェクトを選択し、jarファイルのパスと名前を指定します。wordcount.jarを保持しています。[次へ]を2回クリックします。

次に、[参照]をクリックしてメインクラスを選択し、最後に[完了]をクリックしてjarファイルを作成します。以下のような警告が表示された場合は、[OK]をクリックしてください。

Hadoopクラスターが稼働しているかどうかを確認します。

コマンド: jps

hadoop@hadoop-VirtualBox:~$ jps

3008 NodeManager

3924 Jps

2885 ResourceManager

2505 DataNode

3082 JobHistoryServer

2716 SecondaryNameNode

2383 NameNode

hadoop@hadoop-VirtualBox:~$

単語数プログラム用のHDFSへの入力ファイルがあります。

hadoop@hadoop-VirtualBox:~$ hdfs dfs -put input /

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /input

This is my first mapreduce test

This is wordcount program

hadoop@hadoop-VirtualBox:~$

次に、以下のコマンドを使用してwordcount.jarファイルを実行します。

注: wordcount.jarをエクスポートするときにメインクラスを選択したので、コマンドでメインクラスについて言及する必要はありません。

コマンド: hadoop jar wordcount.jar / input / output

hadoop@hadoop-VirtualBox:~$ hadoop jar wordcount.jar /input /output

16/11/27 22:52:20 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:
8032

16/11/27 22:52:22 WARN mapreduce.JobResourceUploader: Hadoop command-line option 
parsing not performed. Implement the Tool interface and execute your application 
with ToolRunner to remedy this.

16/11/27 22:52:27 INFO input.FileInputFormat: Total input paths to process : 1

16/11/27 22:52:28 INFO mapreduce.JobSubmitter: number of splits:1

16/11/27 22:52:29 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_14802
67251741_0001

16/11/27 22:52:32 INFO impl.YarnClientImpl: Submitted application application_14802
67251741_0001

16/11/27 22:52:33 INFO mapreduce.Job: The url to track the job: http://hadoop-Virtu
alBox:8088/proxy/application_1480267251741_0001/

16/11/27 22:52:33 INFO mapreduce.Job: Running job: job_1480267251741_0001

16/11/27 22:53:20 INFO mapreduce.Job: Job job_1480267251741_0001 running in uber mo
de : false

16/11/27 22:53:20 INFO mapreduce.Job:  map 0% reduce 0%

16/11/27 22:53:45 INFO mapreduce.Job:  map 100% reduce 0%

16/11/27 22:54:13 INFO mapreduce.Job:  map 100% reduce 100%

16/11/27 22:54:15 INFO mapreduce.Job: Job job_1480267251741_0001 completed 
successfully

16/11/27 22:54:16 INFO mapreduce.Job: Counters: 49

          File System Counters

                    FILE: Number of bytes read=124

                    FILE: Number of bytes written=237911

                    FILE: Number of read operations=0

                    FILE: Number of large read operations=0

                    FILE: Number of write operations=0

                    HDFS: Number of bytes read=150

                    HDFS: Number of bytes written=66

                    HDFS: Number of read operations=6

                    HDFS: Number of large read operations=0

                    HDFS: Number of write operations=2

          Job Counters

                    Launched map tasks=1

                    Launched reduce tasks=1

                    Data-local map tasks=1

                    Total time spent by all maps in occupied slots (ms)=21062

                    Total time spent by all reduces in occupied slots (ms)=25271

                    Total time spent by all map tasks (ms)=21062

                    Total time spent by all reduce tasks (ms)=25271

                    Total vcore-milliseconds taken by all map tasks=21062

                    Total vcore-milliseconds taken by all reduce tasks=25271

                    Total megabyte-milliseconds taken by all map tasks=21567488

                    Total megabyte-milliseconds taken by all reduce tasks=25877504

          Map-Reduce Framework

                    Map input records=2

                    Map output records=10

                    Map output bytes=98

                    Map output materialized bytes=124

                    Input split bytes=92

                    Combine input records=0

                    Combine output records=0

                    Reduce input groups=8

                    Reduce shuffle bytes=124

                    Reduce input records=10

                    Reduce output records=8

                    Spilled Records=20

                    Shuffled Maps =1

                    Failed Shuffles=0

                    Merged Map outputs=1

                    GC time elapsed (ms)=564

                    CPU time spent (ms)=4300

                    Physical memory (bytes) snapshot=330784768

                    Virtual memory (bytes) snapshot=3804205056

                    Total committed heap usage (bytes)=211812352

          Shuffle Errors

                    BAD_ID=0

                    CONNECTION=0

                    IO_ERROR=0

                    WRONG_LENGTH=0

                    WRONG_MAP=0

                    WRONG_REDUCE=0

          File Input Format Counters

                    Bytes Read=58

          File Output Format Counters

                    Bytes Written=66

hadoop@hadoop-VirtualBox:~$

プログラムが正常に実行されたら、HDFSに移動し、出力ディレクトリ内のパーツファイルを確認します。

以下は単語数プログラムの出力です。

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /output/part-r-00000

 This    2
 first     1
 is        2
 mapreduce   1
 my      1
 program        1
 test     1
 wordcount     1
 hadoop@hadoop-VirtualBox:~$

結論

この例はJavaであり、PythonでMapReduceプログラムを作成することもできます。 Ubuntu16.04のHadoopクラスターでHadoopMapReduceプログラムを正常に実行しました。他のLinux環境でMapreduceプログラムを実行する手順は同じです。プログラムを実行する前に、Hadoopクラスターが稼働していること、および入力ファイルがHDFSに存在していることを確認してください。


Ubuntu
  1. Ubuntuでスワップファイルを追加する方法

  2. UbuntuでCプログラムをコンパイルして実行する方法

  3. Ubuntuサーバーに1つのGUIプログラムをインストールする方法は?

  1. Ubuntu18.04でホスト名を変更する方法

  2. Ubuntu18.04または20.04にHadoopをインストールする方法

  3. g++ を Ubuntu にインストールする方法

  1. UbuntuLinuxでファイルを削除する方法

  2. UbuntuでHadoopマルチノードクラスターをセットアップする方法

  3. UbuntuLinuxでJarファイルを実行する方法