ページの先頭行へ戻る
NetCOBOL V12.0 ユーザーズガイド(Hadoop連携機能編)
FUJITSU Software

2.8.4 主キー一覧ファイル

主キー一覧ファイルは、Hadoop入力ファイルに含まれる主キーが定義されたファイルです。このファイルを作成することで、キー分布を考慮し自動的に最適な条件に振り分けたり、キーごとに異なるタスクへ振り分けたりすることができます。

主キー一覧ファイルの作成方法には、以下の2つがあります。

参考

主キー一覧ファイルはジョブ実行時に自動的にサイドデータとして各スレーブサーバに配布されます。このため、利用者がサイドデータとして指定したり、各スレーブサーバにコピーしたりする必要はありません。

主キー一覧ファイルに定義されていない主キーは、自動的にスペアReduceスクに振り分けられます。

2.8.4.1 主キー一覧ファイル作成シェルの修正

主キー一覧ファイル作成シェルは、主キー一覧ファイルを作成するHadoopジョブを実行するシェルです。

主キー一覧ファイル作成シェルは、以下のパスに格納されています。

/opt/FJSVcbl64/bin/cobmkmlist.sh

主キー一覧ファイル作成シェルには、利用するHadoopで提供されているcommons-loggingのjarファイルとhadoop-coreのjarファイルを定義する必要があります。

初めて実行する場合やHadoopのバージョンを変更する場合、Hadoop実行シェルをテキストエディタで開き、以下の行の右辺を利用可能なcommons-loggingおよびhadoop-coreのjarファイルのパスに修正してください。

class_path_log=”/usr/share/hadoop-1.2.1/lib/commons-logging-1.1.1.jar”
class_path_core=”/usr/share/hadoop-1.2.1/hadoop-core-1.2.1.jar”

注意

主キー一覧ファイル作成シェルの修正には、root権限が必要です。

デフォルトでは、commons-loggingのjarファイルとして「commons-logging-1.1.1.jar」、hadoop-coreのjarファイルとして「hadoop-core-1.2.1.jar」が定義されています。

2.8.4.2 主キー一覧ファイル作成シェルの実行

主キー一覧ファイル作成シェルには、MapReduce設定ファイルをパラメタに指定して実行します。MapReduce設定ファイルの指定を省略することはできません。

$ cobmkmlist.sh -conf  MapReduce設定ファイル

主キー一覧ファイル作成シェルは、シェルの戻り値としてジョブが成功すると「0」を、失敗すると「0以外」を返します。

主キー一覧ファイル作成シェルのジョブが成功すると、「主キー一覧ファイルの指定」に指定したディレクトリに作成されます。

主キー一覧ファイル作成シェルを実行すると、振分け機能によって性能が改善できる見込みが表示されます。

振り分け機能が有効な場合の表示例

入力ファイルのキー分布を分析した結果、自動的に最適な条件に振り分けることで性能が改善できる見込みは「80%」です。

振り分け機能が有効ではない場合の表示例

入力ファイルのキー分布を分析した結果、自動的に最適な条件に振り分けを行う効果は見込めません。

なお、ここに表示されるのはキーの分布のみを考慮した理論値であり、改善出来る見込みが「100%」と表示された場合でも、実際にはHadoopジョブのオーバヘッド等によってジョブ時間が短縮できない場合があります。

MapReduce設定ファイルで定義する情報は以下のとおりです。各設定の詳細はMapReduce設定ファイルを参照してください。

設定名

意味

指定

力ファイルの

extjoiner.input.nn.filename

Hadoop入力データファイル名 (*1)(*2)

必須

mapred.output.dir

Hadoop出力データファイル格納基準ディレクトリ名(*1)(*3)

必須

extjoiner.map.input.nn.filename

Map入力データファイル識別名(*4)

任意

extjoiner.map.output.nn.filename

Map出力データファイル識別名(*4)

任意

キー情の指定

com.fujitsu.netcobol.hadoop.sortkey.nn.main

Shuffle&sortで使用する主キーの情報

必須

主キー一覧ファルの指定

extjoiner.mainkeylist

主キー一覧ファイルのファイル名(*1)

必須

Mapアプリケーションの指定

extjoiner.map.streamprocessor.nn

Mapアプリケーション名(*5)

任意

アプリケーションの再実行を行う復帰値のしきい値

extjoiner.command.retryexitstatus

Mapアプリケーションから返される復帰値により、Mapアプリケーションの再実行を行うかどうかのしきい値を指定します

任意

環境変数の指定

extjoiner.map.environment

Mapアプリケーションの環境変数を指定します

任意

ファイル編成の指定

extjoiner.input.nn.format

Hadoop入力データファイルのファイル編成

任意

extjoiner.map.output.nn.format

Map出力データファイルのファイル編成

任意

レコード順固定長ファイルのレコード長の指定

extjoiner.input.nn.recordlength

Hadoop入力データファイルのレコード長

任意

