Overview
Hadoopをインストールすると、デフォルトではセキュリティが適用されていません。Hadoopにセキュリティを適用するには、[Kerberos](https://web.mit.edu/kerberos/)という認証システムを使用する必要があり、その構築はかなり難しい作業であるため、ドキュメントとしてまとめることにしました。
[Secured Hadoop 構築方法 公式ドキュメント](https://hadoop.apache.org/docs/r2.10.2/hadoop-project-dist/hadoop-common/SecureMode.html)を参考に作成しました。
Hadoopクラスターの構築
Kerberosセキュリティを適用する前に、Hadoopクラスターが既に構築されていることを前提とします。また、H/A(高可用性)のために2台のNameNodeと3台のJournalNodeがあることを前提とします。これにはZooKeeperが必要です。
Linuxユーザーの作成
Linuxに`hadoop`グループと`hdfs`アカウントが存在する必要があります。Kerberosを適用するには、そのアカウントでNameNodeやDataNodeを起動する必要があるためです。
Linux上でのディレクトリ作成
NameNodeデータ保存先の`/dfs/nn`、JournalNode保存先の`/dfs/jn`、そしてDataNode保存先の`/dfs/dn`フォルダを事前に作成し、適切な権限を付与しておく必要があります。
Kerberos Principalの作成
Kerberos Serverに`hdfs/{fqdn}@{realm}`と`HTTP/{fqdn}@{realm}`のprincipalを作成し、そのprincipalでログインできるkeytabをダウンロードしておきます。このkeytabでログインするには、`/etc/krb5.conf`ファイルが正しく定義されている必要があります。
jsvcのインストール
secured環境では、DataNodeの実行が最も難しい部分です。jsvcを使用して実行する必要があるためです。
yum install jsvcwhich jsvc
which jsvc
Configurationの修正
以下のconfigurationは、すべてのサーバーで同一である必要があります。
<!-- JournalNode -->
<!-- NameNode -->
<!-- DataNode -->
<!-- Web -->
以下のファイルにあるコメントアウトされた`JSVC_HOME`と`HADOOP_SECURE_DN_USER`の部分をコメント解除します。
`which jsvc`で得られる値をJSVC_HOMEに、HADOOP_SECURE_DN_USERには`hdfs`を設定します。
The jsvc implementation to use. Jsvc is required to run secure datanodes
that bind to privileged ports to provide authentication of data transfer
protocol. Jsvc is not required if SASL is configured for authentication of
data transfer protocol using non-privileged ports.
export JSVC_HOME=/usr/bin
On secure datanodes, user to run the datanode as after dropping privileges.
This **MUST** be uncommented to enable secure HDFS if using privileged ports
to provide authentication of data transfer protocol. This **MUST NOT** be
defined if SASL is configured for authentication of data transfer protocol
using non-privileged ports.
export HADOOP_SECURE_DN_USER=hdfs
JournalNode、NameNode、DataNodeの起動
クラスターの初期構築の場合、以下の手順が必要です。
1. ZooKeeperの起動:`zookeeper/bin/zkServer.sh start`(3台すべて)
2. ZKFCのフォーマット:`hdfs zkfc -formatZK`(1回のみ実行)
3. JournalNodeの起動:`hdfs journalnode`(3台すべて)
4. Active NameNodeのフォーマット:`hdfs namenode -format`(Active NameNodeで1回のみ実行)
5. Active NameNodeの起動:`hdfs namenode`(Active NameNodeで実行)
6. Standby NameNodeのフォーマット:`hdfs namenode -bootstrapStandby`(Standby NameNodeで1回のみ実行)
7. Standby NameNodeの起動:`hdfs namenode`(Standby NameNodeで実行)
8. ZKFCの起動:`hdfs zkfc`(Active、Standby NameNodeがあるノードで実行)
9. DataNodeの起動:`hdfs datanode`(データノードで実行)
注意点として、JournalNode、NameNode、ZKFCはhdfsアカウントで実行し、DataNodeとZooKeeperはrootアカウントで実行する必要があります。
インストールが正常に完了すると、
http://namenode_ip_address:9870 でNameNode Web UIにアクセスできます。
そして、以下のようにsecurityの部分が`on`と表示されている必要があります。
クイズ
Q1: 「Secured (Kerberized) Hadoop クラスターの構築方法」の主なトピックは何ですか?
HadoopにKerberosセキュリティを適用する方法を解説します。
HadoopにKerberosセキュリティを適用する方法を解説します。
記事全体で議論されている実践的な例やパターンを参考にしてください。
현재 단락 (1/36)
Hadoopをインストールすると、デフォルトではセキュリティが適用されていません。Hadoopにセキュリティを適用するには、[Kerberos](https://web.mit.edu/kerbero...