SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
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. 無断引用・転載禁止
君はアップグレード自動化が得意な
フレンズなんだね!
写真: アフロ

Mais conteúdo relacionado

Mais procurados

Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンドプランニングツールにおけるインタラクティブな可視化を支えるバックエンド
プランニングツールにおけるインタラクティブな可視化を支えるバックエンドYahoo!デベロッパーネットワーク
 
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo!デベロッパーネットワーク
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術Yahoo!デベロッパーネットワーク
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4Yahoo!デベロッパーネットワーク
 
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampスポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampYahoo!デベロッパーネットワーク
 
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumiYahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumiYahoo!デベロッパーネットワーク
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 

Mais procurados (20)

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

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

ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118Nozomi Kurihara
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
HBase Meetup Tokyo Summer 2015 #hbasejp
HBase Meetup Tokyo Summer 2015 #hbasejpHBase Meetup Tokyo Summer 2015 #hbasejp
HBase Meetup Tokyo Summer 2015 #hbasejpCloudera Japan
 
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介Daisuke Ikeda
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo!デベロッパーネットワーク
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Yahoo!デベロッパーネットワーク
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう株式会社オプト 仙台ラボラトリ
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorpMasatomo Ito
 
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingDataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingYahoo!デベロッパーネットワーク
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業についてHisatoshi Kikumoto
 
Unification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.jsUnification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.jsHajimeSasanuma
 

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

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

Mais de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Mais de Yahoo!デベロッパーネットワーク (20)

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