SlideShare a Scribd company logo
Automation of Rolling Upgrade of Hadoop
Cluster without Data Lost and Job Failures
Hadoopソースコードリーディング 第22回
ヤフー株式会社
安達 寛之、山口 寛
2017年3月3日
自己紹介
2Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 安達 寛之
• 新卒1年目
• 半年ほど前からHadoopの運用、
自動化を担当
• 趣味:エレクトーン
自己紹介
3Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 山口 寛
• 2012年入社
• 〜 2015/10 広告レポートシステム
• 2015/10 〜 Hadoop運用
• 運用ツール作成
• 運用作業の自動化
• 趣味:ビール
Hadoopのマイナーアップグレードを
無停止&自動化して実施しました
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4
アジェンダ
5Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• なぜ無停止&自動化
• 実現したいこと
• どのようにアップグレードしたか
• 自動化苦労話
• まとめ
6Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
なぜ無停止にするのか?
なぜ自動化するのか?
Yahoo! JAPANのHadoopクラスタ
7Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• HDP 2.3.x + Ambari 2.2
• Master Node
• NN, RM, JN, JHS, ATS
• HiveServer2, Oozie, HttpFS
• Slave Node
• 800 DataNodes/NodeManagers
Yahoo! JAPANのHadoopクラスタ
8Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• ジョブ実行
• 2〜3万 job / day
• ストレージ利用
• 50〜60TB / day
• Total 37PB
写真: アフロ
クラスタ停止の影響
9Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• ビジネス影響大
• 数万のジョブが止まる
• データにもアクセスできない
• 運用コストもかかる
• 大量のジョブリカバリのための
調整が必要
写真: アフロ
ユーザジョブへの影響を最小限に
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10
11Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
なぜ無停止にするのか?
なぜ自動化するのか?
面倒でも自動化できることは自動化する
by Cay Horstmann
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12
同じ作業や時間がかかる作業が多い
13Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• HA構成されたコンポーネント
• 各コンポーネントで同じ作業を実施が必要
• 大量のSlaveNode
• 同一作業は機械的に実施
写真: アフロ
実現したい2つのこと
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14
15Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
1. ユーザ影響を出さない
2. 運用コストの削減
1. ユーザ影響を出さない
16Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• ジョブ実行、HDFSの読み書きに影響を出さない
• 提供コンポーネントの動作を保証する
※ ただしHA構成でないものを除く
2. 運用コストの削減(過去の実績)
17Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
バージョンアップ作業実績
(※ Meta情報更新を含むメジャーアップデート)
• 12時間 * 10人で実施
• 何時間も人が張り付き、同じ作業を繰り返していた
• メンテ中ユーザの利用不可
• 事前に日程調整必須(調整だけでも数週間)
• 事後にはジョブの実行順整理も必須
どのようにアップグレードしたか
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19
無停止アップグレード
処理 ストレージ
Map
Reduce
Hive Spark … Replica
Check
missing
AmbariのCustom Serviceを利用 スクリプトでコントロール
Ansibleで自動化
課題:Ambariのアップグレードでは不十分
20Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• Express Upgradeはクラスタが停止してしまう
• 当然Jobが失敗するので不可
• Rolling Upgradeでも問題がある
• HiveServer2に適用しているロードバランサを
コントロールできないため影響あり
• DataNodeリスタートを細かくコントロールができない
対応:Ambariのオペレーションを拡張
21Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 安全なリスタートや環境に合わせた機能を追加
• Ambari Custom Serviceとして実装
• 詳細は後ほど
• Ambari CLI*を実装
• 正常性確認の強化
• データを意識した細かいコントロール
*Ambari, NN, RM等のAPIをラップした独自ツール
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22
無停止アップグレード
処理 ストレージ
Map
Reduce
Hive Spark … Replica
Check
missing
AmbariのCustom Serviceを利用 スクリプトでコントロール
Ansibleで自動化
Ansible
23Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 構成管理ツールの一種
• 全体のアップグレードフローをコントロール
• Chefと比較して
• 学習コストが低い
• エージェントレス
• 順序制御がやりやすそう
Ansibleによるアップグレード概要図
24Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Ansible
Ambari CLI
クラスタ管理
各コンポーネントの構成管理
アップグレード順序の制御
写真: アフロ
アップグレードフロー
25Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Preparing Registering Installing Upgrading Finalize
c.f. https://docs.hortonworks.com/HDPDocuments/Ambari-2.1.1.0/bk_upgrading_Ambari/content/_manual_minor_upgrade.html
メタデータの
バックアップなど
新バージョンの
レポジトリの登録
全ホストに
新バージョンを
インストール
サービス停止
各ホストの
バージョンを更新
サービス再開
ファイナライズ
新バージョン
として稼働
Ansible Ambari AnsibleAmbari 手動
アップグレードフロー詳細
26Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
マスター系
• ZooKeeper
• NN, JN, JHS, ATS, RM
アプリケー
ション系
• HttpFS, Oozie
• HiveMeta, HiveServer2
スレーブ系
• DataNode
• NodeManager
クライ
アント系
• MapReduce2, Spark, YARN, HDFS, Oozie, Tez,
Hive, ZooKeeper, HCat, Pig
3時間
4時間
7.5時間
0.5時間
並列実行
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27
無停止アップグレード
処理 ストレージ
Map
Reduce
Hive Spark … Replica
Check
missing
AmbariのCustom Serviceを利用 スクリプトでコントロール
Ansibleで自動化
Ambari Custom Service
28Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• その名の通り、独自にカスタマイズしたサービスを
Ambariに追加することができる
• 運用コマンド等を追加
• NameNode F/O
• ロードバランサ In/Out
Ambari Custom Service
29Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• サービス構成xmlとPythonスクリプトを配置し、
Ambariにサービスとして追加するだけで、
既存のものと同様にUIやAPIからオペレーション可
• サーバにログインしてコマンドを打つ必要がなく、
オペミスも防げる
Ambari CLI
30Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 運用のために独自に作成したスクリプト
• Ambari, NameNode, ResourceManagerなどの
APIをラップし、より安全なオペレーションを提供
例: HiveServer2の安全なリスタート
31Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 各コンポーンネントごとに安全に外す手順を確立
• 実行中のジョブに影響を与えない
写真: アフロ
Load balancer
HiveServer2
Client
Wait for jobs to be finished
Established connection
Job submit
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 32
無停止アップグレード
処理 ストレージ
Map
Reduce
Hive Spark … Replica
Check
missing
AmbariのCustom Serviceを利用 スクリプトでコントロール
Ansibleで自動化
DataNodeの安全なリスタート
33Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• データ配置を考慮し横一列でリスタート
• MissingBlockなどが解消されるのを待つ
MissingBlocks: 0
UnderReplicatedBlocks: 0
CorruptBlocks: 0
写真: アフロ
各コンポーネントのテストジョブを作成
34Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• HDFS, MapReduce
Hive, Hive on Tez, Pig, Spark
HttpFS, Oozie
• バージョンアップ中に常時実行するようにし、
ジョブに影響が出ていないことを確認
アップグレードの結果
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35
ほぼ無停止
36Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
コンポーネント 無停止バージョンアップ成否 備考
HDFS ○
HttpFS ○
MapReduce ○
Hive ○
Pig ○
Spark △
Hive Merastoreとの接続が切れ、
一部のジョブが失敗
HiveServer2 △
mapreduce.tar.gzが置き替わり、
checksum不一致で一部のジョブが失敗
Oozie △ HA構成ではないので数分間停止
半自動化
37Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 大規模環境で発生した問題と対応
• NN Health Check失敗によるFailover失敗
• NNリスタート時にメモリ不足で立ち上がらない
• メモリを解放しきる前に立ち上げようとして失敗
• DNリスタート失敗
• stop/startの間にpidファイルが消えていなかったため
自動化苦労話
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 38
Pre/Post Action
39Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• AmbariのAction(Start, Stop, Restart, etc.)に
Pre-StartやPost-Startが定義できなかった
• プラグインで組み込めるようになっていると嬉しい
• ambari-server/src/.../hooks/before-START
をうまく使えばできる?
動作確認
40Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• システムテストや受け入れテストになるのでツライ
• アップグレード作業の検証に時間がかかる
• テストクラスタで数十分
• Stagingクラスタだと5時間程度
まとめ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 41
42Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
君はアップグレード自動化が得意な
フレンズなんだね!
写真: アフロ

