Hadoop >

目次

Hadoopのパフォーマンスを改善したい

HDFSのデータをOS再起動時にも保持する最も簡単なセットアップ方法

 Hadoop のデフォルト設定では、HDFSのデータなどはローカルファイルシステム上の /tmp 配下に保存されます。これは、全ノードのOS再起動時におけるデータ消失の可能性を孕んでいます。完全にシャットダウンしないクラスタは別にして、このような設定は、運用上、問題となります。したがって、以下のような手順で、データの保存領域を /tmp 以外に設定しておくことはある運用環境(たとえば、開発環境やある程度小規模なクラスタ)において有益となるでしょう。

  1. デーモンの起動ユーザを hadoop に固定します。設定ファイル中の ${user.name} が hadoop になります。
  2. 設定ファイル core-site.xml の hadoop.tmp.dir プロパティに、/tmp 配下ではない以下のようなファイルが永続化されるパスを設定します。
    1.     <property>
    2.         <name>hadoop.tmp.dir</name>
    3.         <value>/var/local/hadoop/cache/${user.name}</value>
    4.     </property>
  3. ローカルファイルシステム上に hadoop ユーザの読み書き可能な ${hadoop.tmp.dir} ディレクトリを作成します。前項の設定例の場合には、/var/local/hadoop/cache/hadoop になります。もう一つの方法としては、(同じ例で)/var/local/hadoop/cache をフルアクセスで作成し、sticky bin を立てて(パーミッション 1777)おきます。

このセットアップ手順の理由

  • hadoop.tmp.dir プロパティを変更すると、変数展開により以下の主なプロパティ値も変更されます。したがって、hadoop.tmp.dir のみを変更すればデータ保存領域などを一括して変更することが可能となっています。また、hadoop.tmp.dir の値は、ローカルファイルシステムばかりではなくHDFSのベースディレクトリになることにも注意が必要です。以下の例では、HDFS上に /var/local/hadoop/cache/hadoop/mapred/system が作成されます。
    No.プロパティデフォルト設定(1のみ上書)変数展開後の値実際のロケーション備考
    1hadoop.tmp.dir/var/local/hadoop/cache/${user.name}/var/local/hadoop/cache/hadoop-設定例です。
    2dfs.name.dir${hadoop.tmp.dir}/dfs/name/var/local/hadoop/cache/hadoop/dfs/namefile:/
    3dfs.data.dir${hadoop.tmp.dir}/dfs/data/var/local/hadoop/cache/hadoop/dfs/datafile:/
    4fs.checkpoint.dir${hadoop.tmp.dir}/dfs/namesecondary/var/local/hadoop/cache/hadoop/dfs/namesecondaryfile:/
    5mapred.system.dir${hadoop.tmp.dir}/mapred/system/var/local/hadoop/cache/hadoop/mapred/systemhdfs://hostname/
    6mapred.local.dir${hadoop.tmp.dir}/mapred/local/var/local/hadoop/cache/hadoop/mapred/localfile:/

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-20 (土) 12:20:44 (1766d)