「Hadoop」の版間の差分
(カテゴリを同期) |
(カテゴリにApacheを追加) |
||
(他の1人の利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:Apache]] |
||
[[Category:分散コンピューティング]] |
[[Category:分散コンピューティング]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|Apache Spark}} |
||
+ | {{Related articles end}} |
||
[[en:Hadoop]] |
[[en:Hadoop]] |
||
− | [[zh- |
+ | [[zh-hans:Hadoop]] |
[http://hadoop.apache.org Apache Hadoop] はコモディティハードウェアによる巨大なクラスタ上でアプリケーションを実行するためのフレームワークです。Hadoop フレームワークは透過的にアプリケーションに信頼性とデータモーションを提供します。Hadoop は Map/Reduce という名前の計算パラダイムを実装しています。そこではアプリケーションは多数の小さな欠片に分割して、クラスタ内のノード上でそれぞれを実行・再実行できるようにします。さらに、Hadoop は計算ノード上にデータを保存するための分散ファイルシステム (HDFS) を備えており、クラスタ全体で非常に高い帯域を実現します。MapReduce と Hadoop Distributed File System はどちらもノードでのエラーをフレームワークによって自動的に処理できるように設計されています。 |
[http://hadoop.apache.org Apache Hadoop] はコモディティハードウェアによる巨大なクラスタ上でアプリケーションを実行するためのフレームワークです。Hadoop フレームワークは透過的にアプリケーションに信頼性とデータモーションを提供します。Hadoop は Map/Reduce という名前の計算パラダイムを実装しています。そこではアプリケーションは多数の小さな欠片に分割して、クラスタ内のノード上でそれぞれを実行・再実行できるようにします。さらに、Hadoop は計算ノード上にデータを保存するための分散ファイルシステム (HDFS) を備えており、クラスタ全体で非常に高い帯域を実現します。MapReduce と Hadoop Distributed File System はどちらもノードでのエラーをフレームワークによって自動的に処理できるように設計されています。 |
||
== インストール == |
== インストール == |
||
− | + | {{AUR|hadoop}} パッケージをインストールしてください。 |
|
== 設定 == |
== 設定 == |
||
18行目: | 22行目: | ||
! scope="col"| パーミッション |
! scope="col"| パーミッション |
||
|- |
|- |
||
− | | |
+ | | HADOOP_CONF_DIR |
− | | |
+ | | {{ic|/etc/hadoop}} |
+ | | 設定ファイルが保存されるディレクトリ。 |
||
− | | align="center"|{{ic|Where configuration files are stored.}} |
||
+ | | 読み取り |
||
− | | align="left"|Read |
||
|- |
|- |
||
− | | |
+ | | HADOOP_LOG_DIR |
− | | |
+ | | {{ic|/tmp/hadoop/log}} |
+ | | ログファイルが保存されるディレクトリ。 |
||
− | | align="center"|{{ic|Where log files are stored.}} |
||
+ | | 読み書き |
||
− | | align="left"|Read and Write |
||
|- |
|- |
||
− | | |
+ | | HADOOP_SLAVES |
− | | |
+ | | {{ic|/etc/hadoop/slaves}} |
+ | | リモートスレーブホストが指定されているファイル。 |
||
− | | align="center"|{{ic|File naming remote slave hosts.}} |
||
+ | | 読み取り |
||
− | | align="left"|Read |
||
|- |
|- |
||
− | | |
+ | | HADOOP_PID_DIR |
− | | |
+ | | {{ic|/tmp/hadoop/run}} |
+ | | pid ファイルが保存されるディレクトリ。 |
||
− | | align="center"|{{ic|Where pid files are stored.}} |
||
+ | | 読み書き |
||
− | | align="left"|Read and Write |
||
|} |
|} |
||
45行目: | 49行目: | ||
/etc/locale.conf |
/etc/locale.conf |
||
+ | {{ic|/etc/hadoop/hadoop-env.sh}} で {{ic|JAVA_HOME}} を設定する必要があります。デフォルトで使用されるディレクトリは Arch Linux でインストールされるディレクトリと異なっているため必須です: |
||
− | {{ic|JAVA_HOME}} は {{pkg|jdk7-openjdk}} の {{ic|/etc/profile.d/jre.sh}} によって自動的に設定されているはずです。{{ic|JAVA_HOME}} を確認: |
||
− | $ echo $JAVA_HOME |
||
+ | {{hc|1=/etc/hadoop/hadoop-env.sh|2=export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/}} |
||
− | 何も出力されない場合、一度ログアウトしてからログインしなおして下さい。 |
||
== シングルノード設定 == |
== シングルノード設定 == |
||
+ | {{Note|このセクションは [http://hadoop.apache.org/docs/stable/ Hadoop の公式ドキュメント] に基づいています。}} |
||
− | {{out of date|This section of the article is based on documentation for an earlier version of Hadoop.}} |
||
− | |||
− | {{Note|This section is based on the [http://hadoop.apache.org/docs/stable/ Hadoop Official Documentation] }} |
||
=== スタンドアロン操作 === |
=== スタンドアロン操作 === |
||
+ | デフォルトでは、Hadoop は単一の Java プロセスで動作するように設定されています。デバッグする場合に有用です。 |
||
− | By default, Hadoop is configured to run in a non-distributed mode, as a single Java process. This is useful for debugging. |
||
+ | 以下は conf ディレクトリを input としてコピーして使用する例で、正規表現にマッチする文字列を全て出力します。出力は output ディレクトリに書き込まれます。 |
||
− | The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory. |
||
− | $ export HADOOP_CONF_DIR=/usr/lib/hadoop/orig_conf |
||
− | $ mkdir input |
||
− | $ cp /etc/hadoop/*.xml input |
||
− | $ hadoop jar /usr/lib/hadoop/hadoop-examples-*.jar grep input output 'dfs[a-z.]+' |
||
− | $ cat output/* |
||
− | For the current 2.5.x release of hadoop included in the AUR: |
||
$ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/ |
$ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/ |
||
$ mkdir input |
$ mkdir input |
||
− | $ cp /etc |
+ | $ cp /etc/hadoop/*.xml input |
− | $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples- |
+ | $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+' |
$ cat output/* |
$ cat output/* |
||
=== 擬似分散操作 === |
=== 擬似分散操作 === |
||
+ | シングルノードでも Hadoop デーモンを複数の Java プロセスで動作させる擬似分散モードを使うことができます。 |
||
− | Hadoop can also be run on a single-node in a pseudo-distributed mode where each Hadoop daemon runs in a separate Java process. |
||
+ | デフォルトでは、Hadoop は root ユーザーで実行されます。{{ic|/etc/conf.d/hadoop}} でユーザーを変更することができます: |
||
− | By default, Hadoop will run as the user root. You can change the user in {{ic|/etc/conf.d/hadoop}}: |
||
HADOOP_USERNAME="<your user name>" |
HADOOP_USERNAME="<your user name>" |
||
83行目: | 78行目: | ||
==== パスフレーズの要らない ssh の設定 ==== |
==== パスフレーズの要らない ssh の設定 ==== |
||
+ | [[sshd]] が有効になっていることを確認してください。有効になっていない場合は {{ic|systemctl enable sshd}} で有効にします。そしてパスフレーズを入力しなくてもローカルホストに接続できることを確認: |
||
− | Make sure you have [[sshd]] enabled, or start it with {{ic|systemctl enable sshd}}. Now check that you can connect to localhost without a passphrase: |
||
$ ssh localhost |
$ ssh localhost |
||
+ | パスフレーズがないとローカルホストに ssh できない場合、以下のコマンドを実行してください: |
||
− | If you cannot ssh to localhost without a passphrase, execute the following commands: |
||
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa |
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa |
||
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2 |
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2 |
||
+ | $ chmod 0600 ~/.ssh/authorized_keys |
||
+ | また、{{ic|/etc/ssh/sshd_config}} の以下の行がコメントアウトされていることを確認してください: |
||
− | Also make sure this line is commented in {{ic|/etc/ssh/sshd_config}} |
||
{{hc|/etc/ssh/sshd_config| |
{{hc|/etc/ssh/sshd_config| |
||
99行目: | 95行目: | ||
==== 実行 ==== |
==== 実行 ==== |
||
+ | 新しい分散ファイルシステムをフォーマット: |
||
− | Format a new distributed-filesystem: |
||
$ hadoop namenode -format |
$ hadoop namenode -format |
||
+ | 次の hadoop の systemd ユニットを[[起動]]してください: {{ic|hadoop-datanode}}, {{ic|hadoop-jobtracker}}, {{ic|hadoop-namenode}}, {{ic|hadoop-secondarynamenode}}, {{ic|hadoop-tasktracker}}。 |
||
− | Start the hadoop daemons: |
||
− | # systemctl start hadoop-datanode |
||
− | # systemctl start hadoop-jobtracker |
||
− | # systemctl start hadoop-namenode |
||
− | # systemctl start hadoop-secondarynamenode |
||
− | # systemctl start hadoop-tasktracker |
||
− | + | hadoop デーモンのログ出力は {{ic|<nowiki>${HADOOP_LOG_DIR}</nowiki>}} ディレクトリに書き込まれます (デフォルトでは {{ic|/var/log/hadoop}})。 |
|
+ | NameNode と JobTracker のウェブインターフェイスを開いてください。デフォルトでは以下の URL になります: |
||
− | Browse the web interface for the NameNode and the JobTracker; by default they are available at: |
||
* NameNode - http://localhost:50070/ |
* NameNode - http://localhost:50070/ |
||
* JobTracker - http://localhost:50030/ |
* JobTracker - http://localhost:50030/ |
||
+ | input ファイルを分散ファイルシステムにコピー: |
||
− | Copy the input files into the distributed filesystem: |
||
$ hadoop fs -put /etc/hadoop input |
$ hadoop fs -put /etc/hadoop input |
||
+ | サンプルを実行: |
||
− | Run some of the examples provided: |
||
− | $ hadoop jar /usr/lib/hadoop/hadoop-examples- |
+ | $ hadoop jar /usr/lib/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+' |
+ | output ファイルを確認: |
||
− | Examine the output files: |
||
+ | 分散ファイルシステムからローカルファイルシステムに output ファイルをコピーして確認: |
||
− | Copy the output files from the distributed filesystem to the local filesytem and examine them: |
||
$ hadoop fs -get output output |
$ hadoop fs -get output output |
||
$ cat output/* |
$ cat output/* |
||
+ | または、分散ファイルシステムから output ファイルを確認: |
||
− | or |
||
− | |||
− | View the output files on the distributed filesystem: |
||
$ hadoop fs -cat output/* |
$ hadoop fs -cat output/* |
||
+ | テストが完了したら、以下のコマンドでデーモンを停止します: |
||
− | When you're done, stop the daemons with: |
||
# systemctl stop hadoop-datanode |
# systemctl stop hadoop-datanode |
||
# systemctl stop hadoop-jobtracker |
# systemctl stop hadoop-jobtracker |
2023年2月23日 (木) 02:19時点における最新版
関連記事
Apache Hadoop はコモディティハードウェアによる巨大なクラスタ上でアプリケーションを実行するためのフレームワークです。Hadoop フレームワークは透過的にアプリケーションに信頼性とデータモーションを提供します。Hadoop は Map/Reduce という名前の計算パラダイムを実装しています。そこではアプリケーションは多数の小さな欠片に分割して、クラスタ内のノード上でそれぞれを実行・再実行できるようにします。さらに、Hadoop は計算ノード上にデータを保存するための分散ファイルシステム (HDFS) を備えており、クラスタ全体で非常に高い帯域を実現します。MapReduce と Hadoop Distributed File System はどちらもノードでのエラーをフレームワークによって自動的に処理できるように設計されています。
インストール
hadoopAUR パッケージをインストールしてください。
設定
デフォルトで、hadoop は擬似分散操作ができるように設定されています。/etc/profile.d/hadoop.sh
には伝統的な hadoop とは異なる値が設定されている環境変数があります。
環境変数 | 値 | 説明 | パーミッション |
---|---|---|---|
HADOOP_CONF_DIR | /etc/hadoop
|
設定ファイルが保存されるディレクトリ。 | 読み取り |
HADOOP_LOG_DIR | /tmp/hadoop/log
|
ログファイルが保存されるディレクトリ。 | 読み書き |
HADOOP_SLAVES | /etc/hadoop/slaves
|
リモートスレーブホストが指定されているファイル。 | 読み取り |
HADOOP_PID_DIR | /tmp/hadoop/run
|
pid ファイルが保存されるディレクトリ。 | 読み書き |
また、以下のファイルを正しく設定する必要があります。
/etc/hosts /etc/hostname /etc/locale.conf
/etc/hadoop/hadoop-env.sh
で JAVA_HOME
を設定する必要があります。デフォルトで使用されるディレクトリは Arch Linux でインストールされるディレクトリと異なっているため必須です:
/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/
シングルノード設定
スタンドアロン操作
デフォルトでは、Hadoop は単一の Java プロセスで動作するように設定されています。デバッグする場合に有用です。
以下は conf ディレクトリを input としてコピーして使用する例で、正規表現にマッチする文字列を全て出力します。出力は output ディレクトリに書き込まれます。
$ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/ $ mkdir input $ cp /etc/hadoop/*.xml input $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+' $ cat output/*
擬似分散操作
シングルノードでも Hadoop デーモンを複数の Java プロセスで動作させる擬似分散モードを使うことができます。
デフォルトでは、Hadoop は root ユーザーで実行されます。/etc/conf.d/hadoop
でユーザーを変更することができます:
HADOOP_USERNAME="<your user name>"
パスフレーズの要らない ssh の設定
sshd が有効になっていることを確認してください。有効になっていない場合は systemctl enable sshd
で有効にします。そしてパスフレーズを入力しなくてもローカルホストに接続できることを確認:
$ ssh localhost
パスフレーズがないとローカルホストに ssh できない場合、以下のコマンドを実行してください:
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2 $ chmod 0600 ~/.ssh/authorized_keys
また、/etc/ssh/sshd_config
の以下の行がコメントアウトされていることを確認してください:
/etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
実行
新しい分散ファイルシステムをフォーマット:
$ hadoop namenode -format
次の hadoop の systemd ユニットを起動してください: hadoop-datanode
, hadoop-jobtracker
, hadoop-namenode
, hadoop-secondarynamenode
, hadoop-tasktracker
。
hadoop デーモンのログ出力は ${HADOOP_LOG_DIR}
ディレクトリに書き込まれます (デフォルトでは /var/log/hadoop
)。
NameNode と JobTracker のウェブインターフェイスを開いてください。デフォルトでは以下の URL になります:
- NameNode - http://localhost:50070/
- JobTracker - http://localhost:50030/
input ファイルを分散ファイルシステムにコピー:
$ hadoop fs -put /etc/hadoop input
サンプルを実行:
$ hadoop jar /usr/lib/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
output ファイルを確認:
分散ファイルシステムからローカルファイルシステムに output ファイルをコピーして確認:
$ hadoop fs -get output output $ cat output/*
または、分散ファイルシステムから output ファイルを確認:
$ hadoop fs -cat output/*
テストが完了したら、以下のコマンドでデーモンを停止します:
# systemctl stop hadoop-datanode # systemctl stop hadoop-jobtracker # systemctl stop hadoop-namenode # systemctl stop hadoop-secondarynamenode # systemctl stop hadoop-tasktracker