More Related Content

PDF
Storm の新機能について @HSCR #hadoopreading
PDF
決済金融から始めるデータドリブンカンパニー #yjmu
PDF
kukai: 省エネ世界2位のディープラーニング・スパコン
PDF
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
PDF
AMPと広告とOpenRTBと #yjmu
PDF
市場で勝ち続けるための品質とテストの技術①
PDF
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Storm の新機能について @HSCR #hadoopreading
決済金融から始めるデータドリブンカンパニー #yjmu
kukai: 省エネ世界2位のディープラーニング・スパコン
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
AMPと広告とOpenRTBと #yjmu
市場で勝ち続けるための品質とテストの技術①
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること

What's hot (20)

PDF
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
PDF
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
PDF
ニュースアプリで起きた不具合から学んだ 最適への一歩
PDF
Yahoo!ブラウザーにおける市場環境の分析と戦略化
PPTX
セキュリティ教育とUX ~結ばれていた赤い糸~
PDF
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
PDF
Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp
PDF
絶対にタダでは転ばない広告エンジニア #yjmu
PDF
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
PDF
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
PDF
WWDC2017 レポート & Quick Look Preview Extension について
PDF
Spring Cloud Data Flow の紹介 #streamctjp
PDF
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
PDF
YJTC18 A-1 大規模サーバの戦略
PDF
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
PDF
私たち企業がアクセシビリティに取り組む理由 #accfes
PDF
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
PDF
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
PDF
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
PDF
State of the art Stream Processing #hadoopreading
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!ブラウザーにおける市場環境の分析と戦略化
セキュリティ教育とUX ~結ばれていた赤い糸~
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp
絶対にタダでは転ばない広告エンジニア #yjmu
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
WWDC2017 レポート & Quick Look Preview Extension について
Spring Cloud Data Flow の紹介 #streamctjp
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
YJTC18 A-1 大規模サーバの戦略
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
私たち企業がアクセシビリティに取り組む理由 #accfes
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
State of the art Stream Processing #hadoopreading
Ad