extjoiner.map.output.nn.recordlength

Map出力データファイルのレコード長

任意

レコード順可変長ファイルのレコード長情報ファイルの指定

extjoiner.input.nn.recinfdir

Hadoop入力データファイルのレコード長情報ファイルの格納ディレクトリ名(*1)

任意

行順ファイルの文字コードの指定

extjoiner.input.nn.codeset

Hadoop入力データファイルの文字コード

任意

extjoiner.map.output.nn.codeset

Map出力データファイルの文字コード

任意

CSV式データいの指定

extjoiner.csv.separator

CSVデータのセパレータを指定する

任意

extjoiner.partitioner.csv.padding

CSVデータの振り分け処理における主キーの空白の扱い

任意

extjoiner.csv.floatfield

浮動フィールド指定

任意

(*1):DFS上のパス名を指定します。

(*2):ディレクトリ名を指定することもできます。ディレクトリを指定した場合、そのディレクトリ内のファイルすべてが入力ファイルとして扱われます。

(*3):主キー一覧ファイル作成シェルから実行されるHadoopジョブが一時的に作業用ディレクトリとして使用します。主キー一覧ファイル作成シェルの終了後、自動的に削除されます。

(*4):Mapアプリケーションで使用しているファイル識別名を指定します。

(*5):Mapアプリケーションで使用しているアプリケーションを指定します。

参考

主キー一覧ファイル作成シェルを実行中に「Ctrl+C」キーを入力することにより、タスクを中断させることができます。

主キー一覧ファイル作成シェルの引数には、汎用Hadoopコマンドラインオプションを指定することができます。詳細は「Hadoopジョブの実行」の参考を参照してください。

2.8.4.3 テキストエディタを使用した主キー一覧ファイルの作成

主キー一覧ファイルはCSV形式のテキストファイルです。テキストエディタなどを使用して新規作成、編集が可能です。主キー一覧ファイルには主キーの値と主キーの割合を指定します。

主キーにABCDEと、主キーの割合に50を指定した主キー一覧ファイルの例:

"ABCDE",50

主キーの値

主キーの値を指定します。主キーを複数指定している場合は、カンマで切って指定します。

主キー一覧ファイルに指定する主キーの値は、桁数を含めキー値と完全に一致させる必要があります。

主キーの値の指定には、以下の2とおりの方法があります。

  1. ダブルクォーテーションで囲んで指定する

    ファイル編成と主キーの属性が以下の時、ダブルクォーテーションで囲んで指定することができます。

    • すべてのMap出力データファイルのファイル編成が行順ファイルの場合

      英数字項目、外部10進項目、内部10進項目、CSV、CSVN

    • Map出力データファイルのファイル編成に、行順ファイル以外のファイル編成をひとつでも含む場合

      外部10進項目、内部10進項目

  2. バイナリ値で指定する

    ダブルクォーテーションで囲んで指定できない主キーの値のみ、バイナリ値で指定することができます。プレフィックスに「0x」を付加してバイナリ値(0~F)で指定します。

主キーの割合

主キーの割合または件数を数値で指定します。

割合は、最適なタスクの実行をスケジュールするため利用されます。

Map出力データファイルのファイル編成が行順ファイルで、主キーに英数字項目(文字)と、符号つき外部10進項目を指定した場合の主キー一覧ファイル

; この行はコメントです
"CCCCC","+1234",30000
"AAAAA","+0000",7000
"BBBBB","-1234",50000

Map出力データファイルのファイル編成が行順ファイルで、主キーに英数字項目(バイナリ値)と、符号なし内部10進項目を指定した場合の主キー一覧ファイル

; この行はコメントです
0xFFFDF3,"01234",30000
0xFEFDF1,"00000",7000
0xFFFDF2,"01234",50000

注意

  • 主キー一覧ファイルの文字コードは、Unicode(UTF-8)で作成する必要があります。

  • 主キー一覧ファイルの改行文字は、1バイトの改行コード(0x0A)で作成する必要があります。

  • 主キー一覧ファイルは、BOM(Byte Order Mark)付きUnicode(UTF-8)、BOMなしUnicode(UTF-8)のどちらでも利用可能です。

  • 主キー一覧ファイルの行の先頭1バイトがセミコロン(;)のとき、その行の先頭から改行までの間はコメントとして認識されます。

  • 内部10進項目は、1バイトあたり2桁の数字が含まれます。主キー一覧ファイルに内部10進項目をダブルクォーテーションで囲んで指定する場合、上位桁に0を補って整数の桁数(符号を除く)を奇数桁で指定してください。

  • 主キー一覧ファイルには、主キーの値と主キーの割合のみを指定できます。コメント行以外には、空白などの文字を含めることはできません。

  • 主キー一覧ファイルに主キーの値をダブルクォーテーションで囲んで指定する場合で、キーの値にダブルクォーテーションを含む場合には、キーの値のダブルクォーテーションを2重にする必要があります。