ページの先頭行へ戻る
Interstage Big DataParallel Processing ServerV1.0.0 ユーザーズガイド
Interstage

D.5.1 Configuration ファイルとプロパティの設定

Hadoop で DFS を使用するために設定する Configuration ファイルの設定について説明します。

Configuration ファイルには以下のものがあります。これらのファイルを“/etc/hadoop”ディレクトリに配置します。

Configuration ファイルの種類

それぞれのファイルで設定する項目について説明します。

hadoop-env.sh ファイル

“hadoop-env.sh”ファイルでは、以下の環境変数を設定してください。

export HADOOP_CLASSPATH="$HADOOP_CLASSPATH:/opt/FJSVpdfs/lib/pdfs.jar"
export HADOOP_USER_CLASSPATH_FIRST="true"
export HADOOP_SSH_OPTS="-o StrictHostKeyChecking=no -o BatchMode=yes"

また、必要に応じて JAVA_HOME も設定してください。

export JAVA_HOME=/usr/java/default

core-site.xml ファイル

“core-site.xml”ファイルで設定するプロパティについて説明します。


fs.default.name

デフォルトのファイルシステムを、"pdfs://<directory>/" の形式で指定します(<directory> 部分は省略可能)。

デフォルトファイルシステムとは、URI 形式ではないパス指定において、URI パス決定に使用されます。

例えば、fs.default.name が "pdfs:///" と設定されている場合、パス "/mydir/myfile" は "pdfs:///mydir/myfile" という URI に決定されます。

デフォルト値

file:///

設定例
<property>
  <name>fs.default.name</name>
  <value>pdfs:///</value>
</property>

fs.<scheme>.impl

DFS 用のファイルシステムクラスを、任意の Scheme に割り当てます。

値には、com.fujitsu.pdfs.fs.PdfsDirectFileSystem を指定します。

例えば、"fs.pdfs.impl" という名前のプロパティとして設定した場合、"pdfs:///mydir/myfile" のような URI でパス指定することになります。

設定例
<property>
  <name>fs.pdfs.impl</name>
  <value>com.fujitsu.pdfs.fs.PdfsDirectFileSystem</value>
</property>

io.file.buffer.size

Read/Write 時のデフォルトバッファサイズを指定します。

指定する値

4096(Byte) の倍数

デフォルト値

4096

推奨値

128KB

設定例
<property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
</property>

hadoop.tmp.dir

Hadoop で使用する一時ファイル格納用のディレクトリを指定します。

デフォルト値

/tmp/hadoop-<ユーザ名>

推奨値

デフォルト

設定例
<property>
  <name>hadoop.tmp.dir</name>
  <value>/var/tmp/hadoop-${user.name}</value>
</property>

mapred-site.xml ファイル

“mapred-site.xml”ファイルで設定するプロパティについて説明します。


mapred.local.dir

TaskTracker が MapReduce ジョブを実行している間に一時データと Map 中間出力ファイルを保存するディレクトリを指定します。
ディレクトリには、ローカルディスク内のディレクトリ(複数可)を指定します。

デフォルト値

${hadoop.tmp.dir}/mapred/local

推奨値

内蔵ディスク上のディレクトリ/mapred/local

注意

指定パスに ${user.name} を含めないようにしてください。

設定例

例)3つの内蔵ディスクが /data/1、/data/2、/data/3 にマウントされている場合

<property>
  <name>mapred.local.dir</name>
  <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

mapred.system.dir

MapReduce 処理の制御ファイルを格納するディレクトリを指定します。

デフォルト値

${hadoop.tmp.dir}/mapred/system

推奨値

/mapred/system

設定例
<property>
  <name>mapred.system.dir</name>
  <value>/mapred/system</value>
</property>

mapreduce.jobtracker.staging.root.dir

ユーザごとに MapReduce ジョブ情報ファイルを格納するディレクトリのトップディレクトリを指定します。
ジョブ情報ファイルは、“${mapreduce.jobtracker.staging.root.dir}/<ユーザ名>/mapred/staging”ディレクトリに格納されます。

デフォルト値

${hadoop.tmp.dir}/mapred/staging

推奨値

pdfs.fs.local.homedir プロパティと同じ(デフォルト:/user)(pdfs.fs.local.homedir 参照)

設定例
<property>
  <name> mapreduce.jobtracker.staging.root.dir</name>
  <value>/user</value>
</property>

mapred.job.tracker

JobTracker が動作する RPC サーバのホスト名とポート番号を、host:port (port は省略不可)の形式で指定します。ポート番号には 1024 ~ 61000 の間で未使用のポート番号を指定してください。

設定例
<property>
  <name>mapred.job.tracker</name>
  <value>host1:50001</value>
</property>

