457 Views
May 23, 18
スライド概要
【PLAZMA Data Platform Day】「信頼性×大規模」サービスを運営する会社が語る! サービスを安定的、かつ、スケーラブルに運営するための技術事例勉強会 ~大規模データ分析基盤編~
https://techplay.jp/event/669345
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
ヤフーにおける Hadoop Operations 2018.05.22 @PLAZMA Data Platform Day ヤフー株式会社 データ&サイエンスソリューション統括本部 安達 寛之 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介 安達 寛之 (Hiroyuki Adachi) 2016.04 ヤフー株式会社 新卒入社 2016.10-2018.03 Hadoopのバージョンアップ自動化、 チューニング、運用の自動化など 2018.04Hadoop運用チームのリーダー Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 2
アジェンダ ヤフーとそのデータ基盤 ヤフーのHadoop環境とHadoopチーム Hadoopの運用の自動化 これからの成長に向けて Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 3
ヤフーとそのデータ基盤 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! JAPAN Over 100 services 71.3B PV/M 90M DUB 43M MAU Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 5
ビジネスの拡大とデータの増加 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 6
ビジネスの拡大とデータの増加 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 7
データ基盤 900 DBs RDB 25B 2,000 60 query/day files nodes nodes DWH Object Storage KVS Presto 300K Hadoop 4,100 nodes 120 PB Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 8
マルチビッグデータドリブンカンパニー https://linotice.tumblr.com/post/164962607234/20170904 スパコン「kukai」 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. https://dataforest.yahoo.co.jp/ データフォレスト構想 9
ヤフーのHadoop環境と Hadoopチーム Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Hadoopクラスタの構成 HDP 2.3 + Ambari 2.4 1500 Nodes Type1 (DN/NM): Xeon E5-2683v3*2, 128GB Type2 (DN/NM): Large data disk Type3 (NM): No data disk Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 11
クラスタコンポーネント Hive Server2 Oozie Query Processing Hive Pig SparkSQL Execution Engine Map Reduce Tez Spark API Resource Management File System Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. HttpFS YARN HDFS 12
データ量とワークロード HDFS使用量は約37PB YARNは平均80%のリソースを使用 50-60TB/dayで増加 マルチテナント環境 ETL/eコマース/広告/検索/… 2-3万job/day Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 13
Hadoopチームの変遷 20 Team members 15 サポート の強化 10 5 バージョン アップ自動化 自動化 の拡大 自動化ツール の安定化 DevOps の加速 0 2016H2 2017H1 Dev Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Ops DevOps 2017H2 2018H1 UserSupport 14
Hadoopチームの変遷 バージョンアップの自動化をタスクフォース として3ヶ月で実施 定常運用にも自動化を拡大 開発したツールを安定化 運用チームと合体しDevOpsサイクルを加速 ユーザーサポートチームを切り出して注力 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 15
Hadoopの運用の自動化 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
運用の自動化の事例 1. クラスタバージョンアップの自動化 2. セキュリティ対応の自動化 3. 不良ノード対応の自動化 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 17
Hadoopの運用の自動化 1. クラスタバージョンアップ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
背景 バージョンアップ作業実績 (Meta情報更新を含むメジャーバージョンアップ) 12時間*10人で実施 何時間も人が張り付き、同じ作業を繰り返していた メンテナンス中ユーザの利用不可 ビジネス影響大 事前・事後の運用の調整も必要 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 19
目的 1. ユーザ影響を出さない ジョブ実行・HDFSの読み書きを失敗させない 提供コンポーネントの動作を保証する 2. 運用コストの削減 HA構成や大量のスレーブノードで同じ作業がある 自動化できるものは自動化する Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 20
方法 1. ユーザ影響を出さない HDFSのブロック情報を監視してタイミングを制御 HA構成を活用した安全なリスタート 2. 運用コストの削減 AmbariのAPIを使ってオペレーションをコマンド化 Ansibleでバージョンアップフローを自動化 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 21
AmbariとHadoopクラスタ Web UI REST API ambariambariagent agent Name Name Node Node ambariambariagent agent Resource Resource Manager Manager ambariambariagent ambariagent ambariagent agent ambariagent Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Node Data Node Data Manager Node Node Data Manager Node Node Data Manager Node Manager Node … 22
Ansible 構成管理ツールの一種 バージョンアップ全体のフローをコントロール Chefと比較して 学習コストが低い 順序制御がやりやすい エージェントレス Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. - hosts: cluster become: true tasks: - name: start ambari-agent service: name=ambari-agent state=started 23
バージョンアップフロー $ ansible-playbook –i hosts playbooks/upgrade.yml Master HAを 活用 ZK, JN, NN, RM, ATS, JHS Tool ブロック 情報から タイミング を制御 LB 制御 HS2, HMS, Oozie, HttpFS Client HDFS, YARN, MapReduce2, Hive, Oozie, Pig, Spark Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Slave DataNode, NodeManager 24
自動化の効果 前回 今回 クラスタ停止時間 12時間 7分 メンテナンス時間 12時間 72時間 工数 3人*7時間=21時間 9人*12時間=108時間 停止時間と工数を大幅に削減! その後のバージョンアップでも活用! Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 25
Hadoopの運用の自動化 2. セキュリティ対応 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
セキュリティ対応 セキュリティ対応できていますか? できている or やらないといけないけど、、、 ヤフーではYJ-CSIRTが脆弱性を一元管理 期限を定めて対応している 数千台あるサーバを種類に応じて、 期限内に人手で対応するのは難しい Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 27
セキュリティ対応の状況 自動化(ワンコマンド化)しました DataNode/NodeManager NameNode/ResourceManager HiveServer2など 本番環境で稼働中 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 28
DN/NMの脆弱性対応の自動化 1. DataNode/NodeManagerのサービスアウト i. ii. iii. iv. v. ラベル付けして新規ジョブがアサインされないようにする DataNodeのデコミッション開始 実行中のコンテナ数が0になるまで待つ NodeManagerのデコミッション開始 デコミッション完了待ち 2. セキュリティアップデート&リブート 3. DataNode/NodeManagerのサービスイン i. リコミッション ii. ラベルを削除して通常通りジョブがアサインされるようにする Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 29
NameNodeの脆弱性対応の自動化 Active NameNode Standby NameNode Cold Standby 脆弱性対応 Save NameSpace メタデータのコピー NameNode停止 VIPの付け替え NameNode起動 F/O -> Standby Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. F/O -> Active 30
HiveServer2の脆弱性対応の自動化 Client Load Balancer HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 31
HiveServer2の脆弱性対応の自動化 Client Established Connection Load Balancer ⚠️ HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Wait for jobs to be finished 32
HiveServer2の脆弱性対応の自動化 Client Established Connection Load Balancer ⚠️ HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Wait for jobs to be finished 33
HiveServer2の脆弱性対応の自動化 Client Load Balancer ⚠️ Security Update HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 34
HiveServer2の脆弱性対応の自動化 Client Load Balancer ⚠️ HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 35
HiveServer2の脆弱性対応の自動化 Client Load Balancer HiveServer2 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 36
自動化の効果 運用工数の削減 コンポーネント毎に1コマンド実行すれば良い 安全なオペレーション 適切なチェックを実施 手順の抜け漏れもない 期限内の対応 人手だと終わらないが自動だと昼夜を問わずできる Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 37
Hadoopの運用の自動化 3. 不良ノード対応 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
背景 数百〜数千台あると普通に壊れる ディスク and/or メモリ 不良DN/NMによる影響 HDFSのブロックが壊れるバグ(HDFS-9958) ライブラリが読めなくてタスクが失敗する 明確な判断基準がない 故障度合いの判断、確認頻度がまちまち Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 39
故障度合いの定量化 dmesgなどから、ハードウェアのエラー メッセージをスキャンし、スコアリング エラーパターン例 section_type: PCIe error section_type: memory error CE memory scrubbing error スコア 50 20 1 域値以上のものを不良ノードとみなす Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 40
自動サービスアウト 3. Request for decommission 1. Report score 4. Decommission bad node 2. Fetch score DNs/NMs Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Ops server host1.yahoo.co.jp { "ambari_agent_disk_usage": "OK", "critical_disks": [ "/dev/sdg" ], "gridops_disk_check": "WARNING", "gridops_system_check": "CRITICAL", "hdfs_status": "LIVE", "registered_in_ambari": true, "server_id": 358269, "service_status": 7, "system_check_severity": 1218, "warning_disks": [], "yarn_status": "RUNNING" } 41
自動化の効果 SLAの維持 故障を早期に検出し順次修理することができるので、 一定の性能を保つことができる 運用工数の削減 サービスアウト作業が大きく減る 不良ノードに起因した問い合わせ対応が減る Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 42
運用の自動化の振り返り 現在の課題>未来の課題=過去の課題 の順で受け入れられやすい まずはスモールスタートから 本番でしか起きないこともあるので リードオンリーモードは効果的 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 43
これからの成長に向けて Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
データ基盤 データの増加 新しくワシントン州にデータセンターを建設中 Erasure Codingに期待 NameNodeの負荷対策 Log Aggregation専用の小クラスタにオフロード HDFS Federationに期待 コンテナ、機械学習、GPU、etc. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
運用体制 スケーラブルに クラスタが大きくなるから人も増やす、とはいかない 自動化できるものは自動化する 共通化できるものは共通化する Infrastructure as Code 個別に変更を加えない 変化を恐れない(恐れなくていいようにする) Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 46
まとめ Hadoopの運用を自動化 クラスタバージョンアップ工数削減 定期的なセキュリティ対応 不良ノード対応でSLAを維持 データ基盤と運用をよりスケーラブルに データ利活用推進による需要増加への対応 基盤だけでなく人もスケールしないとついていけない Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 47