Similar to Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Failures - Hadoop Source Code Reading #22 #hadoopreading (20)

PDF
ヤフー発のメッセージキュー「Pulsar」のご紹介
PDF
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
PDF
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
PDF
HBase Meetup Tokyo Summer 2015 #hbasejp
PDF
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
PDF
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
PDF
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
PDF
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
PDF
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
PDF
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
PDF
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
PDF
Ossを使ったazureでのdev ops
PPTX
2018/1/30 Django勉強会
PPTX
技術選択とアーキテクトの役割
PDF
Datadog monitoring with HashiCorp
PDF
Elasticsearch勉強会
PDF
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
PPTX
エンジニアという職業について
PDF
Unification of the middle scale services by Nuxt.js
PDF
Hive on Tezのベストプラクティス
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
HBase Meetup Tokyo Summer 2015 #hbasejp
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Ossを使ったazureでのdev ops
2018/1/30 Django勉強会
技術選択とアーキテクトの役割
Datadog monitoring with HashiCorp
Elasticsearch勉強会
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
エンジニアという職業について
Unification of the middle scale services by Nuxt.js
Hive on Tezのベストプラクティス
Ad

More from Yahoo!デベロッパーネットワーク (20)

PDF
ゼロから始める転移学習
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
PDF
オンプレML基盤on Kubernetes パネルディスカッション
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
PDF
Persistent-memory-native Database High-availability Feature
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
PDF
ビッグデータから人々のムードを捉える #yjtc
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ゼロから始める転移学習
継続的なモデルモニタリングを実現するKubernetes Operator
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Persistent-memory-native Database High-availability Feature
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
eコマースと実店舗の相互利益を目指したデザイン #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
ビッグデータから人々のムードを捉える #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc

Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Failures - Hadoop Source Code Reading #22 #hadoopreading

  • 1. Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Failures Hadoopソースコードリーディング 第22回 ヤフー株式会社 安達 寛之、山口 寛 2017年3月3日
  • 2. 自己紹介 2Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 安達 寛之 • 新卒1年目 • 半年ほど前からHadoopの運用、 自動化を担当 • 趣味:エレクトーン
  • 3. 自己紹介 3Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 山口 寛 • 2012年入社 • 〜 2015/10 広告レポートシステム • 2015/10 〜 Hadoop運用 • 運用ツール作成 • 運用作業の自動化 • 趣味:ビール
  • 4. Hadoopのマイナーアップグレードを 無停止&自動化して実施しました Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4
  • 5. アジェンダ 5Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • なぜ無停止&自動化 • 実現したいこと • どのようにアップグレードしたか • 自動化苦労話 • まとめ
  • 6. 6Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 なぜ無停止にするのか? なぜ自動化するのか?
  • 7. Yahoo! JAPANのHadoopクラスタ 7Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • HDP 2.3.x + Ambari 2.2 • Master Node • NN, RM, JN, JHS, ATS • HiveServer2, Oozie, HttpFS • Slave Node • 800 DataNodes/NodeManagers
  • 8. Yahoo! JAPANのHadoopクラスタ 8Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • ジョブ実行 • 2〜3万 job / day • ストレージ利用 • 50〜60TB / day • Total 37PB 写真: アフロ
  • 9. クラスタ停止の影響 9Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • ビジネス影響大 • 数万のジョブが止まる • データにもアクセスできない • 運用コストもかかる • 大量のジョブリカバリのための 調整が必要 写真: アフロ
  • 10. ユーザジョブへの影響を最小限に Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10
  • 11. 11Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 なぜ無停止にするのか? なぜ自動化するのか?
  • 12. 面倒でも自動化できることは自動化する by Cay Horstmann Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12
  • 13. 同じ作業や時間がかかる作業が多い 13Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • HA構成されたコンポーネント • 各コンポーネントで同じ作業を実施が必要 • 大量のSlaveNode • 同一作業は機械的に実施 写真: アフロ
  • 14. 実現したい2つのこと Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14
  • 15. 15Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 1. ユーザ影響を出さない 2. 運用コストの削減
  • 16. 1. ユーザ影響を出さない 16Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • ジョブ実行、HDFSの読み書きに影響を出さない • 提供コンポーネントの動作を保証する ※ ただしHA構成でないものを除く
  • 17. 2. 運用コストの削減(過去の実績) 17Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 バージョンアップ作業実績 (※ Meta情報更新を含むメジャーアップデート) • 12時間 * 10人で実施 • 何時間も人が張り付き、同じ作業を繰り返していた • メンテ中ユーザの利用不可 • 事前に日程調整必須(調整だけでも数週間) • 事後にはジョブの実行順整理も必須
  • 18. どのようにアップグレードしたか Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
  • 19. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19 無停止アップグレード 処理 ストレージ Map Reduce Hive Spark … Replica Check missing AmbariのCustom Serviceを利用 スクリプトでコントロール Ansibleで自動化
  • 20. 課題:Ambariのアップグレードでは不十分 20Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • Express Upgradeはクラスタが停止してしまう • 当然Jobが失敗するので不可 • Rolling Upgradeでも問題がある • HiveServer2に適用しているロードバランサを コントロールできないため影響あり • DataNodeリスタートを細かくコントロールができない
  • 21. 対応:Ambariのオペレーションを拡張 21Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 安全なリスタートや環境に合わせた機能を追加 • Ambari Custom Serviceとして実装 • 詳細は後ほど • Ambari CLI*を実装 • 正常性確認の強化 • データを意識した細かいコントロール *Ambari, NN, RM等のAPIをラップした独自ツール
  • 22. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22 無停止アップグレード 処理 ストレージ Map Reduce Hive Spark … Replica Check missing AmbariのCustom Serviceを利用 スクリプトでコントロール Ansibleで自動化
  • 23. Ansible 23Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 構成管理ツールの一種 • 全体のアップグレードフローをコントロール • Chefと比較して • 学習コストが低い • エージェントレス • 順序制御がやりやすそう
  • 24. Ansibleによるアップグレード概要図 24Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Ansible Ambari CLI クラスタ管理 各コンポーネントの構成管理 アップグレード順序の制御 写真: アフロ
  • 25. アップグレードフロー 25Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Preparing Registering Installing Upgrading Finalize c.f. https://docs.hortonworks.com/HDPDocuments/Ambari-2.1.1.0/bk_upgrading_Ambari/content/_manual_minor_upgrade.html メタデータの バックアップなど 新バージョンの レポジトリの登録 全ホストに 新バージョンを インストール サービス停止 各ホストの バージョンを更新 サービス再開 ファイナライズ 新バージョン として稼働 Ansible Ambari AnsibleAmbari 手動
  • 26. アップグレードフロー詳細 26Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 マスター系 • ZooKeeper • NN, JN, JHS, ATS, RM アプリケー ション系 • HttpFS, Oozie • HiveMeta, HiveServer2 スレーブ系 • DataNode • NodeManager クライ アント系 • MapReduce2, Spark, YARN, HDFS, Oozie, Tez, Hive, ZooKeeper, HCat, Pig 3時間 4時間 7.5時間 0.5時間 並列実行
  • 27. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27 無停止アップグレード 処理 ストレージ Map Reduce Hive Spark … Replica Check missing AmbariのCustom Serviceを利用 スクリプトでコントロール Ansibleで自動化
  • 28. Ambari Custom Service 28Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • その名の通り、独自にカスタマイズしたサービスを Ambariに追加することができる • 運用コマンド等を追加 • NameNode F/O • ロードバランサ In/Out
  • 29. Ambari Custom Service 29Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • サービス構成xmlとPythonスクリプトを配置し、 Ambariにサービスとして追加するだけで、 既存のものと同様にUIやAPIからオペレーション可 • サーバにログインしてコマンドを打つ必要がなく、 オペミスも防げる
  • 30. Ambari CLI 30Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 運用のために独自に作成したスクリプト • Ambari, NameNode, ResourceManagerなどの APIをラップし、より安全なオペレーションを提供
  • 31. 例: HiveServer2の安全なリスタート 31Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 各コンポーンネントごとに安全に外す手順を確立 • 実行中のジョブに影響を与えない 写真: アフロ Load balancer HiveServer2 Client Wait for jobs to be finished Established connection Job submit
  • 32. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 32 無停止アップグレード 処理 ストレージ Map Reduce Hive Spark … Replica Check missing AmbariのCustom Serviceを利用 スクリプトでコントロール Ansibleで自動化
  • 33. DataNodeの安全なリスタート 33Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • データ配置を考慮し横一列でリスタート • MissingBlockなどが解消されるのを待つ MissingBlocks: 0 UnderReplicatedBlocks: 0 CorruptBlocks: 0 写真: アフロ
  • 34. 各コンポーネントのテストジョブを作成 34Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • HDFS, MapReduce Hive, Hive on Tez, Pig, Spark HttpFS, Oozie • バージョンアップ中に常時実行するようにし、 ジョブに影響が出ていないことを確認
  • 35. アップグレードの結果 Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35
  • 36. ほぼ無停止 36Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 コンポーネント 無停止バージョンアップ成否 備考 HDFS ○ HttpFS ○ MapReduce ○ Hive ○ Pig ○ Spark △ Hive Merastoreとの接続が切れ、 一部のジョブが失敗 HiveServer2 △ mapreduce.tar.gzが置き替わり、 checksum不一致で一部のジョブが失敗 Oozie △ HA構成ではないので数分間停止
  • 37. 半自動化 37Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • 大規模環境で発生した問題と対応 • NN Health Check失敗によるFailover失敗 • NNリスタート時にメモリ不足で立ち上がらない • メモリを解放しきる前に立ち上げようとして失敗 • DNリスタート失敗 • stop/startの間にpidファイルが消えていなかったため
  • 38. 自動化苦労話 Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 38
  • 39. Pre/Post Action 39Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • AmbariのAction(Start, Stop, Restart, etc.)に Pre-StartやPost-Startが定義できなかった • プラグインで組み込めるようになっていると嬉しい • ambari-server/src/.../hooks/before-START をうまく使えばできる?
  • 40. 動作確認 40Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 • システムテストや受け入れテストになるのでツライ • アップグレード作業の検証に時間がかかる • テストクラスタで数十分 • Stagingクラスタだと5時間程度
  • 41. まとめ Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 41
  • 42. 42Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 君はアップグレード自動化が得意な フレンズなんだね! 写真: アフロ