mapred.tasktracker.map.tasks.maximum

1ノードで並列実行する Map タスク数を指定します。

デフォルト値

2

推奨値

次のうち大きい方です。

  • CPU のコア数-1
    CPU のコア数は、"cat /proc/cpuinfo"で確認できます。

  • DFS を構成する全物理ディスク数÷ Hadoop クラスタの Slave ノード数(小数点以下切上げ)
    全物理ディスク数とは、例えばディスク装置側で RAID-1 のミラー構成の場合、2×LUN 数となります。

設定例
<property>
  <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>8</value>
</property>

mapred.tasktracker.reduce.tasks.maximum

1ノードで並列実行する Reduce タスク数を指定します。

デフォルト値

2

推奨値

次のうち大きい方です。

  • CPU のコア数-1
    CPU のコア数は、"cat /proc/cpuinfo"で確認できます。

  • DFS を構成する全 LUN 数÷ Hadoop クラスタの Slave ノード数(小数点以下切上げ)

設定例
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>4</value>
</property>

mapred.map.tasks.speculative.execution

Map タスクの Speculative 実行を有効にするかを指定します。

"true" の場合、実行するタスクに空きがあるノードに、現在実行中の Map タスクと同じタスクを並列に処理させ、先に完了した方を採用します。

デフォルト値

true(有効)

Hadoop クラスタで利用する MapReduce ジョブで、Map タスクの中から直接 DFS 上のファイルに Write する処理がある場合は "false" を指定してください。
どちらか不明な場合は "false" を指定してください。

設定例
<property>
  <name>mapred.map.tasks.speculative.execution</name>
  <value>false</value>
</property>

mapred.reduce.tasks.speculative.execution

Reduce タスクの Speculative 実行を有効にするかを指定します。

"true" の場合、実行するタスクに空きがあるノードに、現在実行中の Reduceタスクと同じタスクを並列に処理させ、先に完了した方を採用します。

デフォルト値

true(有効)

Hadoop クラスタで利用する MapReduce ジョブで、Reduce タスクの中から直接 DFS 上のファイルに Write する処理がある場合は "false" を指定してください。
どちらか不明な場合は "false" を指定してください。

設定例
<property>
  <name>mapred.reduce.tasks.speculative.execution</name>
  <value>false</value>
</property>

mapred.userlog.limit.kb

MapReduce タスクログの 1 タスクあたりの最大ログサイズを指定します。Hadoop の制御方式の関係で、実際のログサイズが指定した値より少し大きくなる場合があります。
MapReduce タスクログは、$HADOOP_LOG_DIR/userlogs ディレクトリ配下に作成されます。

指定する値

1(KB) 以上

デフォルト値

0(制限なし)

推奨値

1000(1MB) 程度(約 1 万行分)

一般的な利用範囲では十分な大きさですが、MapReduce ジョブのログ出力量に応じて調節してください。

設定例
<property>
  <name>mapred.userlog.limit.kb</name>
  <value>1000</value>
</property>

mapred.userlog.retain.hours

MapReduce タスクログの保存期間を指定します。タスクログは、MapReduce ジョブのエラー原因の調査に必要となる場合があります。
MapReduce タスクログは、$HADOOP_LOG_DIR/userlogs ディレクトリ配下に作成されます。

指定する値

保存時間

デフォルト値

24(時間)

推奨値

168(1 週間分)程度

指定した時間が短いと、過去のジョブを調査するときに、必要な情報を得られない場合があります。ただし、ログを保存するために使用できるディスク容量(HADOOP_LOG_DIR ディレクトリのあるディスク容量)との兼ね合いもあるため、以下を考慮して適切な時間を設定してください。

  • 許容できる容量

  • 運用業務スケジュール

  • mapred.userlog.limit.kb プロパティの値(mapred.userlog.limit.kb 参照)

仮に、1 分間に最大 1MB(約 1 万行)のログ出力を想定した場合、1 週間分保存するためには約 10GB の容量が必要になります。

設定例
<property>
  <name>mapred.userlog.retain.hours</name>
  <value>168</value>
</property>

pdfs-site.xmlファイル

必要に応じて以下のプロパティを設定してください。
通常は、pdfs.fs.local.basedir プロパティ(pdfs.fs.local.basedir 参照)と pdfs.security.authorization プロパティ(pdfs.security.authorization 参照)を設定し、その他はデフォルトのままでも使用できます。


pdfs.fs.local.basedir

DFS のマウントディレクトリのパスを指定します。
例えば、pdfs.fs.local.basedir が "/mnt/pdfs/hadoop" と設定されている場合、URI パス "pdfs:///user/bdppuser1" は OS 上の "/mnt/pdfs/hadoop/user/bdppuser1" というパスになります。

デフォルト値

/

設定例
<property>
  <name>pdfs.fs.local.basedir</name>
  <value>/mnt/pdfs/hadoop</value>
</property>

pdfs.fs.local.homedir

DFS 用 FileSystem クラス上でのユーザ用のホームディレクトリパスを指定します。
例えば、pdfs.fs.local.homedir が "/user" と設定されている場合、"bdppuser1" という名前のユーザの DFS 上ホームディレクトリ URI パスは "pdfs:///user/bdppuser1" になります。

デフォルト値

/user(HDFS と同じ)

推奨値

デフォルト(/user)

設定例
<property>
    <name>pdfs.fs.local.homedir</name>
    <value>/home</value>
</property>

pdfs.security.authorization

DFS 独自の MapReduce ジョブユーザ認証を使用するかどうかを指定します。

指定する値
  • true : 使用する

  • false : 使用しない

デフォルト値

false

推奨値

true

なお、Hadoop で Kerberos 認証を利用する場合は "false" を指定してください。

設定例
<property>
  <name>pdfs.security.authorization</name>
  <value>true</value>
</property>

pdfs.fs.local.buffer.size

Read/Write 時のデフォルトバッファサイズを指定します。
なお、このプロパティ値と io.file.buffer.size 値の大きい方が使用されます(io.file.buffer.size 参照)。

指定する値

4096(Byte) の倍数

デフォルト値

128KB

推奨値

128KB ~ 512KB

設定例
<property>
  <name>pdfs.fs.local.buffer.size</name>
  <value>524288</value>
</property>

pdfs.fs.local.block.size

MapReduce ジョブで各 Map タスクに分割するデータサイズを指定します。
<主な MapReduce ジョブの総入力データサイズ÷Slave ノード数>以下を目安に指定してください。
なお、「D.4.2 ファイルシステム作成」の際の pdfsmkfs で指定するブロックサイズ(blocksz オプション)と合わせる必要はありません。

指定する値

33554432 (32MB)の倍数

デフォルト値

256MB

最大値

1GB (1073741824)

推奨値

256MB ~ 1GB

設定例
<property>
  <name>pdfs.fs.local.block.size</name>
  <value>1073741824</value>
</property>

pdfs.fs.local.posix.umask

ファイルまたはディレクトリ作成時に設定するアクセス権にプロセスの umask 値を反映するかどうかを指定します。

指定する値
  • true : umask 値を使用する(POSIX 互換)

  • false : umask 値を使用しない(HDFS 互換)

デフォルト値

true

設定例
<property>
  <name>pdfs.fs.local.posix.umask</name>
  <value>false</value>
</property>

pdfs.fs.local.cache.location

キャッシュローカル MapReduce 機能を使用するかどうかを指定します。
有効にすることで、MapReduce ジョブ起動時に対象ファイルのメモリキャッシュ保持ノード情報を取得し、キャッシュを持っているノードに Map タスクが優先的に割り当てられるようになり Map フェーズ処理が高速になります。

指定する値
  • true : キャッシュローカル MapReduce 機能を使用する

  • false : キャッシュローカル MapReduce 機能を使用しない

デフォルト値

true

設定例
<property>
  <name>pdfs.fs.local.cache.location</name>
  <value>false</value>
</property>

pdfs.fs.local.cache.minsize

キャッシュローカル MapReduce 機能の対象から除外するファイルのサイズを指定します。メモリキャッシュ保持ノード情報の取得にはコストがかかるため、指定したサイズ未満のファイルは情報を取得しないようにすることができます。

指定する値

1(Byte) 以上

デフォルト値

1048576 (1MB)

設定例
<property>
  <name>pdfs.fs.local.cache.minsize</name>
  <value>1048576</value>
</property>

pdfs.fs.local.cache.shell

キャッシュローカル MapReduce 機能により、メモリキャッシュ情報を取得する際に使用するリモートコマンド実行パラメタを指定します。

デフォルト値

/usr/bin/ssh -o IdentityFile=%HOME/.pdfs/id_hadoop -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no -o EscapeChar=none

なお、文字列内の "%HOME" は "${pdfs.fs.local.basedir}/${pdfs.fs.local.homedir}/<ユーザ名>" に、"%USER" はユーザ名に置き換えられます。

設定例
<property>
  <name>pdfs.fs.local.cache.shell</name>
  <value> /usr/bin/ssh -o IdentityFile=/home/%USER/.ssh/id_rsa -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no -o EscapeChar=none</value>
</property>

pdfs.fs.local.cache.procs

キャッシュローカル MapReduce 機能により、メモリキャッシュ情報を取得する際の多重実行数を指定します。

デフォルト値

10

設定例
<property>
  <name>pdfs.fs.local.cache.procs</name>
  <value>40</value>
</property>