[[Hadoopセットアップ]] >

* 目次 [#od137881]
#contents

* 他のバージョンのセットアップ [#cf3ac1f9]

** Apache Hadoop [#xe8a9270]

+ [[Hadoop2.0>Hadoop2.0セットアップ]] - YARN、次世代MapReduce
+ [[Hadoop0.23>Hadoop0.23セットアップ]] - &color(red){''DEPRECATED''};
+ Hadoop1.1
+ [[Hadoop1.0>Hadoop1.0セットアップ]] - &color(red){''DEPRECATED''};
+ [[Hadoop0.20.2xx>Hadoop0.20.2xxWithSecurityセットアップ]] - &color(red){''DEPRECATED''};
+ [[Hadoop0.20>Hadoop0.20セットアップ]]

** CDH (Cloudera's Distribution, including Apache Hadoop) [#x54287af]

+ [[CDH4>CDH4セットアップ]] - Apache Hadoop 2.0ベース。YARN、次世代MapReduce
+ [[CDH3>CDH3セットアップ]] - Apache Hadoop 0.20ベースですが、Securityをはじめ様々な機能がバックポートされています。

** HDP (Hortonworks Data Platform) [#wa59ee89]

+ [[HDP2.0>HDP2.0セットアップ]] - Apache Hadoop 2.0ベース。YARN、次世代MapReduce
+ [[HDP1.2>HDP1.2セットアップ]] - Apache Hadoop 1.1ベース。

* はじめのはじめに [#s62f7a6d]

- データ解析プラットフォーム [[Pig]] は、Hadoopクラスタ環境がなくとも動作します。Pigを使って、簡単にHadoop利用が効果的かどうかを検証することができます。詳しくは、[[Hadoopのはじめ方]]をご参照ください。

* はじめに [#t8067e8a]

- Hadoop のインストールおよびセットアップとは、基本となる[[分散ファイルシステム>Hadoop分散ファイルシステム]]とそれを利用して稼働する[[MapReduce実行環境>HadoopMapReduceフレームワーク]]を構築することです。
- 抽象的記述性の高い(つまりは人間にとって理解しやすい)大規模計算環境としては、[[MapReduce実行環境>HadoopMapReduceフレームワーク]]上で動作する [[Pig]] や [[Hive]] の利用がおすすめです。

* 3つの配布パッケージ [#ldde3563]

- Apache Hadoopでは主に三種類のパッケージ(&ref(images/package.png,nolink);''tarアーカイブ''、&ref(images/redhat.png,nolink);''RPM''、&ref(images/debian.png,nolink);''Debian'')を配布しています。
//現時点で問題が少ないという点では、tarアーカイブをおすすめします。RPMあるいはDebianパッケージを用いた場合でもほぼ同じ要領でセットアップすることができますが、そのままでは起動スクリプトやLinuxTaskControllerに問題があります。
- RPMあるいはDebianパッケージを使用するメリットは、起動ユーザが自動追加され、アプリケーションファイルが適切なロケーションに適切なパーミッションでインストールされる点です。また、システムへのサービス(デーモン)の追加も容易です。
//++ &ref(images/debian.png,nolink);Debian
//#geshi(){{
//}}
++ &ref(images/redhat.png,nolink);RPM
#geshi(){{
$ sudo rpm -ihv hadoop-1.1.2-1.i386.rpm
...
}}

* 3つの動作モード [#o6b75456]

- Hadoopの動作モードには、''スタンドアロン''、''疑似分散''、''完全分散''という3つがあります。スタンドアロンが最も簡便ですが、動作を理解するためや開発には疑似分散を、もちろん商用には完全分散を使用するとよいでしょう。

* ディレクトリ構成 [#l9845fbc]

- こちらの[[推奨構成例>推奨ディレクトリ構成forHadoop]]で構築します。

* 疑似分散モード(シングルノード) [#hf67332d]

1.1.x系最新版をセットアップします。
ローカルモードではなく、1機で分散処理環境を起動させます。以下のインスタンスを起動します。
+プライマリNameNode
+セカンダリNameNode
+DataNode
+JobTracker
+TaskTracker

** Chefレシピ [#zc4ca7c7]

参考までに、これはここで説明している疑似分散環境を構築する[[Chef]]レシピ(ロール)になります。
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/''hadoop-pseudo-distributed.rb''
#geshi(ruby,number){{
name 'hadoop-pseudo-distributed'
description 'Hadoop pseudo distributed mode'

run_list(
  'role[hadoop]'
)
}}

** ホスト名 [#uf1d34e0]

+ Hadoopの各デーモンは起動時に自ホストの名前を参照しますので、疑似分散環境(localhost)で検証する場合には、(必須ではありませんが)一時的に hostname に localhost を設定しておくと無難です。
 $ sudo hostname localhost
+ hosts ファイルも適切に設定してあることを確認します。
#geshi{{
$ cat /etc/hosts
127.0.0.1       localhost
192.168.0.10    this.host.example.com
...
}}

** LDAP認可環境 [#wec32881]

+ シングルノードではOSの静的ファイルによる権限解決で十分ですので、特にLDAPなどをセットアップする必要はありません。

** 共通 [#w4f07fb9]

+ 起動ユーザを追加します。
 $ sudo adduser --shell /bin/sh --uid 10001 --disabled-password hadoop
 $ sudo adduser --shell /bin/sh --uid 10002 --disabled-password hdfs
 $ sudo usermod -G hadoop hdfs
 $ sudo adduser --shell /bin/sh --uid 10003 --disabled-password mapred
 $ sudo usermod -G hadoop mapred
+ アーカイブを適当な場所に展開します。
#geshi{{
$ sudo tar xvzf hadoop-1.1.2.tar.gz -C /grid/usr
$ cd /grid/usr
$ sudo ln -s hadoop-1.1.2 hadoop
}}
+ ${HADOOP_HOME}/conf/''hadoop-env.sh'' に環境にあわせて以下のような内容を追加します。
#geshi(bash,number){{
#export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
#export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
#export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
export JAVA_HOME=/usr/local/jvm/java-6-ora
#export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
#export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
#export JAVA_HOME=/usr/local/jvm/java-7-ora
# The directory where pid files are stored. /tmp by default.
export HADOOP_PID_DIR=/grid/vol/0/var/run/$USER
# Where log files are stored. $HADOOP_HOME/logs by default.
export HADOOP_LOG_DIR=/grid/vol/0/var/log/$USER 
}}
++ &ref(images/debian.png,nolink);&ref(images/redhat.png,nolink);RPM、Debianパッケージの場合には、HADOOP_PID_DIRはデフォルト(/var/run/hadoop)のままで良いでしょう。
+ 設定ファイル ${HADOOP_HOME}/conf/''core-site.xml'' を編集します。Hadoopはデフォルト設定状態でも動作するように(これは正しいことです)、''hadoop.tmp.dir'' のデフォルト値である ''/tmp''/hadoop-${user.name} 以下のディレクトリに、一時作業ファイルはもちろんのこと、ある程度永続化が必要なデータ(主にHDFS関連)までも格納します。文字通り''テンポラリ''という意味での hadoop.tmp.dir 設定は必要ですので、デフォルト設定はそのままとし、以下のセットアップでは永続化が必要なデータの格納場所を適切に設定変更していきます。
#geshi(xml,number){{
...
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop-${user.name}</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/checkpoint</value>
    </property>
</configuration>
}}
++ &ref(images/note.png,nolink);ポート''9000''番は、環境によっては ''php5-fpm'' でデフォルトで利用されるようです。ご注意ください。
+ データなどを格納するディレクトリを用意します。
#geshi{{
$ sudo mkdir -p /grid/vol/0/var/{lib,run}
$ sudo mkdir -p /grid/vol/0/var/log/hdfs
$ sudo chown -R root:hadoop /grid/vol/0/var
$ sudo chmod -R 775         /grid/vol/0/var
}}
++ &ref(images/info.png,nolink);参考までに複数のHDDを搭載している場合には以下の通りです。
#geshi{{
$ sudo mkdir -p /grid/vol/{0,1,...}/var/lib
$ sudo mkdir -p /grid/vol/0/var/log/hdfs
$ sudo mkdir -p /grid/vol/0/var/run
$ sudo chown -R root:hadoop /grid/vol/{0,1,...}/var
$ sudo chmod -R 775         /grid/vol/{0,1,...}/var
}}

