「Hadoop」の版間の差分
(同期) |
(カテゴリにApacheを追加) |
||
(他の1人の利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:Apache]] |
||
[[Category:分散コンピューティング]] |
[[Category:分散コンピューティング]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
4行目: | 5行目: | ||
{{Related articles end}} |
{{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}} パッケージをインストールしてください。 |
|
== 設定 == |
== 設定 == |
||
50行目: | 51行目: | ||
{{ic|/etc/hadoop/hadoop-env.sh}} で {{ic|JAVA_HOME}} を設定する必要があります。デフォルトで使用されるディレクトリは Arch Linux でインストールされるディレクトリと異なっているため必須です: |
{{ic|/etc/hadoop/hadoop-env.sh}} で {{ic|JAVA_HOME}} を設定する必要があります。デフォルトで使用されるディレクトリは Arch Linux でインストールされるディレクトリと異なっているため必須です: |
||
− | {{hc|1=/etc/hadoop/hadoop-env.sh|2=export JAVA_HOME=/usr/lib/jvm/java- |
+ | {{hc|1=/etc/hadoop/hadoop-env.sh|2=export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/}} |
== シングルノード設定 == |
== シングルノード設定 == |
||
64行目: | 65行目: | ||
$ mkdir input |
$ mkdir input |
||
$ cp /etc/hadoop/*.xml input |
$ 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/* |
||
85行目: | 86行目: | ||
$ 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}} の以下の行がコメントアウトされていることを確認してください: |
また、{{ic|/etc/ssh/sshd_config}} の以下の行がコメントアウトされていることを確認してください: |
||
109行目: | 111行目: | ||
サンプルを実行: |
サンプルを実行: |
||
− | $ hadoop jar /usr/lib/hadoop-2.7. |
+ | $ 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 ファイルを確認: |
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