Pivotal Knowledge Base

フォローする

TeraSort Mapreduce ベンチマークの実施

環境

製品 バージョン
Pivotal HD 全バージョン

目的

TeraSortの目的はクラスタのCPU/メモリの性能を測るためである。1TB分の10バイトのASCIIキーによるデータを可能な限り最短時間でソートする。ベンチマーク結果は利用可能なクラスタリソースによって異なる。

基本ワークフロー

TeraGenの実施

TeraGenを実行するために以下のコマンドを使用する。

hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 10000000000 /teraInput

第1引数: 100 バイトの行 (10,000,000,000) 数。この例では1TB。

第2引数: 生成されたデータは指定したHDFSパス先にできる。

TeraGenではmapタスクを稼働させデータ生成する一方、reduceタスクは全く稼働しない。mapタスクのデフォルト数は"mapreduce.job.maps=2"にて定義されている。TeraGenの唯一の目的は " 10 バイトのキー  | 2 バイトのスペース | 32 バイトの ASCII/16進数 | 4 バイトのスペース | 48 バイトのダミーデータ| 4 バイトのスペース | 改行" といったフォーマットのランダムデータを1TB生成することである。

TeraSortの実施

TeraSortを実行するために以下のコマンドを使用する。

[gpadmin@hdm1 ~]$ hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort /teraInput /teraOutput
13/09/23 21:30:21 INFO mapreduce.Job: Running job: job_1379996975669_0001
.
.
13/09/23 22:25:54 INFO terasort.TeraSort: done

これでASCIIキーのデータをソートする一連のmapタスクを起動する。データの各HDFSブロック毎に1つのマップタスクがある。デフォルトでは "mapreduce.job.reduces = 1" と定義された1つのreduceタスクがある。

以下の例では、強制的に " -D mapred.reduce.tasks = 8 "として8つのreducerを用意する。クラスタの全容量を最大限利用するため、クラスタ内のノードの数に基づいて調整する必要がある。

データは1:1の割合でreduceタスク数で分割されるであろう。分割されたデータそれぞれに対してreduceタスクが実行される。

: Yahooは、親HDFSディレクトリ上で複製数を 1 に変更してTeraSortベンチマークを実行している。

TeraValidateの実施

TeraValidateを実行するために以下のコマンドを使用する。

[gpadmin@hdm1 ~]$ hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 /teraOutput /teraValidate

このコマンドは、上述の出力データを読み込み、データセット全体でkeyを昇順に並び替えることを保証する。

コメント

Powered by Zendesk