** HDFS [#mcfc3df9]

+ 設定ファイル(${HADOOP_HOME}/conf/''hdfs-site.xml'')を編集します。
#geshi(xml,number){{
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
}}
+ HDFSをフォーマットします。
 $ cd ${HADOOP_HOME}
 $ sudo -u hdfs ./bin/hadoop namenode -format
+ 各デーモンを起動します。
 $ sudo -u hdfs ./bin/hadoop-daemon.sh start namenode
 $ sudo -u hdfs ./bin/hadoop-daemon.sh start secondarynamenode
 $ sudo -u hdfs ./bin/hadoop-daemon.sh start datanode
//++ &ref(images/redhat.png,nolink);RPMパッケージの場合にはserviceコマンドで起動させます。
// $ sudo service hadoop-namenode start
// $ sudo service hadoop-secondarynamenode start
// $ sudo service hadoop-datanode start
//++ &ref(images/debian.png,nolink);Debianパッケージの場合にもserviceコマンドで起動させたいところですが起動スクリプト中の$USERが設定されず期待通りには動作しません。已むを得ず以下のようにユーザを指定して起動させます。残念ながら、これでは自動起動のサービスとしては使用できません。
// $ sudo -u hdfs /etc/init.d/hadoop-namenode start
// $ sudo -u hdfs /etc/init.d/hadoop-secondarynamenode start
// $ sudo -u hdfs /etc/init.d/hadoop-datanode start
+ HDFS上に必要なディレクトリを作成します。クォータ管理できないため、''/tmp'' は作成しません。
 $ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hdfs /
 $ sudo -u hdfs ./bin/hadoop fs -chmod 755 /
 $ sudo -u hdfs ./bin/hadoop fs -mkdir /user
