ユーザーズガイド Hadoop連携機能編 -...

66
J2UL-1930-01Z0(00) 201410Linux(64) FUJITSU Software NetCOBOL V11.0 ユーザーズガイド Hadoop連携機能編

Transcript of ユーザーズガイド Hadoop連携機能編 -...

Page 1: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

J2UL-1930-01Z0(00)2014年10月

Linux(64)

FUJITSU SoftwareNetCOBOL V11.0

ユーザーズガイドHadoop連携機能編

Page 2: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

まえがき

Hadoop連携機能は、Interstage Big Data Parallel Processing ServerまたはApache Hadoopと連携して動作します。

Hadoop連携機能の利用にあたっては、Interstage Big Data Parallel Processing ServerおよびApache Hadoopの知識が必要です。

参照

・ 「Interstage Big Data Parallel Processing Server」の詳細は、“Interstage Big Data Parallel Processing Serverユーザーズガイド”を参

照してください。

・ Apache Hadoop の詳細および利用方法は、<http://hadoop.apache.org/>を参照してください。

NetCOBOLシリーズについて

NetCOBOLシリーズの 新情報については、富士通のサイトをご覧ください。

http://software.fujitsu.com/jp/cobol/

商標について

・ Linuxは、Linus Torvalds氏の米国およびその他の国における登録商標または商標です。

・ Red Hat、RPMおよびRed Hatをベースとしたすべての商標とロゴは、Red Hat, Inc.の米国およびその他の国における登録商標ま

たは商標です。

・ Apache Hadoop、Hadoop、HDFSはApache Software Foundation の米国およびその他の国における登録商標または商標です。

・ その他の会社名または製品名は、それぞれ各社の商標または登録商標です。

略語表記について

本書では、製品の名称を以下のように略記しています。あらかじめご了承ください。

正式名称 略称

Red Hat(R) Enterprise Linux(R) 6 (for Intel64)

Red Hat(R) Enterprise Linux(R) 7 (for Intel64)

Linux

・ 「Linux」64ビットモードを指す場合は「Linux(64)」と表記します。

本書の目的

本書は、Hadoop連携機能を利用して作成したCOBOLプログラムの運用方法について説明しています。

本書の対象読者

本書は、Hadoop連携機能を利用して作成したCOBOLプログラムを運用される方を対象としています。

お願い

・ 本書を無断で他に転載しないようお願いします。

・ 本書は予告なしに変更されることがあります。

輸出管理規制について

本ドキュメントを輸出または第三者へ提供する場合は、お客様が居住する国および米国輸出管理関連法規等の規制をご確認のうえ、

必要な手続きをおとりください。

- i -

Page 3: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2014年10月

Copyright 2012-2014 FUJITSU LIMITED

- ii -

Page 4: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

目 次

第1章 概要................................................................................................................................................................................ 11.1 MapReduceとは................................................................................................................................................................................... 11.2 MapReduceフレームワークの動作...................................................................................................................................................... 21.3 Hadoop連携機能の特徴と概要.......................................................................................................................................................... 3

1.3.1 Hadoop入力データファイル......................................................................................................................................................... 51.3.2 Mapタスク......................................................................................................................................................................................51.3.3 Shuffle&sort..................................................................................................................................................................................51.3.4 Reduceタスク................................................................................................................................................................................. 51.3.5 Hadoop出力データファイル......................................................................................................................................................... 6

1.4 Hadoop連携機能に適用可能な業務................................................................................................................................................. 61.4.1 レコードの単純加工を行う処理................................................................................................................................................... 61.4.2 レコードの集計処理..................................................................................................................................................................... 71.4.3 ファイル同士の突き合わせ処理.................................................................................................................................................. 8

第2章 Hadoop連携機能の使い方.............................................................................................................................................. 92.1 Interstage Big Data Parallel Processing Server連携時のシステム構成..............................................................................................92.2 Apache Hadoop連携時のシステム構成............................................................................................................................................102.3 Interstage Big Data Parallel Processing Server連携時の作業手順..................................................................................................112.4 Apache Hadoop連携時の作業手順..................................................................................................................................................132.5 MapReduceアプリケーションの開発..................................................................................................................................................14

2.5.1 Mapタスクで使用するファイル................................................................................................................................................... 142.5.2 Reduceタスクで使用するファイル...............................................................................................................................................152.5.3 レコード順可変長ファイルの利用..............................................................................................................................................162.5.4 ユーザー定義カウンタの利用....................................................................................................................................................17

2.6 MapReduceアプリケーションの運用..................................................................................................................................................192.6.1 Hadoop入力データファイルの準備........................................................................................................................................... 192.6.2 MapReduceアプリケーションの実行...........................................................................................................................................192.6.3 MapReduceアプリケーションのエラーと復帰値.........................................................................................................................19

2.7 MapReduceアプリケーションの注意事項..........................................................................................................................................202.7.1 データベースアクセス機能........................................................................................................................................................ 202.7.2 印刷機能.................................................................................................................................................................................... 202.7.3 小入出力機能............................................................................................................................................................................ 202.7.4 デバッガを使用したCOBOLアプリケーションのデバッグ方法................................................................................................. 212.7.5 タスクのタイムアウトに関する注意............................................................................................................................................. 21

2.8 Shuffle&sortの振り分け処理について............................................................................................................................................. 212.8.1 ハッシュ値によって振り分ける................................................................................................................................................... 212.8.2 キー分布を考慮し自動的に 適な条件に振り分ける..............................................................................................................212.8.3 キーごとに異なるタスクへ振り分ける......................................................................................................................................... 222.8.4 主キー一覧ファイル................................................................................................................................................................... 22

2.8.4.1 主キー一覧ファイル作成シェルの修正.............................................................................................................................. 222.8.4.2 主キー一覧ファイル作成シェルの実行.............................................................................................................................. 232.8.4.3 テキストエディタを使用した主キー一覧ファイルの作成.................................................................................................... 24

2.8.5 スペアReduceタスク.................................................................................................................................................................... 252.9 Hadoopジョブの実行......................................................................................................................................................................... 26

2.9.1 実行に必要な資源の配付......................................................................................................................................................... 272.9.1.1 Interstage Big Data Parallel Processing Serverと連携する場合......................................................................................... 272.9.1.2 Apache Hadoopと連携する場合..........................................................................................................................................27

2.10 MapReduceアプリケーションが出力するファイル........................................................................................................................... 282.11 シェルをMapReduceで実行する場合............................................................................................................................................. 282.12 MapReduce設定ファイル.................................................................................................................................................................29

2.12.1 MapReduce設定ファイルのフォーマット.................................................................................................................................. 302.12.2 MapReduce設定ファイルに指定する情報一覧.......................................................................................................................302.12.3 Hadoopジョブ名の指定............................................................................................................................................................ 322.12.4 MapReduceアプリケーションの指定.........................................................................................................................................322.12.5 アプリケーションの再実行を行う復帰値のしきい値................................................................................................................ 32

- iii -

Page 5: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.12.6 ジョブをエラーとして扱う復帰値のしきい値.............................................................................................................................332.12.7 環境変数の指定.......................................................................................................................................................................332.12.8 入出力ファイルの指定............................................................................................................................................................. 342.12.9 出力データファイル基準ディレクトリの上書きの指定............................................................................................................. 352.12.10 ファイル編成の指定............................................................................................................................................................... 352.12.11 レコード長の指定(レコード順固定長ファイルのみ).............................................................................................................362.12.12 レコード長情報ファイルの指定(レコード順可変長ファイルまたは物理順ファイルのみ)................................................... 372.12.13 文字コードの指定(行順ファイルのみ)................................................................................................................................. 372.12.14 キー情報の指定..................................................................................................................................................................... 382.12.15 CSV形式データの扱いの指定.............................................................................................................................................. 412.12.16 Map出力データファイル自動ソートの指定........................................................................................................................... 442.12.17 処理レコード件数のログを取得する...................................................................................................................................... 442.12.18 カレントディレクトリの退避の指定.......................................................................................................................................... 442.12.19 バッファサイズの指定.............................................................................................................................................................452.12.20 主キー一覧ファイルの指定....................................................................................................................................................452.12.21 一意振り分けの指定.............................................................................................................................................................. 452.12.22 一意振り分けにおけるキーの上限数の指定........................................................................................................................ 452.12.23 Mapタスク複数ファイル出力モード........................................................................................................................................45

第3章 サンプル........................................................................................................................................................................473.1 サンプル1 行順ファイルの突合せ処理............................................................................................................................................ 473.2 サンプル2 CSVファイルのフィルタリングと集計処理....................................................................................................................... 473.3 サンプル3 物理順ファイルの集計処理............................................................................................................................................ 47

第4章 トラブルシューティング....................................................................................................................................................494.1 Hadoop連携機能のエラーについて.................................................................................................................................................494.2 タスクが実行されたスレーブサーバの特定......................................................................................................................................564.3 ログの出力例と内容の確認方法...................................................................................................................................................... 56

4.3.1 ジョブ成功時の例.......................................................................................................................................................................564.3.2 ジョブ失敗時の例(実行プログラムが見つからない例)............................................................................................................574.3.3 ジョブ失敗時の例(COBOLプログラムで実行時エラーが起きている例)................................................................................ 59

索引........................................................................................................................................................................................ 61

- iv -

Page 6: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

第1章 概要

基幹バッチ処理では、近年データ量の増大によりバッチ処理に時間がかかる問題が起きています。このため、バッチ処理時間の短縮

のためにサーバの性能を増強したり、データを分割して多重処理したりするなどの対応が取られています。しかし、そのようなアプロー

チでは高価なハードウェアが必要になったり、多重処理のために新たに処理が必要になったりするなどコスト上の問題があります。

Hadoop連携機能を使用すると、逐次処理を行っていた従来のバッチ処理を、データを分割して複数のサーバで並列処理することで

バッチ処理を高速化できます。既存アプリケーションを利用できるため、高い移行性が確保されます。

これにより、高速化以外にも以下のメリットがあります。

・ 低コスト

比較的安価なサーバを多数使用して並列処理することで、経済的なシステムを構成できます。

・ 高可用性

分割されたデータは2重化されることによって信頼性が向上します。また並列処理を実行するサーバ(スレーブサーバ)が停止して

も、他のスレーブサーバが処理を代替して続行することができます。

・ スケールアウト

スレーブサーバの追加により、容易にスケールアウトできます。

Hadoop連携機能では、HadoopのMapReduceと呼ばれる機能を使って分散処理を行います。

1.1 MapReduceとは

「MapReduce」は、分割された大量のデータをクラスタで分散処理するためのプログラミングモデルおよびフレームワークです。MapReduceフレームワークでは、以下の3つのステップで分散処理を実現します。

・ Mapタスク

・ Shuffle&sort

・ Reduceタスク

MapタスクとReduceタスクは利用者が作成した任意のアプリケーションを実行することができます。

以下に、MapReduceを用いたバッチ処理の流れを示します。

伝票番号、商品名、販売数からなるデータを入力とし、各商品の合計販売数を出力する処理を例とします。

1. DFS(*)上の入力データが分割され、各Mapタスクに渡されます。([1])

2. Mapタスクでは、入力データのフィルタリングを行います。([2])

例では各レコードから集計に必要となる商品名、販売数を抽出しています。

3. 抽出したデータをShuffle&sortに渡します。([3])

4. Shuffle&sortでは、任意のデータをキーとしたレコードの集約、並べ替えが行われます。([4])

商品名をキーとしてレコードを集約したのち、

5. 販売数をキーとしてレコードを並び換えられ、各Reduceタスクに渡されます。([5])

6. Reduceタスクでは、レコードの集計処理を行います。([6])

同一商品の販売数をまとめ、合計販売数を算出します。

7. 出力データをDFSに格納します。([7])

*:DFSは連携するソフトウェアによって以下のファイルシステムを指します。

・ Interstage Big Data Parallel Processing Serverと連携する場合

Interstage Big Data Parallel Processing Serverで利用可能な独自の分散ファイルシステム。

- 1 -

Page 7: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

・ Apache hadoopと連携する場合

Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File System)。

図1.1 MapReduceのデータの流れ

1.2 MapReduceフレームワークの動作

MapReduceフレームワークでは、利用者が要求する作業の単位を「Hadoopジョブ」と呼びます。Hadoopジョブは以下の3つの要素で構

成されます。

・ 入力データ

・ MapReduceアプリケーション

・ 設定情報

このHadoopジョブを並列に分散処理できる単位に分割したものを「タスク」と呼びます。タスクにはMapタスクとReduceタスクがあります。

MapReduceフレームワークには以下の3つの機能があり、これらが連携してHadoopジョブを実行します。

・ JobClient

JobClientは利用者からのHadoopジョブの要求を受け付け、JobTrackerに送信します。

・ JobTracker

JobClientから送信されたHadoopジョブのリクエストを、分散処理に 適なタスクに分割して、各TaskTrackerに割当てます。

- 2 -

Page 8: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

・ TaskTracker

JobTrackerから割り当てられたMapタスクとReduceタスクを実行する機能です。各タスクを子プロセス上で実行します。

図1.2 MapReduceフレームワークの機能の役割

1.3 Hadoop連携機能の特徴と概要

Hadoop連携機能には、以下の特徴があります。

・ MapタスクおよびReduceタスクをそれぞれCOBOLアプリケーションとして実行することができます。

(このCOBOLアプリケーションのことを、以降MapReduceアプリケーションといいます)

・ MapReduceアプリケーションでは、COBOLのファイルをREAD/WRITE文でアクセスすることができます。

・ 複数のファイルを入力にすることができます。

MapReduceアプリケーションの入出力ファイルを以下の呼び名で表現します。

・ Hadoop入力データファイル

・ Map入力データファイル

・ Map出力データファイル

・ Reduce入力データファイル

・ Reduce出力データファイル

・ Hadoop出力データファイル

これらのファイルで利用可能なファイル編成は以下のとおりです。

・ 行順ファイル

・ レコード順ファイル

・ 物理順ファイル

これらのファイルは、MapReduceアプリケーションでアクセスするためにファイル識別名やファイル編成をあらかじめ設定ファイルに記

述しておく必要があります。この設定ファイルを「MapReduce設定ファイル」といいます。

- 3 -

Page 9: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

なお、入出力処理の対象となるファイルの割当ては、COBOLランタイムシステムが自動的に行います。このため、ファイル識別名に対

応するファイル名の指定を利用者が行う必要はありません。

参考

物理順ファイルは、富士通のメインフレーム上で動作するCOBOL85でサポートされているファイル編成です。

COBOLアプリケーションで物理順ファイルを直接入出力することはできません。このため、SIMPLIA/TF-MDPORT等を利用して

MapReduceアプリケーションでデータや文字コードの変換を行う必要があります。

注意

Hadoop連携機能で利用可能な物理順ファイルは以下の形式です。

・ 可変長レコード形式(V 形式レコード)の物理順ファイル(※)かつ、

・ BDW(Block Descriptor Word)を持たないファイルかつ、

・ RDW(Record Descriptor Word)を持つファイル。

※ 固定長レコード形式(F形式レコード)については、レコード順固定長ファイルとして利用することができます。

MapReduceアプリケーションと入出力ファイル、MapReduce設定ファイルの概念を以下の図に示します。

以降では、各ファイルとMapタスク、Shuffle&sort、およびReduceタスクについて説明します。

- 4 -

Page 10: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

1.3.1 Hadoop入力データファイル

Hadoopによって分割され各Mapタスクに渡されるファイルを「Hadoop入力データファイル」と呼びます。Hadoop入力データファイルは

分割可能なデータファイルである必要があり、トランザクションファイルやマスタファイルなどをHadoop入力データファイルに使用しま

す。

Hadoop入力データファイルはレコード単位に分割されるため、レコードどうしが依存関係をもつようなファイルは使用できません。

図1.3 Hadoop入力データファイルに利用可能なレコード定義

参考

Mapタスクに渡されるファイルは自動的に分割されますが、レコードの途中で分割されることはありません。

1.3.2 Mapタスク

Mapタスクでは、一定サイズに単純分割されたHadoop入力データファイルをCOBOLファイルとして読み込むことができます。このMapタスクに割り当てられたファイルのことを「Map入力データファイル」といいます。必要に応じてレコードを加工したあと、後続のShuffle&sortにCOBOLファイルとして渡します。この渡すファイルのことを「Map出力データファイル」といいます。

Mapタスクでは、MapReduceフレームワークによって単純に分割されたファイルが入力になります。このため、Mapタスクではすべての

レコードを一律に加工する処理など、入力データを分割して処理しても問題ないものを実装します。

参考

Mapタスクは省略することもできます。省略した場合、Hadoop入力データファイルがそのままMap出力データファイルとしてShuffle&sortに受け渡されます。

1.3.3 Shuffle&sortShuffle&sortは指定されたキーに基づき、Mapタスクから渡されたレコードを主キー単位でグループ化します。また、レコードを主キー

および副キーでソートして、ソート済レコードを後続のReduceタスクに渡します。キー情報には、複数の主キーと複数の副キーを指定

することができます。

キーにはCOBOLのデータ型、またはCSV形式データを指定できます。

参考

キー情報には、キーごとに異なる種別、順序(昇順・降順)を指定することができます。

1.3.4 Reduceタスク

