Weitere ähnliche Inhalte Ähnlich wie データ活用を効率化するHadoop WebUIと権限管理改善事例 (20) データ活用を効率化するHadoop WebUIと権限管理改善事例2. 自己紹介
• 木浦正博, Masahiro Kiura
• 株式会社ドワンゴ/基盤開発本部
• ソフトウェアエンジニア
• 2015年01月入社
• I ❤️
• 分散システム
• パラメータチューニング
• Linux
• Python
• Splatoon
DWANGO Co., Ltd. all rights reserved. 2
5. ドワンゴの分析基盤とそのWebUIの紹介
• 利用用途
• 分析(UU, PV, etc..)
• リコメンデーション等
• ワークロード
• Pigが80〜90%
• 残りはSpark, Hive, etc..
• 利用ユーザ(社内)
• 連携システム 5+
• Pigユーザ(人間) 200+
• 技術者 約20%
• 非技術者 約80%
DWANGO Co., Ltd. all rights reserved. 5
2016年11月現在、利用コンポーネントは、
Hive, Hue, Yarn, Oozie, Pig, Spark, etc..
date CM version CDH version
2013/12- N/A 3u0
2014/03- N/A 4.3.0
2015/05- 5.4.1 5.4.1
2016/07- 5.7.1 5.7.1 w/patch
2016/10- 5.8.2 5.8.2
CDHアップデート情報
日中帯に基盤のリソースの多くを
Pigユーザ(人間)が
WebUIを通じて利用している
12. WebUI/権限管理の課題
• ユーザ側の要望
• Pig/MR以外を実行したい
• 実行完了通知がほしい
• より直感的なUIを利用したい
• etc..
DWANGO Co., Ltd. all rights reserved. 12
• 管理者側の課題
メンテナンス性が低くなってしまったコード
ベースのため、
• Bug Fixを入れる保守コストが高い
• 新しいHadoopコンポーネントを
提供するにも開発コストが高い
• 業務フロー変更による、WebUIの
変更コストが高い
• Hadoopの標準的な権限管理を
取り入るための開発コストが高い
新機能提供や改善を
行ってほしい
開発/運用/保守
何をするにもコスト大
14. WebUIと権限管理の移行
• Pig UDFの移行
• ユーザはWebFrontのローカルファイルシステム上のUDFを利用していた
• ローカルファイルシステムへの依存をなくし、
Hueへの移行をスムーズに
• HDFS上にローカルファイルシステム同様のUDFを準備
• ユーザへUDFの変更依頼をアナウンス
DWANGO Co., Ltd. all rights reserved. 14
例:
REGISTER ‘/path/to/datafu.jar’;
↓
REGISTER ‘/path/to/hdfs/datafu.jar’;
15. WebUIと権限管理の移行
• Hue周りのドキュメント作成
• ユーザは非技術者がほとんど
• ClouderaやApache Software Foundationの英語ドキュメント
だけでは対応できない
• Hueから以下を利用する方法について日本語で解説
• Query Editor
• Oozie Workflow/Coodinator/Bundle
• File Browser
• Job Browser
• その他 (FAQ, トラブルシューティング, etc..)
DWANGO Co., Ltd. all rights reserved. 15
16. WebUIと権限管理の移行
• HDFS ACLの導入
• HDFS ACLとは?
• POSIXベースのPermissionだけではなく
POSIXベースのACLを用いてHDFSのアクセス制御を
柔軟に行うための仕組み
DWANGO Co., Ltd. all rights reserved. 16
$ hdfs dfs -getfacl /path/to/dir_or_file
# file: /path/to/dir_or_file
# owner: hadoop
# group: supergroup
user::rwx
user:user1:r-x
user:user2:rwx
group::r-x
mask::r-x
other::---
←user1は読み取り権限あり
←user2は読み書き権限あり
17. WebUIと権限管理の移行
• HDFS ACLの導入
• HDFS ACLとは?
• POSIXベースのPermissionだけではなく
POSIXベースのACLを用いてHDFSのアクセス制御を
柔軟に行うための仕組み
DWANGO Co., Ltd. all rights reserved. 17
$ hdfs dfs -setfacl -m user:user1:rwx /path/to/dir_or_file
$ hdfs dfs -getfacl /path/to/dir_or_file
# file: /path/to/dir_or_file
# owner: hadoop
# group: supergroup
user::rwx
user:user1:rwx
user:user2:rwx
group::r-x
mask::r-x
other::---
←user1は読み書き権限あり
←user2は読み書き権限あり
18. WebUIと権限管理の移行
• HDFS ACLの導入
• 1つのHDFS ディレクトリに対して
200+のユーザのACLエントリーを追加
• HDFSの仕様として、ACLエントリーは32まで😢
https://issues.apache.org/jira/secure/attachment/12627729/HDFS-ACLs-Design-3.pdf
DWANGO Co., Ltd. all rights reserved. 18
$ hdfs dfs -setfacl -m user:user1:rwx /path/to/dir_or_file
$ hdfs dfs -setfacl -m user:user2:rwx /path/to/dir_or_file
$ …
$ hdfs dfs -setfacl -m user:user33:rwx /path/to/dir_or_file
Error setfacl: Invalid ACL: ACL has 33 entries, which exceeds maximum of 32.
19. WebUIと権限管理の移行
• HDFS ACLの導入
• ユーザ毎に参加するグループを変え、
グループのACLをHDFSディレクトリにかける
• NNのOSユーザ・グループを増やし続けた場合、
該当するHDFSディレクトリの読み書き性能が低下する
DWANGO Co., Ltd. all rights reserved. 19
ユーザ1 グループ1(HDFSディレクトリ1を参照可能)
ユーザ2 グループ2(HDFSディレクトリ2を参照可能)
ユーザ3 グループ3(HDFSディレクトリ3を参照可能)
… …
グループ所属関係
20. WebUIと権限管理の移行
• HDFS ACLの導入
• HadoopでのGroupの管理
• ShellBasedUnixGroupsMapping
OSユーザ・グループの関係により、
HDFSユーザ・グループの関係を管理
• LdapGroupsMapping
LDAP上のユーザ・グループの関係により、
HDFSユーザ・グループの関係を管理
DWANGO Co., Ltd. all rights reserved. 20
HA Proxy/LDAPを導入しユーザ・グループの紐付けを管理して解決👍
26. まとめ
• 自社開発のWebUIと権限管理の紹介
• 上記により発生した課題とそのソリューション
• ユーザ/管理者両者の課題
• HueとHDFS ACLを用いた権限管理WebUIの移行
• HDFS ACLの導入ポイント
• 権限管理WebUIの作成
• 移行によって得られたメリット
• Hadoop WebUI周りのコスト削減
• 新機能の早期提供
DWANGO Co., Ltd. all rights reserved. 26
Splatoonは任天堂の商標です。Hadoop, Hive, Pig, Spark and Oozie are either registered trademarks or trademarks of the Apache Software Foundation in the United
States and other countries. Cloudera and Hue are trademarks of Cloudera, Inc. Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
Python is a registered trademark of the PSF.
Hinweis der Redaktion 株式会社ドワンゴ、ご存知の通り、角川グループです。
ニコニコ動画、ニコニコ生放送を中心とするサービスを展開しています。
登録者数、約5,755万人、有料プランを利用するプレミアム会員数、約256万人になっています。
その他にも、通信制高等学校としてN高等学校をこの4月に開校しましたし、ゲームの祭典、闘会議2017が開催予定です。 まず、ドワンゴの分析基盤と、これまでのWebUIについてご紹介します。
次に、紹介したWebUIと権限管理のやり方の課題について説明します。
そして、Hadoop WebUIと権限管理の移行について説明します。
最後に、この移行により実現できたメリットの一部をご紹介させていただきます。
まず、ドワンゴの分析基盤のご紹介です。
利用用途は、分析、リコメンデーション等、
ワークロードは、Pigによるスクリプティングがほとんどです。
利用しているCDHは、現在5.8.2となっています。
年1回のCDHアップグレードから、年2回以上行うようになり、
アップグレード関連作業の定常化、効率化を進めています。
次に、この分析基盤の利用ユーザですが、
連携するシステムが大小含めて5つ程度
Pigユーザは、200人以上となっています。
今回の発表のメインは、この200人以上のPigユーザが利用するWebUIについてです。 さて、このWebUIですが、2014年頃から、2.5年程度運用してきました。
自社開発のコード量数万行レベルのWebアプリケーションです。
後ほどご紹介しますが、WebUIの機能として、、、 まずは、ローカル/HDFSのディレクトリ操作機能についてです。
例えば、Hueなどと比較して、自社開発のWebUIが異なる点として、
WebFrontのローカルファイルシステムの操作ができる点です。
左側から自社開発のWebUIから、
ある分析ユーザのWebFrontのホームディレクトリと
HDFS上のホームディレクトリのブラウザ画面です。
分析ユーザは、WebFrontのローカルファイルシステムに実行ファイルをアップロードし、
HDFS上のログデータを読み込み、HDFS上に結果を出力するという形でした。 次に、Pig/MRの即時/予約実行機能, 実行ログ閲覧機能です。
分析ユーザは、先ほどのWebFrontのローカルファイルシステムにアップロードした実行ファイルを選択し、
引数パラメータ、実行時間などを設定して実行します。
実行ログは画面下部に表示されます。 次に、Pigスクリプト編集・文法チェック機能です。
この機能は、分析ユーザが、Pig実行前にPigの文法チェックを行うために開発されました。
ソースコードエディタに、Pigスクリプトをコピペして、Testボタンを押下すると、文法チェック結果が画面下部に表示されます。
次にクラスタのワークロード表示機能です。
HueのJobbrowserやCloudera managerのYarnアプリケーション一覧に対応します。
分析ユーザが、自身が実行したPig等の実行進捗が閲覧できる簡易画面です。 続いて、HDFS上のデータ閲覧権限管理機能です。
詳細についてはご紹介できないのですが、ドワンゴの分析基盤では、
ユーザが閲覧できるデータを制御しています。
HDFSの閲覧制御といえば、HDFS ACLがありますが、
これまでのWebUIで利用してきた権限管理は完全な独自実装です。 ここまで、ドワンゴの分析基盤と、
そのWebUI/HDFS上のデータ閲覧権限について簡単にご紹介しました。
ご紹介したような機能を実現する一方で、
分析ユーザ視点、管理者視点で、いくつかの要望や課題がありました。
ユーザ側の要望として、、、 課題を解決するソリューションとして、いくつかのFit&Gapの結果、Hueを選択することにしました。
理由としては、
・Hueが既存のWebUIの機能をほとんど備えていること
Pigの文法チェック機能はHueにはないですが、それでも十分前述の課題を解決し得るという判断です。 まず、Pig UDFの移行についてです。
要点だけを説明しますと、既存のWebUIの場合、WebFrontの
ローカルファイルシステム上に配置されていたPig UDFをHDFS上に移行した
ということになります。
単純に考えると、hdfs dfs –moveFromLocalでいいんじゃないのかと思われる方もおられるかもわかりませんが、
毎日定常的に、何十人、何百人のPigユーザが利用するライブラリ群の場所が移動しただけで、
Pigスクリプトの書き換え忘れによりPigジョブがエラーになるケースもあります。
ちなみに、このタスクの場合、UDF配置場所の平行運用期間が2、3ヶ月程度でした。 次にドキュメントの整備です。
冒頭でお話したとおり、Pigユーザの約80%が非技術者です。
ClouderaやApache Software Fooundationの英語ドキュメントだけでは、
弊社の分析ユーザに対応しきれないため、日本語ドキュメントを整備しました。
内容としては、ここに挙げていますように、
・Query Editor
・etc… 続いて、HDFS ACLの導入についてご紹介したいと思います。
まず、HDFS ACLとは何か?という部分なんですが、
HDFS上のデータに対して、HDFS Permissionとは別にユーザやグループ毎に閲覧権限を管理するものになります。
では、どのように、HDFS ACLの参照や変更を行うのかと申しますと、
ここに記載しています通り、 hdfsコマンドのgetfaclにより特定ディレクトリのACLエントリが表示されます。
user1は、このディレクトリに対して、読み込み権限を持っており、
user2は、このディレクトリに対して、読み書き権限を持っているということがわかるかと思います。
次にACLの追加・変更ですが、この場合には、hdfsコマンドのsetfaclオプションで実施することができます。
先ほど、user1は、このディレクトリに対して、読み込み権限のみしか付与されていませんでしたが、
setfaclオプションにより、書き込み権限が追加されていることがわかるかと思います。
このHDFSの機能を利用すれば、
分析ユーザのHDFSデータ閲覧権限が制御できそうであるということがわかりますが、
何点か問題がありました。 200人以上の分析ユーザについて、ACLエントリーを追加しようとした場合に、
33人目でエラーが発生しました。
HDFSの仕様として、ACLエントリーは、32個までという制限があります。
この解決方法として、OSグループの追加という対応を実施しました。
各HDFSディレクトリを参照可能なOSグループを用意し、
各グループに所属すれば、該当するHDFSディレクトリを参照することができるという内容です。
しかし、この方法だけでも問題が発生しました。
NNのOSユーザ・グループを増やし続けると、HDFS上の読み込み・書き込み時間が長くなるという状況です。
コードベースが、1/3以下に