+ Web UIのアクセスURLは以下の通りです。
 http://localhost:50070/

** MapReduce [#w45d9da8]

+ 設定ファイル(${HADOOP_HOME}/conf/''mapred-site.xml'')を編集します。
#geshi(xml,number){{
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>
    <property>
        <name>mapred.system.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/system</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.staging.root.dir</name>
        <value>/user</value>
    </property>
</configuration>
}}
+ HDFS上に必要なディレクトリを作成します。
 $ cd ${HADOOP_HOME}
 $ sudo -u hdfs ./bin/hadoop fs -mkdir /grid/vol/0/var/lib/mapred
 $ sudo -u hdfs ./bin/hadoop fs -chown mapred:mapred /grid/vol/0/var/lib/mapred
+ 各デーモンを起動します。
 $ sudo -u mapred ./bin/hadoop-daemon.sh start jobtracker
 $ sudo -u mapred ./bin/hadoop-daemon.sh start tasktracker
//++ &ref(images/redhat.png,nolink);RPMパッケージの場合にはserviceコマンドで起動させます。
// $ sudo service hadoop-jobtracker start
// $ sudo service hadoop-tasktracker start
//++ &ref(images/debian.png,nolink);Debianパッケージの場合には、HDFSの場合と同様にユーザを指定して起動させます。
// $ sudo -u mapred /etc/init.d/hadoop-jobtracker start
// $ sudo -u mapred /etc/init.d/hadoop-tasktracker start
+ Web UIのアクセスURLは以下の通りです。
 http://localhost:50030/

** テスト [#ka95b21e]

+ テストユーザを追加し、サンプルジョブを実行してみます。
#geshi(){{
$ sudo adduser alice
$ sudo -u hdfs ./bin/hadoop fs -mkdir /user/alice
$ sudo -u hdfs ./bin/hadoop fs -chown alice:alice /user/alice
$ sudo -u alice ./bin/hadoop jar hadoop-examples-1.1.2.jar pi 5 10
...
}}

