Hadoop >
これは、主に Hadoop およびその関連アプリケーション管理者向けの運用ガイドです。
目次 †
構成管理 †
- Chef - 大規模クラスタの場合には、当然運用インフラもスケールアウトする必要があります。
- Ansible
クラウド †
- AmazonWebServices
- OpenStack
- Eucalyptus
ネットワーク †
- ネットワークインフラ - クラスタでは南北方向よりも東西方向のトラフィックが格段に増加しますので、従来の外向きのトラフィックに特化したネットワークとは根本的に異なる内部トラフィックに耐えられるネットワークを構成する必要があります。
基盤インフラ †
- SSH
- OpenSSH
- PuTTY
- 組織内ミラーサイトの構築(リポジトリ管理): 通常、クラスタの構成ノードからインターネットへの直接アクセスは許容されないことに加えて、大規模クラスタを運用する場合にはそのセットアップやアップグレード時に外部のミラーサイトに不要な負荷をかけないためにも、組織内にローカルミラーサイト(またはキャッシュプロキシ)を構築する必要があります。ミラーする必要があるものには以下のようなものが考えられます。
- OSディストリビューションパッケージリポジトリ
- キャッシュプロキシの構築
- Debianアーカイブ
- yumリポジトリ
- 追加のリポジトリ(EPEL等)
- JDK関連プロダクト(Oracle JDK、JCEポリシーファイル等)
- Hadoop関連プロダクトのリポジトリ
- Apacheアーカイブ
- CDHリポジトリ
- HDPリポジトリ
- OS(
Debian、
CentOS)
- LightweightOS
- DNSの運用 - Kerberos認証を利用する場合にはDNSの運用が重要です。
- 認証局(CA)の運用 - HttpFS等でSSLを使用する場合に必要となります。
- Kerberos - セキュアHadoopの運用では必須です。
- Kerberos認証環境の構築
- ツール類のKerberos認証(HTTP SPNEGO)対応 - mod_auth_kerb
- LDAP - セキュアHadoopの運用では必須です。
- LDAP認可環境
運用コマンドの並列分散実行 †
- Ansibleの利用
- knife sshの利用
- Fabricの利用
- dshの利用
- pdshの利用
ログ †
Comming Soon.
監視 †
監視インフラ †
- Nagios
- Ganglia
ログ †
監査 †
- HDFS
Gateway †
- GridGateway - Hadoop関連コマンドのセキュアな実行環境
- Hoop(httpfs?) - HDFSプロキシ機能
- Oozie - ジョブワークフロー、コーディネータエンジン
メタデータ管理 †
- HCatalog - Hive 0.11に統合されました。
HDFS †
基本 †
- クォータ設定を厳格に運用するため、フルアクセスできる /tmp ディレクトリは作成しません。一般ユーザが、Pig や Hive を利用する場合、デフォルトでは /tmp 配下に一時ファイルを書き込みますので、それらの設定を変更して使用するように促します。
ホームディレクトリの作成 †
リバランス †
ノードの冗長化 †
ノードの復旧 †
ノードの復旧 †
ノードの就役(commission) †
※include、excludeファイルは、HDFS、MapReduce?両クラスタで共有しているものとします。
- 新しい DataNode の NameNode への接続を許可するために、include ファイルにその新しいノードを追加し、以下のコマンドで、NameNode のノード情報を更新します。
[@namenode]$ sudo -u hdfs hadoop dfsadmin -refreshNodes
- Hadoop の制御スクリプトでコントロールする場合には、新しいノードを slaves ファイルに追加します。
- 追加ノードの DataNode デーモンを起動します。
[@newnode]$ sudo -u hdfs hadoop-daemon.sh start datanode
- 以下のコマンドで、JobTracker の ノード情報を更新します。
[@jobtracker]$ sudo -u mapred hadoop mradmin -refreshNodes
- 追加ノードの TaskTracker デーモンを起動します。
[@newnode]$ sudo -u mapred hadoop-daemon.sh start tasktracker
- Web UI から新ノードが追加されたことを確認します。
- 必要に応じて、データブロックをバランスさせます。
[@namenode]$ sudo -u hdfs start-balancer.sh
ノードの退役(decommission) †
※include、excludeファイルは、HDFS、MapReduce?両クラスタで共有しているものとします。
- exclude ファイルにのみ退役するノードを追加し、MapReduce? クラスタを再起動します。TaskTracker は、include ファイルにエントリされ、exclude ファイルにない場合にのみ、JobTracker に接続を許可されますので、この時点で退役ノードの TaskTracker が MapReduce? クラスタから除去されます。
[hadoop@name]$ bin/stop-mapred.sh
[hadoop@name]$ bin/start-mapred.sh
- NameNode のノード情報を更新します。DataNode は、include、exclude 両ファイルにエントリがある場合、NameNode に接続できるが、退役対象となりますので、この時点で退役処理が開始され、退役ノードが保持するデータブロックが他のノードに分散されます。Web UI で確認すると、Admin State が Decommission In Progress と表示されます。
[hadoop@name]$ bin/hadoop dfsadmin -refreshNodes
- すべての退役ノードの Admin State が Decommissioned*2 となったのを確認してから、退役ノードを停止させます。
[hadoop@decommissionednode]$ bin/hadoop-daemon.sh stop tasktracker
[hadoop@decommissionednode]$ bin/hadoop-daemon.sh stop datanode
- 最後に include ファイルから退役ノードを削除し、NameNode のノード情報を更新します。slaves ファイルからも退役ノードを削除します。
[hadoop@name]$ bin/hadoop dfsadmin -refreshNodes
Hive †
- 一般ユーザが Hive を使用する場合には、HDFS上の一時作業領域(デフォルトは、/tmp)を適切に設定することを促します。Hiveの設定ファイル(conf/hive-site.xml)で、hive.exec.scratchdir の設定値を /user/${user.name} 以下に切り替えておくとよいでしょう。
- 一般ユーザ向けに、MetaStore?をサービスとして提供するとよいでしょう。
Pig †
- 一般ユーザが Pig を使用する場合には、HDFS上の一時作業領域(デフォルトは、/tmp)を適切に設定することを促します。プロパティ pig.temp.dir で設定できます。
- 一般ユーザでも問題なく Hadoop 環境に接続できるように、${PIG_HOME}/conf/pig-env.sh に以下のような設定を追加しておきます。