Reduceタスクでは、キー単位にグループ化されたレコードをCOBOLファイルとして読み込むことができます。この読み込むファイルの

ことを「Reduce入力データファイル」といいます。

- 5 -

Page 11: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

そして必要に応じてレコードを加工したあと、COBOLファイルとして出力します。この出力するファイルのことを「Reduce出力データファ

イル」といいます。

Reduceタスクには、Shuffle&sortによって主キー単位にグループ化されたレコードが渡されます。また、レコードは主キーおよび副キー

で整列済になっています。このため、Reduceタスクではデータを集計したり、突き合わせたりする処理などを実装します。

参考

Reduceタスクは省略することもできます。省略した場合、Reduce入力データファイルがそのままReduce出力データファイルとしてファイ

ルに出力されます。

Reduceタスクを省略する場合、Hadoopのプロパティ「mapred.reduce.tasks」に「0」を指定してください。

1.3.5 Hadoop出力データファイル

各Reduceタスクから出力されるファイルを「Hadoop出力データファイル」と呼びます。Hadoop出力データファイルはReduceタスクから出

力されたCOBOLファイルです。Hadoop出力データファイルは実行されたReduceタスクごとに出力されます。

1.4 Hadoop連携機能に適用可能な業務

Hadoop連携機能は並列分散処理を行うフレームワークの特性から、適用可能な業務があります。

以下にHadoopで利用可能な業務を例として挙げます。

・ レコードの単純加工を行う処理

・ 特定のキーをもつレコードの集計処理

・ ファイル同士の突き合わせ処理

これらの例を以降で説明します。

1.4.1 レコードの単純加工を行う処理

レコードを単純加工する処理は、Mapタスクで処理することができます。以下の例では、マスタファイルを読み込み単価と個数を計算し

て、商品ごとの売上げファイルを出力しています。

- 6 -

Page 12: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

図1.4 レコードの単純加工を行う処理の例

1.4.2 レコードの集計処理

レコードを整列して集計を行っていた処理はReduceタスクで処理することができます。以下の例では、マスタファイルを商品IDで整列

した後、商品IDごとに個数を合計して、商品ごとの出荷数ファイルを出力しています。

図1.5 レコードの集計処理の例

- 7 -

Page 13: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

1.4.3 ファイル同士の突き合わせ処理

複数のファイルのレコードを整列して、キーでつきあわせる処理はReduceタスクで処理することができます。以下の例では、マスタファ

イルとトランザクションファイルを商品IDで整列したあと商品IDで付き合わせて、商品IDごとの商品名、単価、個数を記録したファイル

を出力しています。

図1.6 ファイル同士の突き合わせ処理の例

- 8 -

Page 14: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

第2章 Hadoop連携機能の使い方

本章では、Hadoop連携機能の使い方を説明します。

連携するソフトウェアによってシステム構成および作業手順が異なりますので、ご利用のソフトウェアに合わせて以下を参照してくださ

い。

・ Interstage Big Data Parallel Processing Serverと連携する場合

Interstage Big Data Parallel Processing Server連携時のシステム構成

Interstage Big Data Parallel Processing Server連携時の作業手順

・ Apache Hadoopと連携する場合

Apache Hadoop連携時のシステム構成

Apache Hadoop連携時の作業手順

2.1 Interstage Big Data Parallel Processing Server連携時のシステム構成

Interstage Big Data Parallel Processing Serverでは、以下のハードウェア構成でシステムを構築します。

・ マスタサーバ

大量のデータファイルをブロックに分けた上でファイル化(分散ファイルシステム)し、そのファイル名や保管場所を一元管理する

サーバです。また、Hadoopへの実行要求を受け付け、スレーブサーバに対して並列分散処理を実行させることができます。

・ スレーブサーバ

マスタサーバによってブロック化されたデータファイルを、複数のスレーブサーバが並列分散処理することによって、短時間に分析

処理を行うことができます。

・ 開発実行環境サーバ

並列分散を行うアプリケーション(MapReduce)の開発を容易にするPigやHiveを導入し実行するサーバです。

・ 連携サーバ

業務システム上の大量データを直接転送し、分析を行うサーバです。

・ ETERNUS

Hadoopで使用する入出力データを格納するストレージです。

また、Interstage Big Data Parallel Processing Serverでは、Hadoop分散ファイルシステム(HDFS)に加え、独自の分散ファイルシステム

(DFS)が利用できます。業務アプリケーションのデータをいったん「HDFS」に転送してから処理するHadoopに対し、独自の分散ファイ

ルシステムを利用した場合は、データ転送が不要になるため、処理時間を大幅に短縮することができます。

DFSは、Interstage Big Data Parallel Processing Serverを構成するすべてのサーバからアクセス可能な共用ストレージ領域です。

- 9 -

Page 15: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

MapReduceアプリケーションはスレーブサーバで実行されます。このため、スレーブサーバにはNetCOBOLの運用環境が必要です。

Hadoop連携機能では、開発実行環境サーバでHadoopジョブを実行します。このため、開発実行環境サーバにはNetCOBOLの運用

環境が必要です。また、開発実行環境サーバ上でCOBOLアプリケーションをビルドする場合は、開発実行環境サーバにNetCOBOLの開発・運用環境が必要です。別サーバ上でビルドしたCOBOLアプリケーションを使用する場合は、開発実行環境サーバには

NetCOBOLの運用環境のみをインストールします。

参考

スレーブサーバが複数台の場合でも、「スマートセットアップ」のクローン機能によりNetCOBOLのインストール作業を短時間に行うこと

ができます。「スマートセットアップ」については“Interstage Big Data Parallel Processing Server ユーザーズガイド”を参照してください。

2.2 Apache Hadoop連携時のシステム構成

Apache Hadoopでは、以下のハードウェア構成でシステムを構築します。

・ マスタサーバ

大量のデータファイルをブロックに分けた上でファイル化(分散ファイルシステム)し、そのファイル名や保管場所を一元管理する

サーバです。また、Hadoopへの実行要求を受け付け、スレーブサーバに対して並列分散処理を実行させることができます。

・ スレーブサーバ

マスタサーバによってブロック化されたデータファイルを、複数のスレーブサーバが並列分散処理することによって、短時間に分析

処理を行うことができます。

・ HDFS

ブロックに分けたデータファイルが格納される分散ファイルシステムです。スレーブサーバに搭載されたローカルディスクを使用し

て、HDFSを構成します。

- 10 -

Page 16: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

MapReduceアプリケーションはスレーブサーバで実行されます。このため、スレーブサーバにはNetCOBOLの運用環境が必要です。

Hadoop連携機能では、マスタサーバでHadoopジョブを実行します。このため、マスタサーバにはNetCOBOLの運用環境が必要です。

また、マスタサーバ上でCOBOLアプリケーションをビルドする場合は、マスタサーバにNetCOBOLの開発・運用環境が必要です。別

サーバ上でビルドしたCOBOLアプリケーションを使用する場合は、マスタサーバにはNetCOBOLの運用環境のみをインストールしま

す。

2.3 Interstage Big Data Parallel Processing Server連携時の作業手順

Interstage Big Data Parallel Processing Serverで、Hadoop連携機能を利用する際の作業手順を示します。

- 11 -

Page 17: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

[1] Interstage Big Data Parallel Processing Serverのシステム構築

Interstage Big Data Parallel Processing Server を導入します。1台目のスレーブサーバの導入が完了したら、手順[2]に進んでくださ

い。

[2] NetCOBOL開発環境のインストール

COBOLアプリケーションをビルドするサーバにNetCOBOLの開発・運用パッケージをインストールします。

[3] NetCOBOL運用環境のインストール

開発実行環境サーバおよび1台目のスレーブサーバにNetCOBOLの運用パッケージをインストールします。COBOLアプリケーショ

ンをビルドするサーバとして開発実行環境サーバを選択した場合は、開発実行環境サーバにNetCOBOLの運用パッケージをイン

ストールする必要はありません。

[4] NetCOBOL運用の環境設定

MapReduceアプリケーションは、マスタサーバからスレーブサーバへのリモートコマンド実行(デフォルトでは SSH)によって起動され

ます。MapReduceジョブ実行ユーザーのログインシェルに、実行に必要な情報(環境変数や権限等)を設定してください。

[5] Hadoop実行シェルの修正

利用するHadoopのバージョンに合わせて、Hadoop実行シェルを修正します。詳細は“Hadoopジョブの実行”を参照してください。

[6] スレーブサーバのクローニング

Interstage Big Data Parallel Processing Serverのクローニング機能を使用してスレーブサーバを追加します。

- 12 -

Page 18: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

クローニング機能を使用しない場合は、各スレーブサーバに対してNetCOBOL運用環境のインストールとNetCOBOL運用の環境

設定を行います。

[7] MapReduceアプリケーションの開発

MapReduceアプリケーションは、NetCOBOLの開発環境を使用して開発します。詳細は“MapReduceアプリケーションの開発”を参

照してください。

[8] Hadoopジョブの実行

Hadoop実行シェルを利用して、MapReduceアプリケーションを実行します。詳細は“Hadoopジョブの実行”を参照してください。

2.4 Apache Hadoop連携時の作業手順

Apache Hadoop環境で、Hadoop連携機能を利用する際の作業手順を示します。

[1] Apache Hadoopのシステム構築

Apache Hadoopを導入します。マスタサーバ、スレーブサーバ、HDFSの導入が完了したら、手順[2]に進んでください。

[2] NetCOBOL開発環境のインストール

COBOLアプリケーションをビルドするサーバにNetCOBOLの開発・運用パッケージをインストールします。

- 13 -

Page 19: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

[3] NetCOBOL運用環境のインストール

マスタサーバおよびスレーブサーバにNetCOBOLの運用パッケージをインストールします。COBOLアプリケーションをビルドする

サーバとしてマスタサーバを選択した場合は、マスタサーバにNetCOBOLの運用パッケージをインストールする必要はありません。

[4] NetCOBOL運用の環境設定

MapReduceアプリケーションは、マスタサーバからスレーブサーバへのリモートコマンド実行(デフォルトでは SSH)によって起動され

ます。MapReduceジョブ実行ユーザーのログインシェルに、実行に必要な情報(環境変数や権限等)を設定してください。

[5] Hadoop実行シェルの修正

利用するHadoopのバージョンに合わせて、Hadoop実行シェルを修正します。詳細は“Hadoopジョブの実行”を参照してください。

[6] MapReduceアプリケーションの開発

MapReduceアプリケーションは、NetCOBOLの開発環境を使用して開発します。詳細は“MapReduceアプリケーションの開発”を参

照してください。

[7] 入力データをHDFSへ転送

Apache Hadoopのコマンドを使用して、入力データをHDFSに転送します。

[8] Hadoopジョブの実行

Hadoop実行シェルを利用して、MapReduceアプリケーションを実行します。詳細は“Hadoopジョブの実行”を参照してください。

2.5 MapReduceアプリケーションの開発

MapReduceアプリケーションは、実行形式のアプリケーションである必要があります。このため、マルチスレッドモデルのプログラムは実

行できません。MapReduceアプリケーションを開発するにあたり、特別な翻訳オプションやリンクオプションを指定する必要はありませ

ん。

2.5.1 Mapタスクで使用するファイル

Mapタスクで使用するMap入力データファイルおよびMap出力データファイルは、COBOLランタイムシステムがCOBOLアプリケーショ

ンに対して自動的に割当てを行います。このため、あらかじめファイル識別名をMapReduce設定ファイルに指定しておく必要がありま

す。

MapタスクのCOBOLアプリケーションは、Map入力データファイルとMap出力データファイルをそれぞれ一つオープンできます。

以下の例では、異なる2つのHadoop入力データファイルを2つのCOBOLアプリに割り当ててMapタスクを実行しています。

Hadoop入力データファイル(1)をCOBOLアプリ(1)に割当て

Hadoop入力データファイル(2)をCOBOLアプリ(2)に割当て

- 14 -

Page 20: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.5.2 Reduceタスクで使用するファイル

Reduceタスクで使用するReduce入力データファイルおよびReduce出力データファイルは、COBOLランタイムシステムがCOBOLアプリ

ケーションに対して自動的に割当てを行います。このため、あらかじめファイル識別名をMapReduce設定ファイルに指定しておく必要

があります。

ReduceタスクのCOBOLアプリケーションは、Hadoop入力データファイルに指定したすべてのファイルをReduce入力データファイルとし

てオープンできます。また、複数のReduce出力データファイルをオープンすることができます。

以下の例では、異なる2つのHadoop入力データファイルを割り当ててReduceタスクを実行しています。

Shuffle&sortにキーとして数字項目を指定しグループ化しています。ReduceタスクのCOBOLアプリケーションでは、グループ化された

レコードを読み込んで、同じキーのレコードを結合しています。

- 15 -

Page 21: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.5.3 レコード順可変長ファイルの利用

Hadoop入力データファイルに「レコード順可変長ファイル」を指定する場合、あらかじめレコード長情報ファイルを作成して、そのDFS上のパスをMapReduce設定ファイルに指定する必要があります。

レコード長情報ファイルは、MapReduceフレームワークによって分割されたレコード順可変長ファイルにアクセスするために使用されま

す。

レコード長情報ファイルは、以下のシェルを実行して作成します。

コマンド形式

cobgenrecinf.sh [-v|-p] -i レコード順可変長ファイル名 -o レコード長情報ファイル出力ディレクトリ名 -b blocksize [-t maptasks]

ファイル形式の指定

Hadoop入力データファイルのファイル形式を指定します。

- Hadoop入力データファイルがレコード順可変長ファイルの場合、「-v」を指定します。

- Hadoop入力データファイルが物理順ファイルの場合、「-p」を指定します。

ファイル形式の指定を省略した場合のデフォルト値は、「-v」です。

レコード順可変長ファイルまたは物理順ファイル名

レコード順可変長ファイルまたは物理順ファイルを指定します。複数のレコード順可変長ファイルまたは物理順ファイルが格納され

たディレクトリを指定することもできます。

レコード長情報ファイル出力ディレクトリ名

レコード長情報ファイルが出力されます。このディレクトリ名を「MapReduce設定ファイル」のレコード長情報ファイルの指定に記述し

ます。

blocksize

Mapタスクに分割するデータサイズ(ブロックサイズ)をバイト単位で指定します。

- Interstage Big Data Parallel Processing Serverと連携している場合

以下のプロパティと同じ値を指定してください。

- 16 -

Page 22: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

pdfs.fs.local.block.size

- Apache Hadoopと連携している場合

以下のプロパティと同じ値を指定してください。

dfs.block.size

maptasks

Hadoop実行時にMapタスクの数を指定している場合、本引数にもMapタスクの数を指定します。Mapタスクの数はInterstage Big DataParallel Processing ServerまたはApache Hadoopの以下のプロパティに指定されています。

mapred.map.tasks

参考

MapReduceフレームワークは、Hadoop入力データファイルをブロックサイズごとに分割しMapタスクに割り当てます。

Mapタスク数が指定されている場合は、Hadoop入力データファイルをMapタスク数で分割して割り当てます。

ただし、Mapタスク数を指定した場合でも、Mapタスク数で分割したサイズがブロックサイズを超える場合は、ブロックサイズごとにMapタスクに割り当てられ、Mapタスク数の指定は無視されます。

2.5.4 ユーザー定義カウンタの利用

MapReduceアプリケーションからHadoopのユーザー定義カウンタを利用することができます。ユーザー定義カウンタを利用すると、各

MapReduceアプリケーションから出力した任意の値を集計することができます。集計した値は、ジョブが成功するとHadoop実行シェル

のコンソールに出力されます。(ジョブが失敗した場合、集計値は出力されません)

サブルーチンCOB_HADOOP_COUNTERを使用し、ユーザー定義カウンタを作成します。

呼出し形式

CALL "COB_HADOOP_COUNTER" USING データ名-1 データ名-2 データ名-3.

パラメタの説明

データ名-1

01 データ名-1 PIC X(1024).

カウンタグループ名を指定します。

データ名-2

01 データ名-2 PIC X(1024).

カウンタ名を指定します。

データ名-3

01 データ名-3 PIC S9(18) COMP-5.

カウンタ値を指定します。

インタフェース

グループ名およびカウンタ名には、カンマ(,)は使用できません。また、前置・後置空白は削除されます。

グループ名およびカウンタ名のレコード長は1024バイトに設定してください(1024文字を超えるデータが渡された場合、1024文字に切

り詰められます)。また、前置・後置空白削除後に文字列の長さが0となるような名前は指定できません。

復帰値

サブルーチンからの復帰値は、特殊レジスタPROGRAM-STATUSを使用して受け取ります。

- 17 -

Page 23: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

成功した時は0が返されます。失敗した場合の復帰値とエラーの原因は以下のとおりです。

値 意味

1 Hadoopタスクで起動したアプリケーションではないため、カウンタ情報書き出しは行われませんでした。

2 グループ名に不正な文字列が指定されています。

3 グループ名の文字列に空文字が指定されました。

4 カウンタ名に不正な文字列が指定されています。

5 カウンタ名の文字列に空文字が指定されました。

6 カウンタ情報ファイルのオープンに失敗しました。

7 カウンタ情報の書き出しに失敗しました。

注意

リンクに関する注意事項

サブルーチンCOB_HADOOP_COUNTERを使用するプログラムを作成する場合、共用ライブラリのリンク時に、librcobee.soをリンクし

てください。librcobee.soは、NetCOBOLランタイムシステムのインストールディレクトリに格納される共用ライブラリです。

COBOL以外のアプリケーションからの呼び出し

COBOL以外の言語からカウンタ情報を設定する場合、カウンタ情報設定ファイル(環境変数MAPRED_COUNTER_FILE)に、以下の

書式でカウンタ情報の追加書き込みを行ってください。

グループ名,カウンタ名,カウンタ値

例)シェルスクリプトからカウンタを利用する場合

echo “MYGROUPE, MYCOUNTER,100” >> $MAPRED_COUNTER_FILE

(グループ名=MYGROUPE カウンタ名=MYCOUNTER カウンタ値=100を設定)

書式エラー時の警告

カウンタ情報設定ファイルに直接カウンタ情報を書き込む際、書き込み書式が守られていなかった場合でも、ジョブは正常終了しま

す。この場合、カウンタ情報の集計失敗を通知するメッセージが表示され、各エラーの件数を以下のカウンタ情報として出力します。エ

ラーの詳細はタスクログを参照してください。

カウンタグループ名 カウンタ名 意味

Extjoiner.userCounter.FormatError Map.CommaNumError Mapタスクのカウンタ値の書式に誤りがあ

ります。

Map.NumberFormatException Mapタスクのカウンタ値が数値に変換でき

ませんでした。

Reduce.CommaNumError Reduceタスクのカウンタ値の書式に誤りが

あります。

Reduce.NumberFormatException Reduceタスクのカウンタ値が数値に変換

できませんでした。

注意

カウンタ情報設定ファイルにカウンタ情報を追加する際は、必ず追加書き込みモードを使用してください。追加書き込みモードを使用

せず、カウンタ情報設定ファイルを上書きすると、それまでに設定されていたカウンタ情報は消去されます。

正しくない例)

echo “MYGROUPE, MYCOUNTER,100” > $ MAPRED_COUNTER_FILE

- 18 -

Page 24: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

この場合、追加書き込みとなっていないため、これまで同タスク内で設定されたカウンタ情報がすべて削除されます。

2.6 MapReduceアプリケーションの運用

MapReduceアプリケーションの運用について以下に説明します。

2.6.1 Hadoop入力データファイルの準備

Hadoop入力データファイルは、Hadoopジョブの実行前にあらかじめDFSに格納しておく必要があります。

Hadoop入力データファイルのDFS上のパスを「MapReduce設定ファイル」に指定します。Hadoop入力データファイルのパスにディレク

トリを指定した場合、そのディレクトリ内のすべてのファイルが読み込まれます。

ファイル編成やレコードのレイアウトが異なる複数のファイルをHadoop入力ファイルにすることもできます。

図2.1 複数のディレクトリ(input01、input02)を指定する例

注意

Hadoop入力データファイルにディレクトリを指定する場合、ディレクトリ内のファイルのファイル編成、レコード長形式(固定長または可

変長)、レコード長は同一でなければなりません。

2.6.2 MapReduceアプリケーションの実行

MapReduceアプリケーションはTaskTrackerが実行します。TaskTrackerは以下の手順でMapReduceアプリケーションを実行します。

・ タスク用のローカル作業ディレクトリを作成します

・ ローカル作業ディレクトリをカレントディレクトリとして、MapReduceアプリケーションを起動します

・ MapReduceアプリケーションが終了すると、タスク用のローカル作業ディレクトリを削除します

2.6.3 MapReduceアプリケーションのエラーと復帰値

本機能では、MapReduceアプリケーションから返される復帰値の 大値をHadoop実行シェルに返します。

デフォルトではMapReduceアプリケーションから返される復帰値の 大値が「128」を超えた場合、ジョブ失敗のメッセージを出力しま

す。このときJobTrackerのステータスは成功(SUCCEEDED)となり、Hadoop出力データファイルは保持されます。

ジョブをエラーとして扱う復帰値のしきい値は、MapReduce設定情報ファイルで変更することができます。

また、アプリケーションの再実行を行う復帰値のしきい値を設定することにより、タスクごとにMapReduceアプリケーションの再実行を行

うことができます。(設定しない場合、デフォルト値は255のため再実行は行われません)

- 19 -

Page 25: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

しきい値を超える復帰値がMapReduceアプリケーションから返された場合、本機能はTaskTrackerに異常終了を通知します。TaskTrackerは、あらかじめ設定された 大試行回数分アプリケーションの再実行を繰り返しますが、同じタスクが 大試行回数分のエラーを繰り

返すと、Hadoopジョブをエラーとして終了します。このときその他の実行中のタスクは強制終了し、Hadoop出力データファイルは完了

済のタスクから出力されたものを含めて、すべて削除されます。

アプリケーションの再実行を行う復帰値のしきい値は、MapReduce設定情報ファイルで変更することができます。

2.7 MapReduceアプリケーションの注意事項

Hadoop連携機能では同じプログラムが多重で並列に動作するため、それを念頭に置いて開発する必要があります。特に既存アプリ

ケーションをそのまま移行する場合は注意が必要です。以降に機能ごとに注意点を述べます。

2.7.1 データベースアクセス機能

アプリケーションが並列で実行されるため、データベースサーバに同時アクセスが集中します。MapReduceアプリケーションの多重度

に応じた性能見積もりを行ってください。また、Hadoopでは投機的実行により、実行中のタスクと同じタスクが実行される可能性があり

ます。このため、テーブルを更新しないでください。

2.7.2 印刷機能

アプリケーションが並列で実行されるため、プリンタや帳票サーバへのアクセスが集中します。MapReduceアプリケーションの多重度に

応じた性能見積もりを行ってください。必要に応じてプリンタや帳票サーバを分割する等の対応を行ってください。

2.7.3 小入出力機能

利用可能な小入出力機能は以下のとおりです。

機能 入出力先 利用可否 備考および注意事項

ACCEPT 標準入力 × コンソールが存在しないため、標準入力からデータを読み込むことはできませ

ん。ファイル入力機能で代替してください

ファイル入力 ○ 入力するファイルの格納場所は“実行に必要な資源の配付”を参照してくださ

Systemwalkerの

管理コンソール

× 多重で動作するアプリケーションからSystemwalker Centric Managerの管理コ

ンソールに入力要求が行われます。このとき、要求元のアプリケーションを特定

できないため利用できません。

DISPLAY 標準出力 ○ タスクごとにディレクトリが作成され、ファイルとして保存されます。

標準エラー出力 ○

シスログ ○ OSのシスログに出力されます

ファイル出力 ○ 出力ファイルは、競合を避けるためカレントディレクトリに出力する必要がありま

す。カレントディレクトリに出力したファイルはタスクごとに作成されたディレクトリ

に保存されます。

Systemwalkerの

管理コンソール

× 多重で動作するアプリケーションからSystemwalker Centric Managerの管理コ

ンソールに出力が行われます。このとき、出力元のアプリケーションを特定でき

ないため利用できません。

汎用ログ × Interstage Business Application Server配下ではHadoop連携機能は使用できな

いため、汎用ログには出力できません

コマンド行引数 ARGC,ARGV ○ ACCEPT文を使用して取り出すことができます

引数はMapReduce設定ファイルに指定します

環境変数操作 環境変数 ○ COBOL.CBRまたはMapReduce設定ファイルで指定します

- 20 -

Page 26: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.7.4 デバッガを使用したCOBOLアプリケーションのデバッグ方法

MapReduceアプリケーションはMapReduceフレームワークから起動されます。このため、アプリケーションのデバッグはNetCOBOL Studioを使用したリモートデバッグ(アタッチ機能)で実施します。

MapReduceアプリケーションを多重で動作させる場合、 初に動作したMapアプリケーションがデバッガに接続されます。それ以外の

アプリケーションは、デバッガに接続されることなく通常どおり動作します。

注意

デバッガに接続されたプログラムは、デバッガを終了すると同時に強制的に終了されます。このため、デバッガに接続されたプログラム

を続行させるためには、中断点を解除して続行しプログラムの終了までデバッガを終了しないでください。

2.7.5 タスクのタイムアウトに関する注意

MapReduceアプリケーションはMapReduceフレームワークから起動されます。MapReduceアプリケーションから一定時間応答が無い

(データが出力されない)場合、タイムアウトとして処理が打ち切られ、ジョブが失敗します。レコードの処理に時間がかかる場合、あらか

じめタイムアウト時間(Apache Hadoopのプロパティmapred.task.timeoutで指定)を延長してください。

2.8 Shuffle&sortの振り分け処理について

Shuffle&sortでは、MapReduce設定ファイルに指定された主キーに振り分け条件を適用し、実行可能なReduceタスク数にレコードを振

り分けます。

Hadoop連携機能で利用可能な振り分け方法を以降で説明します。

2.8.1 ハッシュ値によって振り分ける

デフォルトの振り分け方法です。主キーからハッシュ値を求めて、実行可能なReduceタスク数(mapred.reduce.tasks)にレコードを振り分

けます。

注意

ハッシュ値の重複によって複数の主キーが同一のReduceタスクに振り分けられる場合があります。このため、主キーが異なるレコード

が同一のReduceタスクに渡される場合を考慮し、Reduceアプリケーションを作成してください。

2.8.2 キー分布を考慮し自動的に最適な条件に振り分ける

Hadoop入力データファイルの主キーの分布を調べその分布に応じて 適なタスクの実行をスケジュールするとともに、件数の多いキー

が同じタスクに割り当たらないようにすることで、Hadoopジョブの実行時間を短縮する機能です。実行可能なReduceタスク数

(mapred.reduce.tasks)も実行環境に適した値に自動的に設定されます。

このため、スレーブサーバの故障や追加による多重度の変化が起こった際に、Reduceタスク数をチューニングする手間を省くことがで

きます。

この振り分け方法を利用するためには、あらかじめ、「主キー一覧ファイル」を作成しておく必要があります。この主キー一覧ファイルを

MapReduce設定ファイルの「主キー一覧ファイルの指定」で指定してHadoop実行シェルを実行します。

参考

キー分布を考慮した振り分けでは、主キーの分布に偏りがある場合にHadoopジョブの実行時間を短縮することができます。

「主キー一覧ファイル作成シェル」を実行すると、主キーの分布の偏りを確認することができます。

- 21 -

Page 27: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

注意

適化によるReduceタスクの数が優先されるため、MapReduce設定ファイルにReduceタスク数(mapred.reduce.tasks)を指定している場

合、その値は無視されます。

Hadoop実行シェルの実行時、一時ディレクトリ(Javaのシステムプロパティjava.io.tmpdirのディレクトリ、デフォルトでは/tmpディレクトリ)

に「_mainkeyList」ディレクトリが生成され、その配下に作業用ファイルが生成されます。「_mainkeyList」ディレクトリが使用するファイル

サイズは、利用する主キー一覧ファイルと同等です。

ジョブ終了と同時に作業用ファイルは削除されます。

2.8.3 キーごとに異なるタスクへ振り分ける

主キーが異なるレコードを、それぞれ異なるReduceタスクへ振り分ける方法です。各Reduceタスクは1種類の主キーしか処理しないこと

が保障されるため、複数の主キーグループを処理できないアプリケーションに対して有効です。

この振り分け方法を利用するためには、以下の3つの手順が必要です。

1. あらかじめ、Hadoop入力データファイルに含まれる主キーを「主キー一覧ファイル」に定義します。

2. 主キー一覧ファイルをMapReduce設定ファイルの「主キー一覧ファイルの指定」に指定します。

3. MapReduce設定ファイルに「一意振り分けの指定」を行います。

注意

主キー一覧ファイルに含まれない主キーを持つレコードがすべてスペアReduceタスクに割り振られるため、スペアReduceタスクに割り

振られるレコードは、一意のキーにはなりません。

主キー一覧ファイルに含まれる主キーの数にスペアReduceタスクとして1を加えた値が、実行可能なReduceタスク数(mapred.reduce.tasks)になります。このため、MapReduce設定ファイルにReduceタスク数(mapred.reduce.tasks)を指定している場合、その値は無視されます。

想定外のタスク数が実行されることを防止するため、振り分け可能なキーの上限数が規定されています。上限数を引き上げるために

は、MapReduce設定ファイルの「一意振り分けにおけるキーの上限数の指定」を行います。

2.8.4 主キー一覧ファイル

主キー一覧ファイルは、Hadoop入力ファイルに含まれる主キーが定義されたファイルです。このファイルを作成することで、キー分布を

考慮し自動的に 適な条件に振り分けたり、キーごとに異なるタスクへ振り分けたりすることができます。

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

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

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

参考

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

タとして指定したり、各スレーブサーバにコピーしたりする必要はありません。

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

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

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

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

/opt/FJSVcbl64/bin/cobmkmlist.sh

- 22 -

Page 28: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

主キー一覧ファイル作成シェルには、利用する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アプリケーションの環境変数を指定します 任意

- 23 -

Page 29: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定名 意味 指定

ファイル編成の指定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

- 24 -

Page 30: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

- 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重にする必要があります。

2.8.5 スペアReduceタスク

主キー一覧ファイルに含まれないキーが振り分けられるタスクのことを、スペアReduceタスクと呼びます。スペアReduceタスクは、「キー

分布を考慮し自動的に 適な条件に振り分ける」、または「キーごとに異なるタスクへ振り分ける」場合に自動的に起動されます。すべ

ての主キーが主キー一覧ファイルに定義されている場合は、スペアReduceタスクにキーは振り分けられません。

- 25 -

Page 31: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

注意

主キー一覧ファイルに含まれないキーは、すべてスペアReduceタスクに振り分けられます。このため、そのようなキーがたくさんある場

合、スペアReduceタスクがボトルネックになります。ボトルネックを解消するためには、主キー一覧ファイルを見直してください。

2.9 Hadoopジョブの実行

Hadoop連携機能では、以下のサーバからNetCOBOLが提供するHadoop実行シェルを利用してHadoopジョブを実行します。

・ Interstage Big Data Parallel Processing Serverと連携する場合

開発実行環境サーバ

・ Apache Hadoopと連携する場合

マスタサーバ

Hadoop実行シェルの修正

Hadoop実行シェルには、利用するHadoopで提供されているHadoop Streamingのjarファイルを定義する必要があります。

Hadoop実行シェルは、以下のパスに格納されています。

/opt/FJSVcbl64/bin/cobhadoop.sh

初めて実行する場合やHadoopのバージョンを変更する場合、Hadoop実行シェルをテキストエディタで開き、以下の行の右辺を利用可

能なHadoop Streamingのjarファイルのパスに修正してください。

STREAMING_JAR=/usr/share/hadoop/contrib/streaming/hadoop-streaming-1.2.1.jar

注意

Hadoop実行シェルの修正には、root権限が必要です。

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

Hadoop実行シェルの実行方法

Hadoop実行シェルには、MapReduce設定ファイルをパラメタに指定して実行します。

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

MapReduce設定ファイルの指定を省略することはできません。

Hadoop実行シェルは、シェルの戻り値としてジョブが成功すると「0」を、失敗すると「0以外」を返します。

ただし、MapReduceアプリケーションが復帰値を返す場合、その 大値を返します。

Hadoop実行シェルを実行中に「Ctrl+C」キーを入力することにより、タスクを中断させることができます。

参考

Hadoop実行シェルの引数には、汎用Hadoopコマンドラインオプションを指定することができます。たとえば、「-D」オプションを使用す

ることで、Hadoopのプロパティの値を指定することができます。これにより、タスクのタイムアウト時間やReduceタスク数などをジョブごと

に変更できます。

例:タスクのタイムアウト時間に「300秒」を指定し、かつReduceタスク数に「0」を設定する場合。

$ cobhadoop.sh -conf MapReduce設定ファイル -D mapred.task.timeout=300000 -D mapred.reduce.tasks=0

- 26 -

Page 32: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.9.1 実行に必要な資源の配付

Hadoopジョブの実行には以下の資源が必要です。

・ MapReduce設定ファイル

・ MapアプリケーションおよびReduceアプリケーション

・ COBOLアプリケーションが使用するファイル

・ COBOL.CBRやサブルーチン呼び出しに必要なライブラリ等

2.9.1.1 Interstage Big Data Parallel Processing Serverと連携する場合

MapReduce設定ファイル以外の資源は各スレーブサーバで必要な資源ですが、利用者が各スレーブサーバのローカルディスクにコ

ピーする必要はありません。これらの資源は開発実行環境サーバと各スレーブサーバ間で共有マウントされているDFSディレクトリに資

源を格納します。

2.9.1.2 Apache Hadoopと連携する場合

MapReduce設定ファイル以外の資源は各スレーブサーバで必要な資源です。利用者が各スレーブサーバのローカルディスクにコピー

する必要はありませんが、以下のいずれかの方法を用いて各スレーブサーバからアクセス可能にする必要があります。

・ 共有ディレクトリを利用する

マスタサーバと各スレーブサーバ間で共有マウント(NFSなど)したディレクトリに資源を格納することで、実行に必要な資源を各ス

レーブサーバから参照することができます。

資源が各サーバ間で共有されているディレクトリ上に保存されている場合、共有ディレクトリを利用します。

・ サイドデータを利用する

サイドデータは、リードオンリーのデータを分散ファイルの機構を用いて各スレーブサーバに配付するApache Hadoopの機能です。

実行コマンドにサイドデータを指定することで、MapReduceアプリケーションの実行時にカレントディレクトリから参照可能になりま

す。

資源がマスタサーバのローカルディスクに保存されている場合、サイドデータを利用します。

例:サイドデータとしてMapアプリケーション「map1.exe」、Reduceアプリケーション「reduce1.exe」を利用する場合。

- 27 -

Page 33: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

$ cobhadoop.sh -conf MapReduce設定ファイル -files ./map1.exe,./reduce1.exe

2.10 MapReduceアプリケーションが出力するファイル

MapReduceアプリケーションからカレントディレクトリに出力したファイルを、MapReduce設定ファイルに設定を行うことにより、実行後に

以下のディレクトリへ退避することができます。

{Hadoop出力データファイル格納基準ディレクトリ}/currentdir/part-{m|r}-{nnnnn}/

{Hadoop出力データファイル格納基準ディレクトリ}:MapReduce設定情報ファイルで指定するパスです

{m|r}:Mapアプリケーションの出力の場合「m」、Reduceアプリケーションの出力の場合「r」です

{nnnnn}:JobTrackerが生成したタスク試行IDです

また、標準出力、標準エラー出力にメッセージを出力した場合は、以下のファイルに出力されます。

この2つのファイルは退避の設定の有無にかかわらず、常に上記ディレクトリに退避されます。

stdout 標準出力に出力した内容が記録されます

stderr 標準エラーに出力した内容が記録されます

参考

カレントディレクトリには、MapReduceアプリケーションから出力したファイル以外にも、Mapタスク、Reduceタスクの実行に必要なファイ

ルが格納されています。このため、退避するように指定した場合、これらのファイルも一緒に退避されます。

2.11 シェルをMapReduceで実行する場合

MapReduceアプリケーションではCOBOLアプリケーションを指定して実行できますが、シェルを指定することもできます。シェルの利用

により、複数のCOBOLアプリケーションを実行したり、コマンドと組み合わせてCOBOLアプリケーションを実行したりできます。

Hadoopでは、ジョブを実行するたびに分散処理のオーバヘッドが発生します。シェルを利用して、複数のCOBOLアプリケーションや

コマンドをまとめて一度のジョブで実行すると、そのオーバヘッドの影響を小さくすることができます。

ただし、入出力データファイルはシェルで実行されるいずれかのアプリケーションで一度だけしか読み書きできません。

- 28 -

Page 34: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

Mapアプリケーションとしてシェルを実行し、シェルの中でCOBOLアプリケーション(1)、(2)、(3)を実行しています。

COBOLアプリケーション(1)でMap入力データファイルを読み込み、COBOLアプリケーション(3)でMap出力データファイルを書き込ん

でいます。

COBOLアプリケーション(1)、(2)、(3)の間のデータ受け渡しは、カレントディレクトリに中間ファイルを出力して利用します。

2.12 MapReduce設定ファイル

Hadoop連携機能では、実行に必要な以下の情報をMapReduce設定ファイルに定義します。

・ MapReduceアプリケーション名

・ ファイルのファイル(パス)名およびファイル識別名

・ ファイルの編成やレコード長、行順ファイルの文字コード

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

MapReduce設定ファイルは、XMLファイル(テキストファイル)です。テキストエディタなどを使用して作成してください。

参考

MapReduce設定ファイルには、タスクのタイムアウト時間やReduceタスク数などHadoopのプロパティの値を定義することもできます。

- 29 -

Page 35: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.12.1 MapReduce設定ファイルのフォーマット

MapReduce設定ファイルは、設定する一つの項目に対して<property>要素を作成します。その<property>要素の中に、設定名を <name>要素、設定値を <value> 要素としてそれぞれ設定します。

以下にMapReduce設定ファイルのフォーマットを示します。

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration> <!---root要素です。必ず指定が必要です。 -->

<property> <!--- 設定名、設定値はproperty要素を作成しその中に設定します。 -->

<name>設定名1</name>

<value>設定値1</value>

</property>

<property>

<name>設定名2</name>

<value>設定値2</value>

</property>

<!--- 設定が必要なだけ繰り返します -->

</configuration>

2.12.2 MapReduce設定ファイルに指定する情報一覧

MapReduce設定ファイルに設定する項目の一覧を示します。

表2.1 設定項目一覧

設定名 意味

Hadoopジョブ名の指定 extjoiner.jobname Hadoopジョブ名

MapReduceアプリケー

ションの指定

extjoiner.map.streamprocessor.nn Mapアプリケーション名

extjoiner.reduce.streamprocessor Reduceアプリケーション名

アプリケーションの再実行

を行う復帰値のしきい値

extjoiner.command.retryexitstatus MapReduceアプリケーションから返される復帰値に

より、MapReduceアプリケーションの再実行を行うか

どうかのしきい値を指定します

ジョブをエラーとして扱う

復帰値のしきい値

extjoiner.command.jobfailurestatus MapReduceアプリケーションから返される復帰値に

より、ジョブをエラーとするかどうかのしきい値を指

定します

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

extjoiner.reduce.environment Reduceアプリケーションの環境変数を指定します

入出力ファイルの指定

extjoiner.input.nn.filename Hadoop入力データファイル名 (*1)(*2)

mapred.output.dir Hadoop出力データファイル基準ディレクトリ名(*1)

extjoiner.output.nn.filename Hadoop出力データファイルディレクトリ名(*1)

extjoiner.map.input.nn.filename Map入力データファイル識別名(*3)

extjoiner.map.output.nn.filename Map出力データファイル識別名(*3)

extjoiner.reduce.input.nn.filename Reduce入力データファイル識別名(*3)

extjoiner.reduce.output.nn.filename Reduce出力データファイル識別名(*3)

出力データファイル基準

ディレクトリの上書きの指

extjoiner.output.dir.removeifexist Hadoop出力データファイル基準ディレクトリを上書

きするかどうかを指定します

ファイル編成の指定extjoiner.input.nn.format Hadoop入力データファイルのファイル編成

extjoiner.output.nn.format Hadoop出力データファイルのファイル編成

- 30 -

Page 36: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定名 意味

extjoiner.map.output.nn.format Map出力データファイルのファイル編成

extjoiner.reduce.input.nn.format Reduce入力データファイルのファイル編成

レコード順固定長ファイ

ルのレコード長の指定

extjoiner.input.nn.recordlength Hadoop入力データファイルのレコード長

extjoiner.output.nn.recordlength Hadoop出力データファイルのレコード長

extjoiner.map.output.nn.recordlength Map出力データファイルのレコード長

extjoiner.reduce.input.nn.recordlength Reduce入力データファイルのレコード長

レコード順可変長ファイ

ルのレコード長情報ファ

イルの指定

extjoiner.input.nn.recinfdir Hadoop入力データファイルのレコード長情報ファ

イルの格納ディレクトリ名(*1)

行順ファイルの文字コー

ドの指定

extjoiner.input.nn.codeset Hadoop入力データファイルの文字コード

extjoiner.output.nn.codeset Hadoop出力データファイルの文字コード

extjoiner.map.output.nn.codeset Map出力データファイルの文字コード

extjoiner.reduce.input.nn.codeset Reduce入力データファイルの文字コード

キー情報の指定

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

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

com.fujitsu.netcobol.hadoop.sortkey.nn.sub

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

com.fujitsu.netcobol.hadoop.sortkey.nn.colseq

ASCIIコードの並び順

主キー一覧ファイルの指

extjoiner.mainkeylist 主キー一覧ファイル名

一意振り分けの指定extjoiner.partitioner.unique 主キーが異なるレコードを、それぞれ異なるReduce

タスクへ振り分ける

一意振り分けにおける

キーの上限数の指定

extjoiner.partitioner.unique.max.keys 一意振り分けにおけるキーの上限数

CSV形式データの扱いの

指定

extjoiner.csv.separator CSVデータのセパレータを指定する

extjoiner.partitioner.csv.padding CSVデータの振り分け処理における主キーの空白

の扱い

extjoiner.comparator.csv.padding CSVデータのソート処理におけるキーの空白の扱

extjoiner.csv.floatfield 浮動フィールド指定

Map出力データファイル

自動ソートの指定

extjoiner.input.sort Reduceアプリケーションの指定を省略しても

Shuffle&sortを動作させる

処理レコード件数のログ

を取得する

extjoiner.map.input.getRecordCount Map入力レコード数をログに表示する

extjoiner.map.output.getRecordCount Map出力レコード数をログに表示する

extjoiner.reduce.input.getRecordCount Reduce入力レコード数をログに表示する

extjoiner.reduce.output.getRecordCount Reduce出力レコード数をログに表示する

カレントディレクトリの退避

の指定

extjoiner.copyworkingdir MapReduceアプリケーションのカレントディレクトリを

タスク終了後退避する

バッファサイズの指定 extjoiner.maxbufferrecords バッファリングを行うレコード数の上限

Mapタスク複数ファイル出

力モード

extjoiner.map.multioutput Mapタスクに割り当てたアプリケーションで複数ファ

イル出力を利用する

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

- 31 -

Page 37: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

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

われます。

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

表中の「nn」は、Hadoop入力データファイルの個数に対応します。「nn」には、01~64の数値を指定します。

以降で各設定名に対する設定値を説明します。

2.12.3 Hadoopジョブ名の指定

Hadoopジョブ名は以下の設定名で指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Hadoopジョブ名 extjoiner.jobname ジョブ名を英数字で指定します 省略可

デフォルト値は

"External Joiner utility"です

2.12.4 MapReduceアプリケーションの指定

Mapアプリケーションは、利用するファイルごとに指定します。

Reduceアプリケーションは、利用するファイル数に関係なく、ひとつだけ指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Mapアプリケーション extjoiner.map.streamprocessor.nn (*1)(*2) Map/Reduceアプリケーション

のいずれか片

方を省略可

Reduceアプリケーション extjoiner.reduce.streamprocessor

(*1):Interstage Big Data Parallel Processing Serverと連携する場合

MapReduceアプリケーションのパスをDFSのマウントディレクトリの絶対パスで指定します。

(*2):Apache Hadoopと連携する場合

MapReduceアプリケーションの配付方法に共有ディレクトリを利用している場合は、共有ディレクトリのパスをフルパスで記述します。サ

イドデータを利用している場合は、サイドデータとして指定したパスを記述します。

Reduceアプリケーションを省略する場合、Apache Hadoopのプロパティ「mapred.reduce.tasks」に0を指定してください。

参考

Map/Reduceアプリケーションの引数を同時に指定することもできます。引数を複数個指定する場合は空白区切りで指定します。

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

MapアプリケーションまたはReduceアプリケーションが返す復帰値について、アプリケーションの再実行を行う復帰値のしきい値を以下

の設定名で指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

アプリケーションの再実行を行

う復帰値のしきい値

extjoiner.command.retryexitstatus MapReduceアプリケーション

から返される復帰値につい

省略可

デフォルト値は

255です

- 32 -

Page 38: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

て、再実行を行うかどうかのし

きい値を指定します

指定した値を超える復帰値が

返された場合、タスクが失敗

し、MapReduceフレームワー

クによって再実行されます

2.12.6 ジョブをエラーとして扱う復帰値のしきい値

MapアプリケーションまたはReduceアプリケーションが返す復帰値について、ジョブをエラーとして扱う値のしきい値を以下の設定名で

指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

ジョブをエラーとして扱う復帰

値のしきい値

extjoiner.command.jobfailurestatus ジョブで実行された複数の

MapReduceアプリケーション

から返される復帰値につい

て、その 大値が設定値と判

定されます

大値が指定した値を超える

場合、ジョブ失敗のメッセージ

が出力されます

省略可

デフォルト値は

128です

2.12.7 環境変数の指定

MapアプリケーションまたはReduceアプリケーションに対して有効とする環境変数を以下の設定名で指定します。

COBOLの実行に必要なパスはあらかじめ設定されているため、指定する必要はありません。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Mapアプリケーションの環境変

extjoiner.map.environment 環境変数名=環境変数値

複数個指定する場合は空白

区切りで指定します

省略可

Reduceアプリケーションの環境

変数

extjoiner.reduce.environment

指定例 <name>extjoiner.reduce.environment</name>

<value>CBR_MESSOUTFILE=message.txt</value>

環境変数「LD_LIBRARY_PATH」に任意のパスを追加する場合、設定値の前に「${com.fujitsu.netcobol.ld_library_path}:」を追加し

てください。

例:

<name>extjoiner.reduce.environment</name>

<value>LD_LIBRARY_PATH=${com.fujitsu.netcobol.ld_library_path}:/mnt/nfs/user/lib</value>

参考

実行用の初期化ファイル“COBOL.CBR”を使用することもできます。DFS上のMapReduceアプリケーションと同じパスに格納されてい

る“COBOL.CBR”が使用されます。

MapアプリケーションまたはReduceアプリケーションに対して指定した環境変数と、実行用の初期化ファイル“COBOL.CBR”の内容が

重複している場合、実行用の初期化ファイル“COBOL.CBR”の内容が優先されます。

- 33 -

Page 39: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

参考

Hadoop連携機能により、MapアプリケーションおよびReduceアプリケーションに対して以下の環境変数が設定されます。

環境変数名 概要

MAPRED_TASK_ID 個々のタスクに割り当てられたタスクID

MAPRED_COUNTER_FILE ユーザー定義カウンタを書き込むためのファイルの格納パス

2.12.8 入出力ファイルの指定

ファイル名は利用するファイルごとに指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Hadoop入力データファイル名 extjoiner.input.nn.filename DFS上のファイル名

または

ディレクトリ名を指定します

(*1)

指定必須

ディレクトリを指

定した場合は、

そのディレクトリ

内のファイルす

べてが入力ファ

イルとして扱わ

れます

Hadoop出力データファイル格

納基準ディレクトリ名

mapred.output.dir DFS上のディレクトリ名を指定

します(*1)指定必須

Hadoop出力データファイル

ディレクトリ名

extjoiner.output.nn.filename DFS上のディレクトリ名を指定

します

指定必須

Hadoop出力

データファイル

基準ディレクトリ

名の下に、本指

定のディレクトリ

名が作成され、

配下にタスクごと

の出力ファイル

が格納されます

Map入力データファイル識別

extjoiner.map.input.nn.filename Mapアプリケーションで使用し

ているファイル識別名を指定

します

Mapアプリケー

ションを使用しな

い場合、省略可Map出力データファイル識別

extjoiner.map.output.nn.filename

Reduce入力データファイル識

別名

extjoiner.reduce.input.nn.filename Reduceアプリケーションで使

用しているファイル識別名を

指定します

Reduceアプリ

ケーションを使

用しない場合、

省略可Reduce出力データファイル識

別名

extjoiner.reduce.output.nn.filename

(*1) ディレクトリ名はDFS上のフルパスまたは相対パスで指定できます。相対パスはDFS上のホームディレクトリからの相対パスです。

参考

Hadoop入力データファイル名に指定したファイルは、定義した順番(nn)にレコードがMapReduceアプリケーションに渡されます。

- 34 -

Page 40: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

ファイルの突き合わせ処理で複数のHadoop入力データファイルを使用する場合は、マスタファイルを先に定義することで、読み込み

待ちが少なくなり性能が向上するとともに、メモリを効率的に利用することができます。

注意

Hadoop入力データファイル名およびHadoop出力データファイルディレクトリ名には、',' および '='を含む文字列を使用することはできま

せん。

2.12.9 出力データファイル基準ディレクトリの上書きの指定

Hadoop出力データファイル基準ディレクトリを上書きするかどうかを指定します。指定を省略した場合、Hadoop出力データファイル基

準ディレクトリがすでに存在する場合はエラーとして扱われます。指定内容は以下のとおりです。

設定内容設定名

(NAME要素)設定値(*1)

(VALUE要素)備考

出力データファイル基準

ディレクトリの上書きの指

extjoiner.output.dir.removeifexist ・ true

すでにディレクトリが存在する場

合、上書きを行います

・ false

すでにディレクトリが存在する場

合、エラーとします

省略可

デフォルト値は

falseです

2.12.10 ファイル編成の指定

ファイル編成は、利用するファイルごとに指定します。ファイル編成の指定を省略した場合、行順ファイルが指定されたものとして扱わ

れます。ファイル編成の指定内容は以下のとおりです。

設定内容設定名

(NAME要素)設定値(*1)

(VALUE要素)備考

Hadoop入力データファイ

ルのファイル編成

extjoiner.input.nn.format ・ CobolLineSeqInputFormat

行順ファイル

・ CobolSeqFixInputFormat

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

・ CobolSeqVarInputFormat

レコード順可変長ファイル

・ CobolPhysicalInputFormat

物理順ファイル

省略可

デフォルト値は

行順ファイルで

Hadoop出力データファイ

ルのファイル編成

extjoiner.output.nn.format ・ CobolLineSeqOutputFormat

行順ファイル

・ CobolSeqFixOutputFormat

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

・ CobolSeqVarOutputFormat

レコード順可変長ファイル

・ CobolPhysicalOutputFormat

物理順ファイル

省略可

デフォルト値は

行順ファイルで

- 35 -

Page 41: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名

(NAME要素)設定値(*1)

(VALUE要素)備考

Map出力データファイル

のファイル編成

extjoiner.map.output.nn.format ・ CobolLineSeqOutputFormat

行順ファイル

・ CobolSeqFixOutputFormat

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

・ CobolSeqVarOutputFormat

レコード順可変長ファイル

・ CobolPhysicalOutputFormat

物理順ファイル

省略可

デフォルト値は

行順ファイルで

Reduce入力データファイ

ルのファイル編成

extjoiner.reduce.input.nn.format ・ CobolLineSeqInputFormat

行順ファイル

・ CobolSeqFixInputFormat

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

・ CobolSeqVarInputFormat

レコード順可変長ファイル

・ CobolPhysicalInputFormat

物理順ファイル

省略可

デフォルト値は

行順ファイルで

(*1)設定値は「com.fujitsu.netcobol.hadoop.mapred.」で修飾します

2.12.11 レコード長の指定(レコード順固定長ファイルのみ)

ファイル編成がレコード順固定長ファイルの場合、レコード長を指定する必要があります。レコード長の指定内容は以下のとおりです。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

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

コード長

extjoiner.input.nn.recordlength 整数 指定必須

レコード長を

バイト単位で

指定します

Hadoop出力データファイルのレ

コード長

extjoiner.output.nn.recordlength

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

ド長

extjoiner.map.output.nn.recordlength

Reduce入力データファイルのレ

コード長

extjoiner.reduce.input.nn.recordlength

注意

レコード順固定長ファイル編成以外のファイル編成を使用する場合、レコード長の指定を行わないでください。指定した場合、動作結

果は不定となります。

ファイル編成がレコード順固定長ファイルの場合にレコード長の指定を省略した場合は、実行時にエラーになります。

- 36 -

Page 42: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.12.12 レコード長情報ファイルの指定(レコード順可変長ファイルまたは物理順ファイルのみ)

ファイル編成がレコード順可変長ファイルまたは物理順ファイルの場合、レコード長情報ファイルを指定する必要があります。レコード

長情報ファイルは、“レコード順可変長ファイルの利用”を参照して作成してください。

レコード長情報ファイルの指定内容は以下のとおりです。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

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

コード長情報ファイル

extjoiner.input.nn.recinfdir DFS上のレコード長情報

ファイル格納ディレクトリ

名を絶対パスで指定しま

指定必須

注意

レコード長情報ファイルをHadoop入力データファイルに指定したディレクトリ内に格納することはできません。

2.12.13 文字コードの指定(行順ファイルのみ)

ファイル編成が行順ファイルの場合、文字コードを指定する必要があります。文字コードの指定内容は以下のとおりです。

設定内容設定名

(NAME要素)

設定値

(VALUE要素)

備考

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

字コード

extjoiner.input.nn.codeset UTF-8

UTF-16LE

UTF-16BE

UTF-32LE

UTF-32BESJIS

省略可

デフォルトはUTF-8です

・ UTF-8

文字コードはUTF-8

・ UTF-16LE

文字コードはUTF-16リトルエン

ディアン

・ UTF-16BE

文字コードはUTF-16ビッグエ

ンディアン

・ UTF-32LE

文字コードはUTF-32リトルエン

ディアン

・ UTF-32BE

文字コードはUTF-32ビッグエ

ンディアン

・ SJIS

文字コードはシフトJIS

Hadoop出力データファイルの文

字コード

extjoiner.output.nn.codeset

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

コード

extjoiner.map.output.nn.codeset

Reduce入力データファイルの文

字コード

extjoiner.reduce.input.nn.codeset

参考

行順ファイル編成以外に対する文字コードの指定は無視されます。

- 37 -

Page 43: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

2.12.14 キー情報の指定

Shuffle&sortで使用するキー情報には、データのグループ化に使用される「主キー」と、並び替えに使用される「副キー」があります。主

キーおよび副キーは複数指定可能です。キーごとに属性や並び順(昇順・降順)を指定することができます。

キー情報は、Hadoop入力データファイルごとに指定する必要があります。

設定内容設定名(*)

(NAME要素)設定値

(VALUE要素)備考

主キー sortkey.nn.main ・ キーがCOBOLのデータ型の場合

カンマ区切りで

キー属性,オフセット,長さ,並び順

を指定します。

キー属性

“キー属性に指定する値”を参照

オフセット

キーの先頭オフセットをバイト長で指定し

ます。オフセットは0から始まります。

長さ

キーの長さをバイト長で指定します

並び順

A(昇順)またはD(降順)を指定します省略

した場合、昇順と見なします

・ キーがCSV形式データの場合

カンマ区切りで

キー属性,カラム目,並び順

または

キー属性,カラム目:開始オフセット-長

さ,並び順

を指定します。

キー属性

CSVまたはCSVN

CSV:キーを文字として評価します

CSVN:キーを数値として評価します

カラム目:開始オフセット-長さ

キーが存在するカラム目と、カラム内にあ

るキーの先頭オフセットおよび長さをバイ

ト長で指定します

開始オフセットのみを指定した場合(-長さが指定されていない場合)は、カラムの

末尾までを長さと見なします

並び順

A(昇順)またはD(降順)を指定します省略

した場合、昇順と見なします

Shuffle&sortを使用する場合、指定必須

主キーを指定します。

複数指定する場合は/(スラッシュ)で区

切って指定します。

このキーでグループ化されたデータが各

Reduceタスクに渡されます。

副キー sortkey.nn.sub 省略可

副キーを指定します。

複数指定する場合は/(スラッシュ)で区

切って指定します。

キーがCSVデータの場合、カラムは0番目から始まります。

キーがCSVデータの場合で、データ自体

にセパレータ文字を含めたい場合は、カ

ラムをダブルクォーテーションで囲む必

要があります。

ただし、浮動フィールド指定にtrueが指定

されている場合、フィールドを囲むダブル

クォーテーションを考慮しません。

- 38 -

Page 44: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名(*)

(NAME要素)設定値

(VALUE要素)備考

ASCIIコードの

並び順

sortkey.nn.colseq ・ ASCII

ASCII(JIS8)コードで並べ替えます

・ EBCDIC-ASCII

EBCDIC ASCIIコードで並べ替えま

・ EBCDIC-KANA

EBCDIC KANAコードで並べ替えま

・ EBCDIC-LOWER

EBCDIC 英小文字で並べ替えます

省略可

本指定が有効になるのは、キーの属性が

以下の場合です。

・ 英字項目

・ 英数字項目

・ 英数字編集項目

指定例 ・ キーがCOBOLデータの場合

<name>com.fujitsu.netcobol.hadoop.sortkey.01.main</name>

<value>S9LS,0,4,D</value>

<name>com.fujitsu.netcobol.hadoop.sortkey.01.sub</name>

<value>S9P,5,3/ASC,15,5</value>

- 主キーに外部10進LEADING SEPARATE、オフセット0バイト目から長さ4バイト、降順

- 1番目の副キーに符号付き内部10進 、オフセット5バイト目から長さ3バイト、昇順

- 2番目の副キーに英数字項目 、オフセット15バイト目から長さ5バイト 昇順

・ キーがCSVデータの場合

<name>com.fujitsu.netcobol.hadoop.sortkey.01.main</name>

<value>CSV,2,A</value>

<name>com.fujitsu.netcobol.hadoop.sortkey.01.sub</name>

<value>CSVN,3,D/CSVN,4:2-5,D </value>

- 主キーにCSV形式データの3カラム目、文字として評価、昇順

- 1番目の副キーにCSV形式データの4カラム目、数値として評価、降順

- 39 -

Page 45: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名(*)

(NAME要素)設定値

(VALUE要素)備考

- 2番目の副キーにCSV形式データの5カラム目にあるオフセット2バイト目から長さ5バイト、数値として評

価、降順

*:設定名は「com.fujitsu.netcobol.hadoop.」で修飾します。

表2.2 キー属性に指定する値

COBOLデータ種別指定値

字類 項類 USAGE句 SIGN句 PICTURE句 呼び名

数字 数字 DISPLAY なし 9(4) 外部10進 9

S9(4) S9

LEADING

S9(4) S9L

TRAILING

S9T

LEADING SEPARATE

S9LS

TRAILING SEPARATE

S9TS

PACKED-DECIMAL

- 9(4) 内部10進 9P

PACKED-DECIMAL

- S9(4) S9P

BINARY,COMP - 9(4) 規格2進 9B

BINARY,COMP - S9(4) S9B

COMP-5 - 9(4) システム2進項目 9C

COMP-5 - S9(4) S9C

BINARY-CHAR - 9(4),S9(4) int型2進整数項目 BC

BINARY-SHORT

- BS

BINARY-LONG - BL

BINARY-DOUBLE

- BD

+99.99E+99 外部浮動小数点項目 EXFL

COMP-1 - 9(4),S9(4) 単精度内部浮動小数点項目 INFL

COMP-2 - 9(4),S9(4) 倍精度内部浮動小数点項目

数字編集 DISPLAY - B / P V Z 0 9 , .* + - CR DB \

ASCE

英字 英字(*1) DISPLAY - A ASC

英数字 英数字(*1) DISPLAY - A X 9

英数字編集(*1) DISPLAY - A X 9 B 0 /

日本語 日本語 - - N NLE16(*2)NBE16(*2)

日本語編集 - - NB

- 40 -

Page 46: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

COBOLデータ種別指定値

字類 項類 USAGE句 SIGN句 PICTURE句 呼び名

NLE32(*3)NBE32(*3)

ブール ブール DISPLAY - 1(8) 外部ブール項目 BOOL

(*1)ASCII(JIS8)コードのデータをEBCDICコード順に並べることができます。対応するEBCDICコードは以下です。

・ EBCDIC ASCII

・ EBCDIC 英小文字

・ EBCDIC カナ

(*2) UTF-16リトルエンディアンの場合「NLE16」を指定します。UTF-16ビッグエンディアンの場合「NBE16」を指定します。

(*3) UTF-32リトルエンディアンの場合「NLE32」を指定します。UTF-32ビッグエンディアンの場合「NBE32」を指定します。

参考

キー属性に「NLE」を指定した場合、「NLE16」が指定されたものと見なします。キー属性に「NBE」を指定した場合、「NBE16」が指定さ

れたものと見なします。この指定は、互換のために用意されています。

2.12.15 CSV形式データの扱いの指定

CSV形式データを利用する場合、セパレータを変更したり、カラムの前後にある空白の評価方法などを変更したりすることができます。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

CSVデータのセパレータ

extjoiner.csv.separator ,(カンマ)

\t(TAB)

アルファベット

(a-z,A-Z)

記号

(セパレータに利用可能な値

は1文字だけです)

省略可

デフォルトはカ

ンマです

ただし、浮動

フィールド指定

にtrueが指定さ

れている場合、

デフォルトは空

白とタブがセパ

レータとなりま

指定例

<name> extjoiner.csv.separator </name>

<value>;</value>

設定値がアルファベットの場合、大文字と小文字を区別します

キーがCSV形式データ以外の場合、セパレータの指定は無視されます

CSVデータの振り分け処理に

おける主キーの空白の扱い

extjoiner.partitioner.csv.padding true

false

省略可

デフォルトは

trueです

- 41 -

Page 47: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

キー属性が

「CSV」の場合

のみ有効です

指定例

<name> extjoiner.partitioner.csv.padding </name>

<value>true</value>

trueの場合、カラム内の前置空白、後置空白、前置TAB、後置TABを含めた値を主キーとし

て振り分けます

falseの場合、カラム内の前置空白、後置空白、前置TAB、後置TAB を含めない値を主キー

として振り分けます

CSVデータのソート処理にお

けるキーの空白の扱い

extjoiner.comparator.csv.padding true

false

省略可

デフォルトは

falseです

キー属性が

「CSV」の場合

のみ有効です

指定例

<name> extjoiner.comparator.csv.padding </name>

<value>true</value>

trueの場合、カラム内の前置空白、後置空白、前置TAB、後置TABを含めた値をキーとして

比較します

falseの場合、カラム内の後置空白、後置TABを含めた値をキーとして比較します(前置空

白、前置TABを含めません)

浮動フィールド指定

extjoiner.csv.floatfield true

false

省略可

デフォルトは

falseです

- 42 -

Page 48: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

指定例

<name> extjoiner.csv.floatfield </name>

<value>false</value>

trueの場合、カラム内の先頭にダブルクォーテーションが存在しても、カラムを囲むダブル

クォーテーションとして扱いません

trueの場合、かつCSVデータのセパレータを省略した場合は、空白とタブがセパレータとなり

ます。このとき、空白が連続している場合は、 初の空白がセパレータとなり、残りの空白は

CSVデータの一部とみなします。

trueの場合、かつCSVデータのセパレータを指定している場合は、セパレータが連続すると

空カラムが存在するとみなして処理します。

trueの場合、かつCSVデータのセパレータを省略した場合、かつレコードの先頭に空白また

はタブがある場合、その空白またはタブはフィールド分離文字とみなしません。

trueの場合、かつCSVデータのセパレータを指定している場合、かつレコードの先頭にセパ

レータがある場合、そのセパレータはフィールド分離文字とみなします。

注意

CSVデータのセパレータは、浮動フィールド指定の有無により指定可能な値が異なります。指定可能な値は以下のとおりです。

- 43 -

Page 49: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

・ 浮動フィールド指定が有効な場合

,(カンマ)、\t(TAB)、アルファベット(a-z,A-Z)、記号

・ 浮動フィールド指定が無効な場合

,(カンマ)、\t(TAB)

指定できないセパレータが指定された場合、Hadoopジョブ実行時にエラーになります。

2.12.16 Map出力データファイル自動ソートの指定

Reduceアプリケーションの指定を省略した場合、Shuffle&sortは起動せず、Map出力ファイルは未ソートのまま出力されます。Reduceアプリケーションの指定を省略し、かつShuffle&sortを起動させたい場合、trueを設定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Map出力データファイル自動

ソートの指定

extjoiner.input.sort true

false

省略可

デフォルトは

falseです

注意

Shuffle&sortはReduceタスクを用いて実行されます。mapred.reduce.tasksプロパティに0が設定されている場合、Shuffle&sortは起動し

ません。

2.12.17 処理レコード件数のログを取得する

MapReduceアプリケーションにより各タスクで処理した入出力レコード数を、カウンタ情報として出力する場合trueを指定します。指定を

省略した場合は、falseを指定したものとみなします。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

処理レコード件数ログ取得指

extjoiner.map.input.getRecordCount

extjoiner.map.output.getRecordCount

extjoiner.reduce.input.getRecordCount

extjoiner.reduce.output.getRecordCount

true

false

省略可

デフォルトは

falseです

2.12.18 カレントディレクトリの退避の指定

MapReduceアプリケーションのカレントディレクトリをタスク終了後、退避するかどうかを指定します。指定を省略した場合は、falseを指

定したものとみなします。

trueを指定した場合、カレントディレクトリを退避します。カレントディレクトリに出力したファイルをタスク終了後、確認したい場合にtrueを指定します。

falseを指定した場合カレントディレクトリは退避されず、タスク終了と同時に削除されます。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

カレントディレクトリの退避の指

extjoiner.copyworkingdir true

false

省略可

デフォルトは

falseです

- 44 -

Page 50: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

参考

falseを指定し退避を抑止した場合でも、標準出力、標準エラー出力が格納されているファイル(stdout、stderr)は退避されます。

2.12.19 バッファサイズの指定

MapReduceアプリケーションの入出力ファイルは、メモリ上にバッファリングを行って高速化を図っています。MapReduceアプリケーショ

ンの処理によっては、バッファリングにより、Javaヒープが枯渇する場合があります。その場合は、バッファリングサイズの上限を指定し

てください。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

バッファリングするレコードの数extjoiner.output.maxbufferrecords バッファリングを行うレコード

数の上限

デフォルトは

25000です

2.12.20 主キー一覧ファイルの指定

主キーの振り分けに使用する振り分け指定ファイルを指定します。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

主キー一覧ファイル

extjoiner.mainkeylist 主キー一覧ファイル名をフル

パスまたは相対パスで指定し

ます

必須

2.12.21 一意振り分けの指定

主キーが異なるレコードを、それぞれ異なるReduceタスクへ振り分ける場合に指定します。

この指定を行うためには、主キー一覧ファイルを作成しておく必要があります。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

一意振り分けの指定

extjoiner.partitioner.unique true

false

省略可

デフォルトは

falseです

2.12.22 一意振り分けにおけるキーの上限数の指定

一意振り分けにおけるキーの上限数を引き上げる場合に指定します。想定外のタスク数が実行されることを防止するため、デフォルト

では上限が「512」に指定されています。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

一意振り分けにおけるキーの

上限数の指定

extjoiner.partitioner.unique.max.keys 整数 省略可

デフォルトは

512です

2.12.23 Mapタスク複数ファイル出力モード

通常、MapアプリケーションではMap入力データファイルとMap出力データファイルをそれぞれ一つだけオープンできます。Mapアプリ

ケーションで複数ファイルを出力したい場合(データに応じて入力ファイルを分割するジョブなど)、このプロパティを有効化してくださ

い。

- 45 -

Page 51: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

Mapタスク複数ファイル出力が有効化されている場合、Map出力ファイルに関する設定は、全てextjoiner.map.streamprocessor.01に指

定されたアプリケーションの出力ファイル設定として扱われます。

設定内容設定名

(NAME要素)設定値

(VALUE要素)備考

Mapアプリの複数ファイル出力

をサポートする

extjoiner.map.multioutput true

false

省略可

デフォルトはfalseです

注意

Mapタスク複数ファイル出力を有効化する場合、以下の制限があります。

・ Mapアプリケーションを2つ以上使用することはできません。extjoiner.map.streamprocessor.01以外にMapアプリケーションが指定さ

れている場合、ジョブはエラーとなります。

・ Reduceアプリケーションは指定できません。本プロパティを有効化する際は、同時にmapred.reduce.tasksプロパティに0を設定し、

Reduceアプリケーションを無効化してください。

- 46 -

Page 52: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

第3章 サンプル

ここでは、Hadoop連携機能を使用したサンプルプログラムについて説明します。

サンプルプログラムは、次の場所の各サンプル番号の付いたディレクトリに格納されます。コピーしてご利用ください。

・ /opt/FJSVcbl64/samples/

- サンプル1 行順ファイルの突合せ処理

- サンプル2 CSVファイルのフィルタリングと集計処理

- サンプル3 物理順ファイルの集計処理

3.1 サンプル1 行順ファイルの突合せ処理

ここでは、この製品で提供されているサンプルプログラム-サンプル1-について説明します。

・ Mapアプリケーション

無し

・ Reduceアプリケーション

トランザクションファイル(レコード順)とマスタファイル(レコード順)を読み込み、商品IDごとの合計個数と小計を求める

実行方法(#で始まる行はコメントです)

# Reduceアプリケーションのコンパイル

$ make

# 入力データをDFSにコピー

$ hadoop dfs -put input sample1

# ジョブの実行

$ cobhadoop.sh -conf conf/configuration.xml -files reduce.exe

# 実行結果をローカルにコピー

$ hadoop dfs -copyToLocal sample1_out output

3.2 サンプル2 CSVファイルのフィルタリングと集計処理

ここでは、この製品で提供されているサンプルプログラム-サンプル2-について説明します。

・ Mapアプリケーション

トランザクションファイル(CSV)を読み込み、個数が100未満のデータを除去する

・ Reduceアプリケーション

トランザクションファイル(CSV)を読み込み、店舗ごとの合計個数を求める

実行方法(#で始まる行はコメントです)

# MAP/Reduceアプリケーションのコンパイル

$ make

# 入力データをDFSにコピー

$ hadoop dfs -put input sample2/input

# ジョブの実行

$ cobhadoop.sh -conf conf/configuration.conf -files map.exe,reduce.exe

# 実行結果をローカルにコピー

$ hadoop dfs -copyToLocal sample2_out output

3.3 サンプル3 物理順ファイルの集計処理

ここでは、この製品で提供されているサンプルプログラム-サンプル3-について説明します。

- 47 -

Page 53: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

・ Mapアプリケーション

トランザクションファイル(物理順)をレコード順ファイルに変換する

・ Reduceアプリケーション

トランザクションファイル(レコード順)を読み込み、店舗ごとの合計個数を求める

計算結果(レコード順)を物理順ファイルに変換する

・ 後処理

出力ファイル(物理順)のマージ

実行方法

ブロックサイズ、Mapタスク数は環境に応じて適切に変更してください。

# Reduceアプリケーションのコンパイル

$ make

# レコード長情報ファイルの作成

$ cobgenrecinf.sh -p -i `pwd`/input/hostdata -o recinf -b 67108864 -t 2

# 入力データをDFSにコピー

$ hadoop dfs -put input/hostdata sample3/input

# レコード長情報ファイルをDFSにコピー

$ hadoop dfs -put recinf/hostdata.dat sample3_recinf/input.dat

# ジョブの実行

$ cobhadoop.sh -conf conf/configuration.conf -files

src/map.sh,reduce.exe,src/reduce.sh,conf/input_cnv.format,conf/output_cnv.format

# 実行結果をローカルにコピー

$ hadoop dfs -copyToLocal sample3_out output

# 出力ファイルのマージ

$ bsort -m -z16 -4.3asca -o marge_output output/outfile/part-*

- 48 -

Page 54: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

第4章 トラブルシューティング

本章では、Hadoop連携機能利用時のトラブルへの対応方法を説明します。

4.1 Hadoop連携機能のエラーについて

ここでは、Hadoop連携機能で発生するエラーについて説明します。

Hadoop連携機能ではエラーが発生した場合、以下にエラーメッセージを出力します。

・ Hadoopジョブを実行したコンソール

Hadoop実行シェル「cobhadoop.sh」を実行したコンソールに出力されるログです。HadoopやHadoop連携機能のエラーメッセージが

出力されます。エラーメッセージが出力された場合、そのエラーメッセージに対処してください。

タスクが失敗している(FAILEDが出力されている)場合、失敗した原因を確認するために、MapReduceのタスクログを確認してくだ

さい。

・ MapReduceのタスクログ

スレーブサーバで実行されるタスクが出力するログファイルです。出力先は、Hadoopの設定ファイルの一つである「/etc/hadoop/hadoop-env.sh」に定義され、ジョブID、タスクIDごとに作成されています。タスクログには、以下の3つのファイルがあります。

- stdout

タスクから標準出力に出力されたデータが格納されています。

- stderr

タスクから標準エラー出力に出力されたデータが格納されています。

- syslog

HadoopやHadoop連携機能が出力したメッセージが出力されます。

タスクが失敗している場合、失敗しているタスクIDのタスクログ(syslog)を確認し、エラーメッセージに対処してください。また、

実行ステータス134がログに出力されている場合、スレーブサーバのシスログを確認してください。

・ スレーブサーバのシスログ

OSのシスログデーモンによって出力されるログファイルです。出力先は、syslogdの設定ファイル(デフォルトでは/etc/syslog.conf)に記載されています。COBOLの実行時エラーが発生した場合、COBOLの実行時メッセージが出力されます。COBOLの実行時

メッセージを確認し、エラーメッセージに対処してください。

コンソールおよびタスクログに出力されたエラー内容については、以下の対処を行ってください。

識別子 エラー内容 対処

LB0001: MapReduce設定ファイルの主キー情報の指定に誤りがあります。

主キー情報の設定値が指定されていません。

主キー情報の指定は必須です。MapReduce設定ファイ

ルに主キー情報を指定してください。

LB0006: MapReduce設定ファイルのCSVデータのソート処理におけるキー

の空白の扱いの指定に誤りがあります。設定値='$1'MapReduce設定ファイルの、

extjoiner.comparator.csv.paddingに指定した値を確認し

てください。

LB0007: MapReduce設定ファイルのMap出力ファイルのコードセットの指

定に誤りがあります。設定値='$1'MapReduce設定ファイルの、

extjoiner.map.output.nn.codesetに指定した値を確認し

てください。

LB0101: MapReduce設定ファイルのキー情報(キー属性)の指定に誤りが

あります。設定値='$1'主キーまたは副キーの設定値に誤りがあります。エラー

メッセージに誤った設定値が出力されていますので、

MapReduce設定ファイルを確認してください。

LB0102: MapReduce設定ファイルのキー情報(ASCIIコードの並び順)の

指定に誤りがあります。空文字が指定されました。

ASCIIコードの並び順が指定されていません。

MapReduce設定ファイルを確認してください。

- 49 -

Page 55: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

LB0103: MapReduce設定ファイルのキー情報(ASCIIコードの並び順)の

指定に誤りがあります。設定値='$1'ASCIIコードの並び順の設定値に誤りがあります。エ

ラーメッセージに誤った設定値が出力されていますの

で、MapReduce設定ファイルを確認してください。

LB0104: MapReduce設定ファイルの主キー情報の指定に誤りがあります。

主キー情報が指定されていません。

主キー情報の指定は必須です。MapReduce設定ファイ

ルに主キー情報を指定してください。

LB0105: MapReduce設定ファイルのキー情報の指定に誤りがあります。 キー情報の設定値は、キー属性,オフセット,長さ,並び

順(省略可)の形式で指定します。MapReduce設定ファ

イルのキー情報の指定を確認してください。

LB0106: MapReduce設定ファイルのキー情報(キー属性)の指定に誤りが

あります。空文字が指定されました。

キー属性が指定されていません。MapReduce設定ファ

イルを確認してください。

LB0107: MapReduce設定ファイルのキー情報(オフセット)の指定に誤りが

あります。空文字が指定されました。

オフセットが指定されていません。MapReduce設定ファ

イルを確認してください。

LB0108: MapReduce設定ファイルのキー情報(オフセット)の指定に誤りが

あります。設定値='$1'オフセットの設定値に誤りがあります。オフセットの設定

値は、0~32759が指定できます。エラーメッセージに

誤った設定値が出力されていますので、MapReduce設定ファイルを確認してください。

LB0109: MapReduce設定ファイルのキー情報(長さ)の指定に誤りがありま

す。空文字が指定されました。

長さが指定されていません。MapReduce設定ファイルを

確認してください。

LB0110: MapReduce設定ファイルのキー情報(長さ)の指定に誤りがありま

す。設定値='$1'長さの設定値に誤りがあります。長さの設定値は、1~32760が指定できます。エラーメッセージに誤った設定

値が出力されていますので、MapReduce設定ファイル

を確認してください。

LB0111: MapReduce設定ファイルのキー情報(長さ)の指定に誤りがありま

す。オフセットからの長さが 大レコード長を超えています。

長さの設定値に誤りがあります。長さの設定値は、オフ

セットに加算して 大レコード長を超えることはできませ

ん。MapReduce設定ファイルを確認してください。

LB0112: MapReduce設定ファイルのキー情報(並び順)の指定に誤りがあ

ります。空文字が指定されました。

並び順が指定されていません。MapReduce設定ファイ

ルを確認してください。

LB0113: MapReduce設定ファイルのキー情報(並び順)の指定に誤りがあ

ります。設定値='$1'並び順の設定値に誤りがあります。エラーメッセージに

誤った設定値が出力されていますので、MapReduce設定ファイルを確認してください。

LB0117: MapReduce設定ファイルのキー情報(主キー)の指定に誤りがあ

ります。各Hadoop入力データファイルの主キーの設定値は、オフ

セットを除き同じでなければなりません。

主キーを複数指定する場合は、それぞれのキー属性

および長さを統一してください。

LB0118: MapReduce設定ファイルのキー情報の指定に誤りがあります。

CSV形式のキーとCSV形式ではないキーが混在しています。

CSV形式のキーとCSV形式ではないキーを混在するこ

とはできません。MapReduce設定ファイルを確認してく

ださい。

LB0119: MapReduce設定ファイルのCSVキー情報(カラム目[:開始オフセッ

ト-長さ])の指定に誤りがあります。空文字が指定されました。

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0120: MapReduce設定ファイルのCSVキー情報(カラム目[:開始オフセッ

ト-長さ])の指定に誤りがあります。設定値='$1'CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0121: MapReduce設定ファイルのCSVキー情報(カラム目)の指定に誤

りがあります。空文字が指定されました。

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0122: MapReduce設定ファイルのCSVキー情報(カラム目)の指定に誤

りがあります。設定値='$1'CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0123: MapReduce設定ファイルのCSVキー情報(開始オフセット[-長さ])の指定に誤りがあります。空文字が指定されました。

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0124: MapReduce設定ファイルのCSVキー情報(開始オフセット[-長さ])の指定に誤りがあります。設定値='$1'

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

- 50 -

Page 56: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

LB0125: MapReduce設定ファイルのCSVキー情報(開始オフセット)の指定

に誤りがあります。空文字が指定されました。

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0126: MapReduce設定ファイルのCSVキー情報(開始オフセット)の指定

に誤りがあります。設定値='$1'CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0127: MapReduce設定ファイルのCSVキー情報(長さ)の指定に誤りが

あります。空文字が指定されました。

CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0128: MapReduce設定ファイルのCSVキー情報(長さ)の指定に誤りが

あります。設定値='$1'CSV形式のキー指定について、MapReduce設定ファイ

ルを確認してください。

LB0201: MapReduce設定ファイルの主キー情報の指定に誤りがあります。

主キー情報の設定値が指定されていません。

主キー情報の指定は必須です。MapReduce設定ファイ

ルに主キー情報を指定してください。

LB0202: MapReduce設定ファイルに指定された主キー一覧ファイルが見

つかりません。FILE='$1'MapReduce設定ファイルの、extjoiner.mainkeylistに指

定した主キー一ファイル名を確認してください。

LB0207: 主キー一覧ファイルの主キーの合計の長さが、MapReduce設定

ファイルに指定された主キーの合計の長さと一致していません。

主キー一覧ファイルの主キーの長さを、MapReduce設定ファイルに指定された主キーの合計の長さと一致さ

せてください。

LB0211: レコード長情報ファイルが正しくありません。オフセット情報が読

み込めませんでした。

レコード長情報ファイルが正しくありません。Hadoop入力データファイルから作成されたレコード長情報ファイ

ルか確認してください。

LB0212: MapReduce設定ファイルのCSVデータの振り分け処理における

主キーの空白の扱いの指定に誤りがあります。設定値='$1'MapReduce設定ファイルの、

extjoiner.partitioner.csv.paddingに指定した値を確認し

てください。

LB0217: MapReduce設定ファイルのMap出力ファイル('$1')のコードセット

の指定に誤りがあります。設定値='$2'MapReduce設定ファイルの、

extjoiner.map.output.nn.codesetに指定した値を確認し

てください。

LB0218: キー分布を考慮した振り分けを行うための主キー一覧ファイルが

見つかりません。FILE='$1'MapReduce設定ファイルの、extjoiner.mainkeylistが正

しく設定されているか確認してください。

LB0219: キー分布を考慮した振り分けを行うための主キー一覧ファイルの

読み込みに失敗しました。FILE='$1'主キー一覧ファイルが読み込み可能な属性になってい

るか確認してください。

LB0221: 主キー一覧ファイルに同一主キーが複数存在します。key=$1 主キー一覧ファイルに同一のキーが定義されていない

か見直してください。

LB0222: 主キーの変換に失敗しました。 技術員(SE)に連絡してください。

IO0001: MapReduce設定ファイルのCSVデータの浮動フィールドの指定

に誤りがあります。設定値='$1'MapReduce設定ファイルの、extjoiner.csv.floatfieldに指

定した値を確認してください。

IO0002: MapReduce設定ファイルのCSVデータのセパレータの指定に誤

りがあります。設定値='$1'MapReduce設定ファイルの、extjoiner.csv.separatorに指

定した値を確認してください。

EX0001: 内部エラー: 捕捉されなかった例外を検出しました。 技術員(SE)に連絡してください。

EX0002: 不正なプロパティ名です。入力ファイル番号は'$1'までです:extjoiner.input.'$1'.filename

Hadoop入力データファイル名の個数に誤りがあります。

MapReduce設定ファイルを確認してください。

EX0003: ジョブの実行に失敗しました。 同時に出力されている他のメッセージか、タスクログを

確認してエラーメッセージに対処してください。

EX0004: コマンドの実行ステータスがretryexitstatus('$1')を超えました: タスクのパートID='$2' 実行ステータス='$3'

MapReduceアプリケーションの復帰値が指定したしきい

値を超えました。タスクは再実行されます。MapReduceアプリケーションまたはMapReduce設定ファイルを確認

してください。

EX0007: タスク用一時ディレクトリが作れませんでした。Hadoopの設定を見

直してください。 一時ディレクトリ:'$1'タスクが正しく動作できない状態です。Hadoopの設定

を見直してください。

- 51 -

Page 57: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

EX0009: 名前付きパイプが作成できませんでした。Hadoopの設定を見直

してください。名前付きパイプ:'$1'

Hadoopに付属のサンプルなど、簡単なMapReduceアプ

リケーションが動作するか確認してください。

問題が解決しない場合、技術員(SE)に連絡してくださ

い。EX0010: 名前付きパイプが作成できませんでした。Hadoopの設定を見直

してください。名前付きパイプ:'$1'

EX0011: 名前付きパイプ作成コマンドmkfifoの実行に失敗しました:'$1'

EX0013: コマンドの起動に失敗しました MapReduceアプリケーションが実行できませんでした。

MapReduceアプリケーションが実行可能か確認してくだ

さい。

EX0014: ユーザーによりジョブがkillされました。コマンドへの入力を強制

終了しようとしていました

COBOLアプリケーションの実行中に割り込みを検出し

ました。ジョブを利用者が中断した場合、本メッセージ

が出力される場合がありますが、中断には影響ありませ

ん。EX0015: ユーザーによりジョブがkillされました。コマンドへの入力を閉じよ

うとしていました

EX0016: コマンドへの入力が途中で閉じてしまいました。コマンドが入力

ファイルを 後まで読み込まなかったかもしれません:COBOLアプリケーションが入力ファイルを開かなかっ

た、またはファイルを 後まで読み込みませんでした。

COBOLアプリケーションが実行可能か確認してくださ

い。実行可能であればCOBOLアプリケーションを確認

してください。

EX0017: コマンドへの入力が途中で閉じてしまいました。コマンドが入力

ファイルを 後まで読み込まなかったかもしれません:

EX0024: プロパティの値が適正なディレクトリ名ではありません:mapred.output.dir

mapred.output.dirに指定されたディレクトリに誤りがあり

ます。MapReduce設定ファイルを確認してください。

EX0025: 環境変数名または環境変数の値が不適切でした 指定された環境変数名か環境変数値に誤りがありま

す。設定や変更が許可されない変数名を指定するな

ど、システム依存のエラーが発生しました。MapReduce設定ファイルを確認してください。

EX0030: ユーザーによりジョブがkillされました。タスクの開始を待っていま

した。

COBOLアプリケーションの実行中に割り込みを検出し

ました。ジョブを利用者が中断した場合、本メッセージ

が出力される場合がありますが、中断には影響ありませ

ん。EX0033: ユーザーによりジョブがkillされました。名前付きパイプの作成中

でした

EX0035: Hadoop出力データファイル名に','または'='が含まれています:nn='$1' filename='$2'

Hadoop出力データファイル名には','または'='を使用で

きません。MapReduce設定ファイルを確認してください。

EX0038: mapred.reduce.tasksに1以上が指定されていますが、実行すべき

コマンドが指定されていません。

extjoiner.reduce.streamprocessorにReduceアプリケー

ションを指定してください。Reduceアプリケーションを省

略する場合は、mapred.reduce.tasksプロパティに0を指

定してください。

EX0039: 出力ディレクトリが存在しています:'$1' すでに出力ディレクトリが存在します。出力ディレクトリ

を削除してから再度ジョブを実行してください。

EX0045: コマンドからの出力をHadoopに引き渡すのに失敗しました Hadoopの設定を見直してください。

Hadoopに付属のサンプルなど、簡単なMapReduceアプ

リケーションが動作するか確認してください。

問題が解決しない場合、技術員(SE)に連絡してくださ

い。

EX0046: ユーザーによりジョブがkillされました。コマンド実行の終了を待っ

ていました

COBOLアプリケーションの実行中に割り込みを検出し

ました。ジョブを利用者が中断した場合、本メッセージ

が出力される場合がありますが、中断には影響ありませ

ん。EX0047: ユーザーによりジョブがkillされました。名前付きパイプの読み込

みを終了しようとしていました

EX0048: ユーザーによりジョブがkillされました。名前付きパイプの書き込

みを終了しようとしていました

- 52 -

Page 58: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

EX0049: ユーザーによりジョブがkillされました。コマンド実行の終了を待っ

ていました

EX0050: ユーザーによりジョブがkillされました。名前付きパイプの読み込

みを終了しようとしていました

EX0052: プロパティの値が数値ではありません: property='$1' value='$2' 数値を指定するプロパティに対して、数値以外が設定

されています。出力された情報を参考にMapReduce設定ファイルを確認してください。

EX0054: プロパティの値が適正なクラス名ではありません。property='$1'value='$2'

ファイル編成の指定に誤りがあります。出力された情報

を参考にMapReduce設定ファイルを確認してください。

EX0056: ジョブ削除に失敗しました。詳細は下記の例外情報を参照してく

ださい job id='$1'Hadoopの設定を確認の上、手動でHadoopジョブを削

除してください。

EX0058: プロパティの値が範囲外です。'$1'-'$2'の範囲内にしてください:property='$3' value='$4'

プロパティに指定可能な範囲を超えています。出力さ

れた情報を参考にMapReduce設定ファイルを確認して

ください。

EX0065: ユーザーによりジョブがkillされました。コマンドへの入力を閉じよ

うとしていました

COBOLアプリケーションの実行中に割り込みを検出し

ました。ジョブを利用者が中断した場合、本メッセージ

が出力される場合がありますが、中断には影響ありませ

ん。EX0066: ユーザーによりジョブがkillされました。コマンドへの入力を強制

終了しようとしていました

EX0070: 行順ファイルの文字コードが不正です: property='$1' value='$2' 文字コードの指定に誤りがあります。出力された情報を

参考にMapReduce設定ファイルを確認してください。

EX0071: レコード順固定長ファイルのレコード長が指定されていません:property='$1'

レコード順固定長ファイルを使用する場合、レコード長

の指定は必須です。MapReduce設定ファイルを確認し

てください。

EX0073: レコード順可変長ファイルのレコード長情報ファイルが指定され

ていません: property='$1'レコード順可変長ファイルを使用する場合、レコード長

情報ファイルの指定は必須です。MapReduce設定ファ

イルを確認してください。

EX0074: レコード順可変長ファイルのレコード長情報ファイルが不正です:property='$1' value='$2'

レコード長情報ファイルにアクセスできません。レコード

長情報ファイルのパス及びMapReduce設定ファイルを

確認してください。

EX0075: コマンド実行の開始に失敗しました。詳細は例外情報を参照して

ください。

コマンド実行開始時にRuntimeExceptionを検出しまし

た。技術員(SE)に連絡してください。

EX0076: カレントワーキングディレクトリのファイルの回収にも失敗しまし

た。詳細は例外情報を参照してください。

ファイルの回収の 中にIOExceptionが起きました。技

術員(SE)に連絡してください。

EX0077: カレントワーキングディレクトリ名の取得に失敗しました。Hadoopの設定(mapred.working.dir)を見直してください

Hadoopの設定(mapred.working.dir)を確認し、利用可

能なパスが設定されているか確認してください。

EX0083: コマンドの入力ファイルへの書き込みに失敗しました。 入力ファイルの書き込み時にIOExceptionが発生しまし

た。COBOLアプリケーションが入力ファイルを 後まで

読み込まずに終了するとこのメッセージが出力される場

合があります。意図せずにこのエラーが発生し続ける場

合は、技術員(SE)に連絡してください。

EX0084: ユーザーによりジョブがkillされました。コマンドへの入力を書き

出そうとしていました

COBOLアプリケーションの実行中に割り込みを検出し

ました。ジョブを利用者が中断した場合、本メッセージ

が出力される場合がありますが、中断には影響ありませ

ん。

EX0086: reduceで処理すべきデータがありませんでした Reduceタスクに入力されたレコードが0件です。

EX0087: mapで処理すべきデータがありませんでした Mapタスクに入力されたレコードが0件です。

EX0088: 必須プロパティの値が指定されていません。出力ディレクトリ名を

指定してください: mapred.output.dirmapred.output.dirプロパティは必須です。MapReduce設定ファイルを確認してください。

- 53 -

Page 59: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

EX0089: 必須プロパティの値が指定されていません。プロパティ名: '$1' 必須プロパティが省略されています。出力された情報

を参考にMapReduce設定ファイルを確認してください。

EX0090: Hadoop入力データファイルが一つも指定されていません。プロパ

ティ名: extjoiner.input.NN.filenameHadoop入力データファイルの指定は必須プロパティで

す。MapReduce設定ファイルを確認してください。

EX0091: Hadoop入力データファイルの指定に問題がありました。'$1' Hadoop入力データファイルに指定したパスに誤りがあ

ります。パスおよびMapReduce設定ファイルを確認して

ください。

EX0095: 必須プロパティの値が不正でした。出力ディレクトリが作成できま

せん。'$1' '$2'='$3'Hadoop出力データファイルに指定したパスに誤りがあ

ります。パスおよびMapReduce設定ファイルを確認して

ください。

EX0097: バッファ用の一時ファイルが作れませんでした。 COBOLアプリケーションの入力作成中に必要となる一

時ファイルの作成に失敗しました。技術員(SE)に連絡

してください。

EX0098: 環境変数の設定が不正です。プロパティ名: '$1' 値: '$2' 指定された環境変数名か環境変数値に誤りがありま

す。環境変数名と環境変数値は'='で区切られている必

要があります。MapReduce設定ファイルを確認してくだ

さい。

EX0100: Hadoop入力データファイル名に','または';'が含まれています:nn='$1' filename='$2'

MapReduce設定ファイルの、extjoiner.input.nn.filenameに指定した値を確認してください。

EX0102: Counterファイルの読み込みに失敗しました ユーザー定義カウンタの更新時にIOExceptionが起き

ました。技術員(SE)に連絡してください。

EX0103: ユーザー定義カウンタの更新に失敗しました。カウンタ値が変換

できません。'$1'ユーザー定義カウンタの書式が不正です。カウンタ値

には数値を指定してください。

EX0104: ユーザー定義カウンタの更新に失敗しました。フォーマットが正

しくありません。'$1'ユーザー定義カウンタの書式が不正です。グループ

名,カウンタ名,カウンタ値 の書式で記載してください。

EX0105: Map複数出力を指定した場合、extjoiner.input.01の指定は必須

です

Map複数出力機能を利用する場合、extjoiner.input.01の指定は必須です。入力ファイルを指定してください。

EX0106: Map複数出力を指定した場合、extjoiner.input.01以外にHadoop入力ファイルを指定することはできません

Map複数出力機能を利用する場合、extjoiner.input.01以外の入力ファイルは指定できません。MapReduce設定ファイルを確認してください。

EX0107: Map複数出力を指定した場合、Reduceタスク数には0を指定して

ください

Map複数出力機能を利用する場合、Reduceタスク数は

0を指定する必要があります。

EX0108: Map複数出力を指定した場合、map.streamprocessor.01の指定は

必須です

Map複数出力機能を利用する場合、

map.streamprocessor.01の指定は必須です。Mapアプリ

ケーションを指定してください。

EX0109: Map複数出力を指定した場合、map.streamprocessor.01以外に

Mapアプリを指定することはできません

Map複数出力機能を利用する場合、

map.streamprocessor.01以外のMapアプリケーションは

指定できません。MapReduce設定ファイルを確認してく

ださい。

EX0111: mapred.reduce.tasks が0のため、extjoiner.input.sortの指定は無

視されます。

Map出力データファイル自動ソート機能を利用する場

合、Reduceタスク数は1以上を指定する必要がありま

す。

EX0112: mapred.reduce.tasks が0のため、extjoiner.reduce.streamprocessorの指定は無視されます。

Reduceタスク数に0が指定されている場合、Reduceアプ

リケーションの指定は無視されます。

EX0113: 物理順ファイルのレコード長情報ファイルが指定されていませ

ん: property='$1'物理順ファイルを使用する場合、レコード長情報ファイ

ルの指定は必須です。MapReduce設定ファイルを確認

してください。

- 54 -

Page 60: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

EX0114: 物理順ファイルのレコード長情報ファイルが不正です:property='$1' value='$2'

レコード長情報ファイルにアクセスできません。レコード

長情報ファイルのパス及びMapReduce設定ファイルを

確認してください。

EX0115: ディレクトリに書込み権限がありません。出力ディレクトリが作成で

きません。

MapReduce設定ファイルの、mapred.output.dirに指定し

たパスのアクセス件を確認してください。

EX0116: 出力ディレクトリの親ディレクトリが作成できません。出力ディレク

トリが作成できません。

EX0117: 出力ディレクトリの親ディレクトリに書込み権限がありません。出力

ディレクトリが作成できません。

EX0118: 出力ディレクトリの親ディレクトリ名が取得できません。出力ディレ

クトリが作成できません。

EX0119: map,reduceアプリケーションが指定されていません。 Map出力データファイル自動ソートの指定を行っていな

い場合、map,reduceアプリケーション両方を省略するこ

とはできません。

EX0120: ユーザー定義カウンタの書式にエラーがあります。正しく集計さ

れませんでした。

カウンタ情報設定ファイルに書き込まれたカウンタ情報

の書式を確認してください。

EX0121: プロパティの値に矛盾があります。'$1'='$2' '$3'='$4' 表示されたメッセージを参考に、設定名と設置値に矛

盾がないか確認してください。

EX0122: 主キー一覧ファイル作成シェルのreduceに渡されたパラメタが不

正です。

主キー一覧ファイル作成シェルの引数を確認してくだ

さい。

EX0124: reducerの入力ファイルのclose処理に失敗しました。 ジョブの実行に成功する場合は、本メッセージが出力さ

れても問題はありません。ジョブの実行に失敗する場合

は、技術員(SE)に連絡してください。

EX0126: reducerの出力ファイルのclose処理に失敗しました。 Reduceアプリケーションが使用するディスクの空き容量

が不足している可能性があります。スレーブサーバの

ディスク容量を確認してください。

EX0128: 主キーの変換に失敗しました。 技術員(SE)に連絡してください。

EX0129: MapReduce設定ファイルのキー情報の指定に誤りがあります。 MapReduce設定ファイルの、キー情報の指定を確認し

てください。

EX0130: MapReduce設定ファイルのキー情報(キー属性)の指定に誤りが

あります。空文字が指定されました。

MapReduce設定ファイルの、キー情報(キー属性)を確

認してください。

EX0131: 主キー一覧ファイルのフォーマットに不正な行が含まれていま

す。Line:$1 $2出力される情報を参考に、フォーマット、または文字コー

ドを修正してください。

EX0132: 主キー一覧ファイルが見つかりません。 MapReduce設定ファイルのextjoiner.mainkeylistが正し

く設定されているか確認してください。

EX0133: 主キー一覧ファイルの読み込みに失敗しました。 MapReduce設定ファイルのextjoiner.mainkeylistに指定

されているファイル名へのアクセス権限が正しく設定さ

れているか確認してください。

EX0134: 主キーの振分けの 適化情報の作成に失敗しました。 カレントディレクトリにファイル作成の権限があるか確認

してください。

EX0135: Reduceタスク数の 適化に失敗しました。 技術員(SE)に連絡してください。

EX0137: 実行環境の情報を取得できないため、Reduceタスク数の 適化

を行えませんでした。

技術員(SE)に連絡してください。

EX0140: 一意振り分けにおけるキーの上限数を超えたため、ジョブの実行

に失敗しました。

必要に応じて、一意振り分けにおけるキーの上限数を

引き上げてください。

- 55 -

Page 61: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

識別子 エラー内容 対処

EX0142: MapReduce設定ファイルのCSVデータの振り分け処理における

主キーの空白の扱いの指定に誤りがあります。設定値='$1'MapReduce設定ファイルの、

extjoiner.partitioner.csv.paddingに指定した値を確認し

てください。

EX0143: 主キー一覧ファイルに主キーが定義されていません。 Shuffle&sortを使用する場合、主キーは指定必須です。

MapReduce設定ファイルを確認してください。

内部矛盾が発生しました。(CODE=NNNN) 技術員(SE)に連絡してください。

上記以外のメッセージ 技術員(SE)に連絡してください。

4.2 タスクが実行されたスレーブサーバの特定

Hadoopの実行環境は複数のスレーブサーバで構成されます。ジョブのエラー等でタスクのログを確認する際、タスクのログがETERNUSなどの共有ディレクトリに出力するよう構成されている場合は問題ありませんが、スレーブサーバのローカルディスクに保存するよう設

定されている場合は、まずエラーの発生したタスクが、どのスレーブサーバで実行されたのかを特定する必要があります。

ジョブを複数のタスクに分割し、スレーブサーバに割り当てるのは、JobTrackerの役割です。JobTrackerのログにはタスクがどのスレー

ブサーバに割り当てられたのか記録されています。出力先は、Hadoopの設定ファイルの一つである「/etc/hadoop/hadoop-env.sh」に定

義されています。

マスタサーバのタスクログを確認します。

$ more /var/log/hadoop/mapred/hadoop-mapred-jobtracker-hadoop1.log

(ログ抜粋)

INFO org.apache.hadoop.mapred.JobTracker: Adding task (MAP) 'attempt_201403281518_0347_m_000001_0'

to tip task_201403281518_0347_m_000001, for tracker 'tracker_hadoop2:localhost.localdomain/127.0.0.1:57728'

INFO org.apache.hadoop.mapred.JobTracker: Adding task (MAP) 'attempt_201403281518_0347_m_000002_0'

to tip task_201403281518_0347_m_000002, for tracker 'tracker_hadoop2:localhost.localdomain/127.0.0.1:57728'

INFO org.apache.hadoop.mapred.JobTracker: Adding task (REDUCE) 'attempt_201403281518_0347_r_000000_0'

to tip task_201403281518_0347_r_000000, for tracker 'tracker_hadoop2:localhost.localdomain/127.0.0.1:57728'

Mapタスクの0番、1番とReduceタスクの0番はHadoop2に割り当てられたことがわかるため、Hadoop2のタスクのログを確認します。

4.3 ログの出力例と内容の確認方法

Hadoop連携機能を利用した際に出力されるログについて、ジョブ成功時とジョブ失敗時を例に説明します。

ジョブを実行したとき、入力データやプログラム、MapReduce設定ファイルに問題がない場合は、Reduceタスクが100%まで進捗したあ

と、ジョブの情報が出力され、Hadoop実行シェルが正常終了します。ジョブの情報はHadoopが出力する情報で、Map/Reduceタスクの

入出力レコード件数や、タスクの復帰値が出力されます。

ジョブを実行したとき、入力データやプログラム、MapReduce設定ファイルに問題がある場合は、ジョブはエラーで終了します。ただし、

タスクでエラーが発生した場合は、Hadoopによりリトライ(デフォルトは3回)され、エラーが繰り返されるとジョブはエラーで終了します。

4.3.1 ジョブ成功時の例

以下は、Hadoopジョブの実行が成功した例です。Mapタスク、Reduceタスクが100%まで進捗し、エラーメッセージが出力されることな

く、Hadoop実行シェルが終了しています。

[hadoop@hadoop1 hadoop01]$ cobhadoop.sh -conf conf/configuration.xml -files reduce.exe

14/04/24 10:20:41 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/04/24 10:20:41 WARN snappy.LoadSnappy: Snappy native library not loaded

14/04/24 10:20:41 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 10:20:41 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 10:20:41 INFO mapred.JobClient: Running job: job_201403281518_0347

14/04/24 10:20:42 INFO mapred.JobClient: map 0% reduce 0%

14/04/24 10:21:00 INFO mapred.JobClient: map 25% reduce 0%

14/04/24 10:21:01 INFO mapred.JobClient: map 50% reduce 0%

- 56 -

Page 62: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

14/04/24 10:21:05 INFO mapred.JobClient: map 75% reduce 0%

14/04/24 10:21:07 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 10:21:10 INFO mapred.JobClient: map 100% reduce 33%

14/04/24 10:21:13 INFO mapred.JobClient: map 100% reduce 100%

14/04/24 10:21:16 INFO mapred.JobClient: Job complete: job_201403281518_0347

14/04/24 10:21:16 INFO mapred.JobClient: Counters: 31

14/04/24 10:21:16 INFO mapred.JobClient: Job Counters

14/04/24 10:21:16 INFO mapred.JobClient: Launched reduce tasks=1

14/04/24 10:21:16 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=28884

14/04/24 10:21:16 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0

14/04/24 10:21:16 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0

14/04/24 10:21:16 INFO mapred.JobClient: Launched map tasks=4

14/04/24 10:21:16 INFO mapred.JobClient: Data-local map tasks=4

14/04/24 10:21:16 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=12510

14/04/24 10:21:16 INFO mapred.JobClient: File Input Format Counters

14/04/24 10:21:16 INFO mapred.JobClient: Bytes Read=0

14/04/24 10:21:16 INFO mapred.JobClient: File Output Format Counters

14/04/24 10:21:16 INFO mapred.JobClient: Bytes Written=1260

14/04/24 10:21:16 INFO mapred.JobClient: FileSystemCounters

14/04/24 10:21:16 INFO mapred.JobClient: FILE_BYTES_READ=320586

14/04/24 10:21:16 INFO mapred.JobClient: HDFS_BYTES_READ=194818

14/04/24 10:21:16 INFO mapred.JobClient: FILE_BYTES_WRITTEN=809649

14/04/24 10:21:16 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1260

14/04/24 10:21:16 INFO mapred.JobClient: Extjoiner.ExitStatus

14/04/24 10:21:16 INFO mapred.JobClient: reduce.00=0

14/04/24 10:21:16 INFO mapred.JobClient: Map-Reduce Framework

14/04/24 10:21:16 INFO mapred.JobClient: Map output materialized bytes=320604

14/04/24 10:21:16 INFO mapred.JobClient: Map input records=10020

14/04/24 10:21:16 INFO mapred.JobClient: Reduce shuffle bytes=320604

14/04/24 10:21:16 INFO mapred.JobClient: Spilled Records=20040

14/04/24 10:21:16 INFO mapred.JobClient: Map output bytes=300540

14/04/24 10:21:16 INFO mapred.JobClient: Total committed heap usage (bytes)=826540032

14/04/24 10:21:16 INFO mapred.JobClient: CPU time spent (ms)=5870

14/04/24 10:21:16 INFO mapred.JobClient: Map input bytes=190320

14/04/24 10:21:16 INFO mapred.JobClient: SPLIT_RAW_BYTES=1032

14/04/24 10:21:16 INFO mapred.JobClient: Combine input records=0

14/04/24 10:21:16 INFO mapred.JobClient: Reduce input records=10020

14/04/24 10:21:16 INFO mapred.JobClient: Reduce input groups=40

14/04/24 10:21:16 INFO mapred.JobClient: Combine output records=0

14/04/24 10:21:16 INFO mapred.JobClient: Physical memory (bytes) snapshot=877379584

14/04/24 10:21:16 INFO mapred.JobClient: Reduce output records=20

14/04/24 10:21:16 INFO mapred.JobClient: Virtual memory (bytes) snapshot=4984156160

14/04/24 10:21:16 INFO mapred.JobClient: Map output records=10020

[hadoop@hadoop1 hadoop01]$

4.3.2 ジョブ失敗時の例(実行プログラムが見つからない例)

以下は、存在しないプログラムをReduceアプリケーションとしてMapReduce設定ファイルに指定しHadoopジョブの実行が失敗した例で

す。

途中までReduceタスクが進捗します(例では66%まで)が、その後タイムアウトが発生し、Reduceタスクが失敗しています。その後Hadoopによりリトライされますが、同じ結果が繰り返されジョブがエラーで終了しています。

[hadoop@hadoop1 hadoop01]$ cobhadoop.sh -conf conf/configuration.xml

14/04/24 16:04:02 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/04/24 16:04:02 WARN snappy.LoadSnappy: Snappy native library not loaded

14/04/24 16:04:03 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 16:04:03 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 16:04:03 INFO mapred.JobClient: Running job: job_201403281518_0350

14/04/24 16:04:04 INFO mapred.JobClient: map 0% reduce 0%

14/04/24 16:04:17 INFO mapred.JobClient: map 50% reduce 0%

14/04/24 16:04:23 INFO mapred.JobClient: map 75% reduce 0%

14/04/24 16:04:24 INFO mapred.JobClient: map 100% reduce 0%

- 57 -

Page 63: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

14/04/24 16:04:26 INFO mapred.JobClient: map 100% reduce 25%

14/04/24 16:04:34 INFO mapred.JobClient: Task Id : attempt_201403281518_0350_r_000000_0, Status : FAILED

14/04/24 16:04:35 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 16:04:42 INFO mapred.JobClient: map 100% reduce 33%

14/04/24 16:04:45 INFO mapred.JobClient: Task Id : attempt_201403281518_0350_r_000000_1, Status : FAILED

14/04/24 16:04:46 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 16:04:53 INFO mapred.JobClient: map 100% reduce 25%

14/04/24 16:04:56 INFO mapred.JobClient: Task Id : attempt_201403281518_0350_r_000000_2, Status : FAILED

14/04/24 16:04:57 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 16:05:04 INFO mapred.JobClient: map 100% reduce 33%

14/04/24 16:05:07 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 16:05:10 INFO mapred.JobClient: Job complete: job_201403281518_0350

14/04/24 16:05:10 INFO mapred.JobClient: Counters: 24

14/04/24 16:05:10 INFO mapred.JobClient: Job Counters

14/04/24 16:05:10 INFO mapred.JobClient: Launched reduce tasks=4

14/04/24 16:05:10 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=30402

14/04/24 16:05:10 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0

14/04/24 16:05:10 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0

14/04/24 16:05:10 INFO mapred.JobClient: Launched map tasks=4

14/04/24 16:05:10 INFO mapred.JobClient: Data-local map tasks=4

14/04/24 16:05:10 INFO mapred.JobClient: Failed reduce tasks=1

14/04/24 16:05:10 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=50585

14/04/24 16:05:10 INFO mapred.JobClient: File Input Format Counters

14/04/24 16:05:10 INFO mapred.JobClient: Bytes Read=0

14/04/24 16:05:10 INFO mapred.JobClient: FileSystemCounters

14/04/24 16:05:10 INFO mapred.JobClient: HDFS_BYTES_READ=194818

14/04/24 16:05:10 INFO mapred.JobClient: FILE_BYTES_WRITTEN=452088

14/04/24 16:05:10 INFO mapred.JobClient: Map-Reduce Framework

14/04/24 16:05:10 INFO mapred.JobClient: Map output materialized bytes=320604

14/04/24 16:05:10 INFO mapred.JobClient: Map input records=10020

14/04/24 16:05:10 INFO mapred.JobClient: Spilled Records=10020

14/04/24 16:05:10 INFO mapred.JobClient: Map output bytes=300540

14/04/24 16:05:10 INFO mapred.JobClient: Total committed heap usage (bytes)=764739584

14/04/24 16:05:10 INFO mapred.JobClient: CPU time spent (ms)=3130

14/04/24 16:05:10 INFO mapred.JobClient: Map input bytes=190320

14/04/24 16:05:10 INFO mapred.JobClient: SPLIT_RAW_BYTES=1032

14/04/24 16:05:10 INFO mapred.JobClient: Combine input records=0

14/04/24 16:05:10 INFO mapred.JobClient: Combine output records=0

14/04/24 16:05:10 INFO mapred.JobClient: Physical memory (bytes) snapshot=777326592

14/04/24 16:05:10 INFO mapred.JobClient: Virtual memory (bytes) snapshot=4139409408

14/04/24 16:05:10 INFO mapred.JobClient: Map output records=10020

EX0003:ジョブの実行に失敗しました。

[hadoop@hadoop1 hadoop01]$

の例では、「attempt_201403281518_0350_r_000000_0」のタスクでエラーが起きていることがわかります。

このため、エラー内容はタスクログを確認する必要があります。

スレーブサーバのタスクログを確認します。

$ more /var/log/hadoop/mapred/userlogs/job_201403281518_0350/attempt_201403281518_0350_r_000000_0/syslog

ログには、タスク実行に伴いHadoopが出力する情報が含まれるため、様々な情報が出力されています。この中から、エラー(ERROR)や例外(Exception)が出力されている箇所を探します。

2014-04-24 16:04:52,279 INFO com.fujitsu.labs.extjoiner.MidFileCommandBuilder: EX0013:コマンドの起動に失敗しました

java.io.IOException: Cannot run program "./reduce.exe": java.io.IOException: error=2, No such file or directory

at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)

at com.fujitsu.labs.extjoiner.MidFileCommandBuilder.startCommand(MidFileCommandBuilder.java:841)

at com.fujitsu.labs.extjoiner.MidFileCommandBuilder.onConfigure(MidFileCommandBuilder.java:475)

at com.fujitsu.labs.extjoiner.ExtJoinerReduce.configure(ExtJoinerReduce.java:122)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

- 58 -

Page 64: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)

at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)

at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)

at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:485)

at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)

at org.apache.hadoop.mapred.Child$4.run(Child.java:255)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:396)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)

at org.apache.hadoop.mapred.Child.main(Child.java:249)

Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory

at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)

at java.lang.ProcessImpl.start(ProcessImpl.java:65)

at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)

... 17 more

2014-04-24 16:04:52,280 ERROR com.fujitsu.labs.extjoiner.MidFileCommandBuilder: EX0075:コマンド実行の開始に失敗しました。

詳細は例外情報を参照してください。

java.lang.RuntimeException: コマンドの起動に失敗しました

メッセージから、「./reduce.exe」が見つからないためエラーになっていることがわかります。

4.3.3 ジョブ失敗時の例(COBOLプログラムで実行時エラーが起きている例)

以下は、COBOLプログラムをReduceアプリケーションとして実行した際、COBOLの実行時エラーが発生しHadoopジョブの実行が失敗

した例です。

Reduceタスクは100%まで進捗しますが、ジョブはエラーで終了します。

[hadoop@hadoop1 hadoop01]$ cobhadoop.sh -conf conf/configuration.xml -files reduce.exe

14/04/24 10:44:44 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/04/24 10:44:44 WARN snappy.LoadSnappy: Snappy native library not loaded

14/04/24 10:44:44 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 10:44:44 INFO mapred.FileInputFormat: Total input paths to process : 1

14/04/24 10:44:44 INFO mapred.JobClient: Running job: job_201403281518_0349

14/04/24 10:44:45 INFO mapred.JobClient: map 0% reduce 0%

14/04/24 10:45:01 INFO mapred.JobClient: map 25% reduce 0%

14/04/24 10:45:02 INFO mapred.JobClient: map 50% reduce 0%

14/04/24 10:45:07 INFO mapred.JobClient: map 75% reduce 0%

14/04/24 10:45:08 INFO mapred.JobClient: map 100% reduce 0%

14/04/24 10:45:11 INFO mapred.JobClient: map 100% reduce 33%

14/04/24 10:45:14 INFO mapred.JobClient: map 100% reduce 100%

14/04/24 10:45:17 INFO mapred.JobClient: Job complete: job_201403281518_0349

14/04/24 10:45:17 INFO mapred.JobClient: Counters: 31

14/04/24 10:45:17 INFO mapred.JobClient: Job Counters

14/04/24 10:45:17 INFO mapred.JobClient: Launched reduce tasks=1

14/04/24 10:45:17 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=29916

14/04/24 10:45:17 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0

14/04/24 10:45:17 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0

14/04/24 10:45:17 INFO mapred.JobClient: Launched map tasks=4

14/04/24 10:45:17 INFO mapred.JobClient: Data-local map tasks=4

14/04/24 10:45:17 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=12460

14/04/24 10:45:17 INFO mapred.JobClient: File Input Format Counters

14/04/24 10:45:17 INFO mapred.JobClient: Bytes Read=0

14/04/24 10:45:17 INFO mapred.JobClient: File Output Format Counters

14/04/24 10:45:17 INFO mapred.JobClient: Bytes Written=0

14/04/24 10:45:17 INFO mapred.JobClient: FileSystemCounters

14/04/24 10:45:17 INFO mapred.JobClient: FILE_BYTES_READ=320873

14/04/24 10:45:17 INFO mapred.JobClient: HDFS_BYTES_READ=194818

14/04/24 10:45:17 INFO mapred.JobClient: FILE_BYTES_WRITTEN=809644

14/04/24 10:45:17 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=287

14/04/24 10:45:17 INFO mapred.JobClient: Extjoiner.ExitStatus

14/04/24 10:45:17 INFO mapred.JobClient: reduce.00=134

- 59 -

Page 65: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

14/04/24 10:45:17 INFO mapred.JobClient: Map-Reduce Framework

14/04/24 10:45:17 INFO mapred.JobClient: Map output materialized bytes=320604

14/04/24 10:45:17 INFO mapred.JobClient: Map input records=10020

14/04/24 10:45:17 INFO mapred.JobClient: Reduce shuffle bytes=320604

14/04/24 10:45:17 INFO mapred.JobClient: Spilled Records=20040

14/04/24 10:45:17 INFO mapred.JobClient: Map output bytes=300540

14/04/24 10:45:17 INFO mapred.JobClient: Total committed heap usage (bytes)=826212352

14/04/24 10:45:17 INFO mapred.JobClient: CPU time spent (ms)=6180

14/04/24 10:45:17 INFO mapred.JobClient: Map input bytes=190320

14/04/24 10:45:17 INFO mapred.JobClient: SPLIT_RAW_BYTES=1032

14/04/24 10:45:17 INFO mapred.JobClient: Combine input records=0

14/04/24 10:45:17 INFO mapred.JobClient: Reduce input records=10020

14/04/24 10:45:17 INFO mapred.JobClient: Reduce input groups=40

14/04/24 10:45:17 INFO mapred.JobClient: Combine output records=0

14/04/24 10:45:17 INFO mapred.JobClient: Physical memory (bytes) snapshot=876621824

14/04/24 10:45:17 INFO mapred.JobClient: Reduce output records=0

14/04/24 10:45:17 INFO mapred.JobClient: Virtual memory (bytes) snapshot=5048295424

14/04/24 10:45:17 INFO mapred.JobClient: Map output records=10020

EX0003:ジョブの実行に失敗しました。

ログから、Reduceタスクの00番が、復帰値134を返していることがわかります。

134はCOBOLの実行時エラー(Uエラー)の復帰値のため、実行時エラーが起きている可能性が高いことがわかります。

スレーブサーバのシスログを確認します。

# tail /var/log/messages

(ログ抜粋)

Apr 24 10:45:17 hadoop2 : COBOL:rts64: HALT: JMP0015I-U [PID:000053FA TID:6BEC76E0] CANNOT CALL PROGRAM 'ABC'. "dlopen-

so=libABC.so: cannot open shared object file: No such file or directory dlsym-out=./reduce.exe: undefined symbol: ABC"

PGM=REDUCE. LINE=54

該当する時間に、実行時エラーが発生していることがわかります。

- 60 -

Page 66: ユーザーズガイド Hadoop連携機能編 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m140018/j2ul...Hadoop分散ファイルシステム(HDFS:Hadoop Distributed File

索 引[H]

Hadoop出力データファイル....................................................... 6Hadoopジョブ..............................................................................2Hadoop入力データファイル....................................................... 5Hadoop分散ファイルシステム.................................................... 9HDFS.......................................................................................... 9

[J]JobClient.....................................................................................2JobTracker.................................................................................. 2

[M]MapReduce.................................................................................1MapReduce設定ファイル......................................................... 29MapReduceフレームワーク........................................................ 2Map出力データファイル............................................................ 5Mapタスク................................................................................... 2Map入力データファイル............................................................ 5

[P]PDFS...........................................................................................9

[R]Reduce出力データファイル........................................................6Reduceタスク...............................................................................2Reduce入力データファイル........................................................5

[S]Shuffle&sort............................................................................... 5

[T]TaskTracker........................................................................... 3,19

[た]タスク...........................................................................................2

- 61 -