* 完全分散モード [#bcb2877e]

- 完全分散とは、動作モードというよりはむしろ疑似分散ではただ一つのノードで起動させていた各デーモンを、それぞれ適切な複数の別のノード(群)で運用する環境のことです。もちろん、これが本格的な実運用環境となります。
- 構築方法は基本的に疑似分散の場合と変わりませんが、以下のような勘所があります。

** Chefレシピ [#de3b18fa]

参考までに、これはここで説明している完全分散環境を構築する[[Chef]]レシピ(ロール)です。
- &ref(images/cake.png,nolink);[[grid-chef-repo:/]]roles/''hadoop-pleiades.rb''
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/''hadoop-pleiades.rb''
#geshi(ruby,number){{
name 'hadoop-pleiades'
description 'Pleiades Hadoop cluster node'

run_list(
  # LDAP (option)
  #'role[nameservice-client-grid]',
  'role[hadoop]'
)

grid_vol_root = '/grid/vol'
hadoop_attributes = {
  # core-site.xml
  'this.cluster.name' => 'pleiades',
  'this.domain' => 'grid.example.com',
  'this.namenode.fqdn' => '${this.cluster.name}-nn.${this.domain}',
  'fs.checkpoint.dir' => "#{grid_vol_root}/0/var/lib/${user.name}/checkpoint,/export/home/${user.name}/var/lib/checkpoint",
  # hdfs-site.xml
  'this.secondary.namenode.fqdn' => '${this.cluster.name}-cn.${this.domain}',
  'dfs.name.dir' => "#{grid_vol_root}/0/var/lib/${user.name}/name,/export/home/${user.name}/var/lib/name",
  'dfs.replication' => '3',
  # mapred-site.xml
  'this.jobtracker.fqdn' => '${this.cluster.name}-jt.${this.domain}',
  'this.jobhistory.fqdn' => '${this.cluster.name}-jt.${this.domain}',
  #'this.jobhistory.fqdn' => '${this.cluster.name}-jh.${this.domain}',
}

default_attributes(
  'grid' => {
    'vol_root' => grid_vol_root,
    'max_vol_nums' => '4'
  },
  'hadoop' => hadoop_attributes
)
}}

