「Hadoop」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:ウェブサーバー en:Hadoop zh-CN:Hadoop [http://hadoop.apache.org Apache Hadoop] はコモディティハードウェアによる巨大なクラ...」)
 
(カテゴリにApacheを追加)
 
(2人の利用者による、間の4版が非表示)
1行目: 1行目:
[[Category:ウェブサーバー]]
+
[[Category:Apache]]
  +
[[Category:分散コンピューティング]]
  +
{{Related articles start}}
  +
{{Related|Apache Spark}}
  +
{{Related articles end}}
 
[[en:Hadoop]]
 
[[en:Hadoop]]
[[zh-CN:Hadoop]]
+
[[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 はどちらもノードでのエラーをフレームワークによって自動的に処理できるように設計されています。
   
 
== インストール ==
 
== インストール ==
[[Arch User Repository]] の {{AUR|hadoop}} パッケージをインストールしてください。
+
{{AUR|hadoop}} パッケージをインストールしてください。
   
 
== 設定 ==
 
== 設定 ==
18行目: 22行目:
 
! scope="col"| パーミッション
 
! scope="col"| パーミッション
 
|-
 
|-
| align="center"|HADOOP_CONF_DIR
+
| HADOOP_CONF_DIR
| align="left"|{{ic|/etc/hadoop}}
+
| {{ic|/etc/hadoop}}
  +
| 設定ファイルが保存されるディレクトリ。
| align="center"|{{ic|Where configuration files are stored.}}
 
  +
| 読み取り
| align="left"|Read
 
 
|-
 
|-
| align="center"|HADOOP_LOG_DIR
+
| HADOOP_LOG_DIR
| align="left"|{{ic|/tmp/hadoop/log}}
+
| {{ic|/tmp/hadoop/log}}
  +
| ログファイルが保存されるディレクトリ。
| align="center"|{{ic|Where log files are stored.}}
 
  +
| 読み書き
| align="left"|Read and Write
 
 
|-
 
|-
| align="center"|HADOOP_SLAVES
+
| HADOOP_SLAVES
| align="left"|{{ic|/etc/hadoop/slaves}}
+
| {{ic|/etc/hadoop/slaves}}
  +
| リモートスレーブホストが指定されているファイル。
| align="center"|{{ic|File naming remote slave hosts.}}
 
  +
| 読み取り
| align="left"|Read
 
 
|-
 
|-
| align="center"|HADOOP_PID_DIR
+
| HADOOP_PID_DIR
| align="left"|{{ic|/tmp/hadoop/run}}
+
| {{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/hadoop/hadoop/*.xml input
+
$ cp /etc/hadoop/*.xml input
$ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar grep input output 'dfs[a-z.]+'
+
$ 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
 
   
The hadoop daemon log output is written to the {{ic|<nowiki>${HADOOP_LOG_DIR}</nowiki>}} directory (defaults to {{ic|/var/log/hadoop}}).
+
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-*.jar grep input output 'dfs[a-z.]+'
+
$ 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.shJAVA_HOME を設定する必要があります。デフォルトで使用されるディレクトリは Arch Linux でインストールされるディレクトリと異なっているため必須です:

/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/

シングルノード設定

ノート: このセクションは Hadoop の公式ドキュメント に基づいています。

スタンドアロン操作

デフォルトでは、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 になります:

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