J2UL-1930-01Z0(00)2014年10月
Linux(64)
FUJITSU SoftwareNetCOBOL V11.0
ユーザーズガイドHadoop連携機能編
まえがき
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 -
2014年10月
Copyright 2012-2014 FUJITSU LIMITED
- ii -
目 次
第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 -
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 -
第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 -
・ 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 -
・ 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 -
なお、入出力処理の対象となるファイルの割当ては、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 -
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 -
そして必要に応じてレコードを加工したあと、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 -
図1.4 レコードの単純加工を行う処理の例
1.4.2 レコードの集計処理
レコードを整列して集計を行っていた処理はReduceタスクで処理することができます。以下の例では、マスタファイルを商品IDで整列
した後、商品IDごとに個数を合計して、商品ごとの出荷数ファイルを出力しています。
図1.5 レコードの集計処理の例
- 7 -
1.4.3 ファイル同士の突き合わせ処理
複数のファイルのレコードを整列して、キーでつきあわせる処理はReduceタスクで処理することができます。以下の例では、マスタファ
イルとトランザクションファイルを商品IDで整列したあと商品IDで付き合わせて、商品IDごとの商品名、単価、個数を記録したファイル
を出力しています。
図1.6 ファイル同士の突き合わせ処理の例
- 8 -
第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 -
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 -
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 -
[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 -
クローニング機能を使用しない場合は、各スレーブサーバに対して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 -
[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 -
2.5.2 Reduceタスクで使用するファイル
Reduceタスクで使用するReduce入力データファイルおよびReduce出力データファイルは、COBOLランタイムシステムがCOBOLアプリ
ケーションに対して自動的に割当てを行います。このため、あらかじめファイル識別名をMapReduce設定ファイルに指定しておく必要
があります。
ReduceタスクのCOBOLアプリケーションは、Hadoop入力データファイルに指定したすべてのファイルをReduce入力データファイルとし
てオープンできます。また、複数のReduce出力データファイルをオープンすることができます。
以下の例では、異なる2つのHadoop入力データファイルを割り当ててReduceタスクを実行しています。
Shuffle&sortにキーとして数字項目を指定しグループ化しています。ReduceタスクのCOBOLアプリケーションでは、グループ化された
レコードを読み込んで、同じキーのレコードを結合しています。
- 15 -
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 -
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 -
成功した時は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 -
この場合、追加書き込みとなっていないため、これまで同タスク内で設定されたカウンタ情報がすべて削除されます。
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 -
しきい値を超える復帰値が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 -
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 -
注意
適化による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 -
主キー一覧ファイル作成シェルには、利用する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 -
設定名 意味 指定
ファイル編成の指定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 -
- 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 -
注意
主キー一覧ファイルに含まれないキーは、すべてスペア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 -
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 -
$ 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 -
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 -
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 -
設定名 意味
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 -
(*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 -
設定内容設定名
(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 -
参考
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 -
ファイルの突き合わせ処理で複数の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 -
設定内容設定名
(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 -
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 -
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 -
設定内容設定名(*)
(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 -
設定内容設定名(*)
(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 -
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 -
設定内容設定名
(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 -
設定内容設定名
(NAME要素)設定値
(VALUE要素)備考
指定例
<name> extjoiner.csv.floatfield </name>
<value>false</value>
trueの場合、カラム内の先頭にダブルクォーテーションが存在しても、カラムを囲むダブル
クォーテーションとして扱いません
trueの場合、かつCSVデータのセパレータを省略した場合は、空白とタブがセパレータとなり
ます。このとき、空白が連続している場合は、 初の空白がセパレータとなり、残りの空白は
CSVデータの一部とみなします。
trueの場合、かつCSVデータのセパレータを指定している場合は、セパレータが連続すると
空カラムが存在するとみなして処理します。
trueの場合、かつCSVデータのセパレータを省略した場合、かつレコードの先頭に空白また
はタブがある場合、その空白またはタブはフィールド分離文字とみなしません。
trueの場合、かつCSVデータのセパレータを指定している場合、かつレコードの先頭にセパ
レータがある場合、そのセパレータはフィールド分離文字とみなします。
注意
CSVデータのセパレータは、浮動フィールド指定の有無により指定可能な値が異なります。指定可能な値は以下のとおりです。
- 43 -
・ 浮動フィールド指定が有効な場合
,(カンマ)、\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 -
参考
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 -
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 -
第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 -
・ 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 -
第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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
識別子 エラー内容 対処
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 -
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 -
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 -
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 -
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 -
索 引[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 -