** LDAP認可環境 [#k3a05aa2]

+ Hadoopでは協調動作する全ノードで統一的に権限認可(主にグループ解決)を管理する必要がありますので、Name Service Switch (NSS) のバックエンドデータベースとして一般的なLDAPを構築するとよいでしょう。
+ Hadoop 2.0には ''hadoop.security.group.mapping'' に設定する GroupMappingServiceProvider として LdapGroupsMapping が追加されていますが、最終的にユーザ権限でTaskプロセスを起動させる関係上、権限解決はOSレベルに統一して委譲するのが効果的です。そのような点で、''JniBasedUnixGroupsMapping'' を使用するのが運用、パフォーマンス両面で最も効果的です。
+ 基本的なLDAP環境の構築方法については、[[LDAPセットアップforHadoop]]をご参照ください。
+ Hadoop起動ユーザのためのldifファイル(例: [[hadoop_users.ldif>metasearchSvn:/ldap4hadoop/trunk/ldif/hadoop_users.ldif]])を作成し、それらのユーザを追加します。&ref(images/note.png,nolink);もしLDAPをすでにKerberos化している場合には、以下、認証に関するコマンドパラメータを適切に変更して実行してください。
 $ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f hadoop_users.ldif
 Enter LDAP Password:
 adding new entry "cn=hadoop,ou=groups,dc=grid,dc=example,dc=com"
 
 adding new entry "uid=hadoop,ou=people,dc=grid,dc=example,dc=com"
 
 adding new entry "cn=hdfs,ou=groups,dc=grid,dc=example,dc=com"
 
 adding new entry "uid=hdfs,ou=people,dc=grid,dc=example,dc=com"
 
 adding new entry "cn=mapred,ou=groups,dc=grid,dc=example,dc=com"
 
 adding new entry "uid=mapred,ou=people,dc=grid,dc=example,dc=com"
 
+ テストユーザのためのldifファイル(例: [[test_users.ldif>metasearchSvn:/ldap4hadoop/trunk/ldif/test_users.ldif]])を作成し、そのユーザを追加します。
 $ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f test_users.ldif
 Enter LDAP Password:
 adding new entry "cn=alice,ou=groups,dc=grid,dc=example,dc=com"
 
 adding new entry "uid=alice,ou=people,dc=grid,dc=example,dc=com"

** 分散監視環境 [#b80c96b4]

+ [[Ganglia>GangliaセットアップforHadoop]]
+ [[Nagios>NagiosセットアップforHadoop]]

** 基本設定 [#xef7e3e3]

+ 当然ながら、ホスト名はすべて完全修飾名(FQDN)で設定します。
+ 冗長化のためVIPを付与しているサービス(NameNode、SecondaryNameNode、JobTrackerなど)についてはそのVIPに対するDNS名を設定します。

** チェックポイントデータの冗長保存 [#k3aed8d0]

+ ${HADOOP_HOME}/conf/''core-site.xml'': fs.checkpoint.dir に複数の格納先を指定することにより、チェックポイントデータを冗長に保存することが可能になります。
#geshi(xml,number){{
    <property>
        <name>fs.checkpoint.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/checkpoint,/export/home/${user.name}/var/lib/checkpoint</value>
    </property>
}}

** HDFSメタデータの冗長保存 [#ge81a9b2]

+ ${HADOOP_HOME}/conf/''hdfs-site.xml'': dfs.name.dir に複数の格納先を指定することにより、メタデータを冗長に保存することが可能になります。この場合、指定したディレクトリはあらかじめ作成しておく必要があるようです。
#geshi(xml,number){{
    <property>
        <name>dfs.name.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/name,/export/home/${user.name}/var/lib/name</value>
    </property>
}}

** ジョブ状態情報の永続化 [#wab9ed6a]

+ ${HADOOP_HOME}/conf/''mapred-site.xml'': 比較的最近実行されたジョブの実行結果状態をHDFS上に永続化します。保存時間を時単位で設定しますので、(JobTracker障害時等の)ジョブ実行状態の確認が用途のようです。ここに永続化された状態情報は、JobTrackerのWeb UIの表示とは連動せず、''hadoop job -status <job_id>'' コマンドで参照できます((この情報は、ジョブ完了時に書き出されます。ジョブ実行時にJobTrackerを再起動した場合には、そのジョブの状態情報は失われます。))。
#geshi(xml,number){{
    <property>
        <name>mapred.job.tracker.persist.jobstatus.active</name>
        <value>true</value>
        <description>Indicates if persistency of job status information is
          active or not. (default: false)
        </description>
    </property>
    <property>
        <name>mapred.job.tracker.persist.jobstatus.hours</name>
        <value>3</value>
        <description>The number of hours job status information is persisted in DFS.
          The job status information will be available after it drops of the memory
          queue and between jobtracker restarts. With a zero value the job status
          information is not persisted at all in DFS. (default: 0)
        </description>
    </property>
    <property>
        <name>mapred.job.tracker.persist.jobstatus.dir</name>
        <value>/grid/vol/0/var/lib/mapred/jobstatus</value>
        <description>The directory where the job status information is persisted
          in a file system to be available after it drops of the memory queue and
          between jobtracker restarts. (default: /jobtracker/jobsInfo)
        </description>
    </property>
}}

** ジョブ実行履歴の永続化 [#p1d9c4ce]

+ ${HADOOP_HOME}/conf/''mapred-site.xml'': ジョブの実行履歴の保存先をデフォルトのローカルファイルシステムからHDFSに切り替えます。なお、hadoop.job.history.location は履歴の中間ファイルが書き出されるディレクトリで、ローカルファイルシステムのみが設定可能です。
#geshi(xml,number){{
    <property>
        <name>hadoop.job.history.location</name>
        <value>file:///grid/vol/0/var/lib/mapred/history</value>
        <description>hdfs:// is UNusable.</description>
    </property>
    <property>
        <name>mapred.job.tracker.history.completed.location</name>
        <value>hdfs:///grid/vol/0/var/lib/mapred/history/done</value>
    </property>
}}

** 並列化の徹底 [#w365586d]

+ 以下の例では、/grid/vol/''{0,1}'' にそれぞれのディスクをマウントしています。
 $ sudo mkdir -p /grid/vol/{0,1}/var/lib
 $ sudo chown -R root:hadoop /grid/vol/{0,1}/var
 $ sudo chmod -R 775 /grid/vol/{0,1}/var
 $ sudo mkdir -p /grid/vol/{0,1}/tmp
 $ sudo chmod 1777 /grid/vol/{0,1}/tmp
+ ${HADOOP_HOME}/conf/''hdfs-site.xml'': 当然ながら、レプリカ数も推奨値の''3''にします。
#geshi(xml,number){{
    <property>
        <name>dfs.data.dir</name>
        <value>/grid/vol/0/var/lib/${user.name}/data,/grid/vol/1/var/lib/${user.name}/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
}}
+ ${HADOOP_HOME}/conf/''mapred-site.xml''
#geshi(xml,number){{
    <property>
        <name>mapred.local.dir</name>
        <value>/grid/vol/0/var/lib/mapred/local,/grid/vol/1/var/lib/mapred/local</value>
        <description>
          The local directory where MapReduce stores intermediate data files.
          May be a comma-separated list of directories on different devices in order to spread disk i/o.
          Directories that do not exist are ignored.
        </description>
    </property>
    <property>
        <name>mapred.temp.dir</name>
        <value>/grid/vol/0/tmp/${user.name}/mapred,/grid/vol/1/tmp/${user.name}/mapred</value>
        <description>
          A shared directory for temporary files.
        </description>
    </property>
}}

** ノード管理の徹底 [#t97b13fc]

+ ${HADOOP_HOME}/conf/''hdfs-site.xml''
#geshi(xml,number){{
    <property>
        <name>dfs.hosts</name>
        <value>/grid/usr/hadoop/conf/hosts.include</value>
        <description>
          Names a file that contains a list of hosts that are permitted to connect to the namenode.
          The full pathname of the file must be specified. If the value is empty, all hosts are permitted.
        </description>
    </property>
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/grid/usr/hadoop/conf/hosts.exclude</value>
        <description>
          Names a file that contains a list of hosts that are not permitted to connect to the namenode.
          The full pathname of the file must be specified. If the value is empty, no hosts are excluded.
        </description>
    </property>
}}
+ ${HADOOP_HOME}/conf/''mapred-site.xml''
#geshi(xml,number){{
    <property>
        <name>mapred.hosts</name>
        <value>/grid/usr/hadoop/conf/hosts.include</value>
        <description>
          Names a file that contains the list of nodes that may connect to the jobtracker.
          If the value is empty, all hosts are permitted.
        </description>
    </property>
    <property>
        <name>mapred.hosts.exclude</name>
        <value>/grid/usr/hadoop/conf/hosts.exclude</value>
        <description>
          Names a file that contains the list of hosts that should be excluded by the jobtracker.
          If the value is empty, no hosts are excluded.
        </description>
    </property>
}}

** セキュア設定の有効化 [#r1f26734]

- [[Hadoop1.1withSecurityセットアップ]]

* HadoopTips [#c435e3d3]

-[[こちら>HadoopTips]]
- 運用については、[[こちら>Hadoop運用]]を参照してください。

* 参考リソース [#jc7460a4]

+ [[Apache Hadoop 1.1>http://hadoop.apache.org/common/docs/r1.1.2/]]
+ [[設定ファイル一式>metasearchSvn:/hadoop_conf/branches/localhost-1.1/]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS