Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた...

24
Jupyterで手順再現! Elasticsearch構築・運用を 実行可能ドキュメントで機械化してみた 国立情報学研究所 クラウド研究開発センター / 株式会社ボイスリサーチ 谷沢 智史

Transcript of Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた...

Jupyterで手順再現!

Elasticsearch構築・運用を

実行可能ドキュメントで機械化してみた

国立情報学研究所 クラウド研究開発センター / 株式会社ボイスリサーチ

谷沢 智史

誰?

• 谷沢智史

• 国立情報学研究所 / 株式会社ボイスリサーチ

• GitHub/Twitter: @yacchin1205

• 昔: オンラインゲームとか映像とか

• 今: クラウド運用とかロボットとか

• 国立情報学研究所(NII)でプライベートクラウドの運用支援

• 東京大学で社会人博士とか (認知科学)

Which type are you?

<https: //www.continuum.io/open-data-science> as of July 1, 2016

本日のアジェンダ

1. 国立情報学研究所(NII)におけるクラウド運用

2. Literate Computing for Reproducible Infrastructureの紹介

3. JupyterでElasticsearch 5.5環境構築ライブデモ

4. Literate Computing for Reproducible Infrastructureの考え

5. まとめ

国立情報学研究所(NII)におけるクラウド運用

国立情報学研究所には・・・

• 所内研究者向けベアメタルクラウドサービス

• 研究クラウド / アカデミックインタークラウド

ベアメタル上でのサービス構築支援

• OSSが中心• 主にHadoop族

• 教材用途: VMベースにして自由に壊せるようにしたい / それを1週間だけほしいー• 分析用途: ログ集約にはFluentdがいいなあ / 認証つけて / etc…

• Elasticsearchも対象になりつつある…

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VMNN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VM

NN

ZK

NN

ZK

ZK

DN

DN

DN

Baremetal

VM VM VM VM VMNN

ZK

NN

ZK

ZK

DN

DN

DN…

インフラエンジニアの宿命 (さだめ)

• 少量多品種なうえに … インフラは Moving Target

• ソフトウェア・周辺環境は、猛スピードで変化する• 既知のバグが修正されたり

• 新規の機能が追加されたり

• 不要な機能が削除されたり

• 既存の機能が改変されたり

• 新規のバグが混入されたり

• 未知の異常発生を前提としなければならない

→すべてを自動化するのは難しい … 人間の介在を重視

• エンジニアの闘いの記録をExplicitにする

• 過去の記録を「お手本」として運用を改善していく

自動化機械化

Hardiman, General Electric in 1965

https://www.engadget.com/2014/01/26/ge-man-amplifying-robots/

Literate

Computing

for

Reproducible

Infrastructure

Jupyter

• Data Scientist向けの道具

• 簡単にお試しできるJupyter Notebook環境

• https://tmpnb.org

Literate Computing for Reproducible Infrastructure

Jupyter + Ansible

・実行コード

・実行結果

・説明

をNotebookとして、

ひとまとめに

今日ご紹介したいもの

• Elasticsearch構築・運用をJupyter+Ansibleで

• クエリの出し方をNotebookで用意したりとか

• Acroquest Technologyさんのご協力感謝!

https://github.com/NII-cloud-operation/Literate-computing-Elasticsearch

Elasticsearch Notebook

• README.ipynbにて概要説明

• 構築・運用の手順

• 利用方法(クエリ等)の手順

Live DemoElasticsearch 5.5をAWS上に構築してみる

公開しているデモ資材を使用しています

[デモ環境の作り方については後ほど!]

“Literate Computing for Reproducible Infrastructure”

文芸的機械化• 機械的に再現できる、人が読み解ける手順

人が介在しつつも機械的に再現/再実行できる

計算機 = computation と

人間どうし = communication の分担

• 実際の実行結果が手順とともに,dataが live-code に埋

め込まれていて再現できる

• 手順や経緯が具体的に再現可能な形で表現・伝達

適用局面

日々の運用作業の証跡を記録 … Traceability

そこから手順を整理して再利用する … Reusability

マニュアルや教材を整備する … Reproducibility

これら複数局面での計算機利用を、

「適切に分節化したものを同様に紡いで」

記述・蓄積したい

ぜひ使ってみて(+Feedback)ください

• インフラ運用に必要な部品という観点で、Notebook例やExtensionを開発・公開しています

• GitHub• https://github.com/NII-cloud-operation

• Notebook例• Basics - Literate-computing-Basics• Hadoop - Literate-computing-Hadoop

• Extension• まとめ実行 - Jupyter-LC_run_through• セル識別子付与 - Jupyter-LC_nblineage• 出力要約・ログ記録 - Jupyter-LC_wrapper• 他にも色々…!

JupyterCon開催…!

• 8月jupyterconにNII

のネタを持っていき

ます!

https://conferences.oreilly.com/jupyter/jup-ny/public/schedule/detail/59995

まとめ

Jupyter notebookでの運用は

大変なこともありますが、

Literate Computing

for Reproducible Infrastructure

試してみませんか?

PullRequestもお待ちしています

付録:

デモ環境の使い方

デモ環境を公開しています

• 必要なもの• Docker Engine

• Mac, Windowsでも動作します

• Image• デモに使った環境をDockerHubにて公開しています

• NII謹製Extensionの組み込み済み

• AWS Account• ご自分のものを• 大きめのインスタンスを使うので、不要になったらインスタンスな

どリソースを削除してください (本デモはリソースの準備、Elasticsearch構築・利用までをカバーしています)

docker pull niicloudoperation/notebook:openhouse-2017-demo

デモ環境の使い方(1)

• Jupyter環境の起動

• Docker runするだけ

• Bindするアドレス・ポートを変える場合は… -p の引数を変える

• その他オプションについてはhttps://hub.docker.com/r/niicloudoperation/notebook/

• Jupyter環境へのログイン

• Docker runの出力に従う

docker run -it -p 127.0.0.1:8888:8888

niicloudoperation/notebook:openhouse-2017-demo

[C 22:50:12.120 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,

to login with a token:

http://localhost:8888/?token=XXXXXXXXXXXXXXXXXXXXXXXX

デモ環境の使い方(2)

• AWSの認証情報の登録

• EC2, VPCに関する操作を行います

• JupyterのTerminalで以下を入力

• Notebook 03_Elasticsearch構築手順への適用例

/01_01_Outline.ipynb からスタートしてください

$ aws configure

AWS Access Key ID [None]: (自身のアカウントのアクセスキー)AWS Secret Access Key [None]: (自身のアカウントのシークレットアクセスキー)Default region name [None]: us-west-2 (使用したいリージョン)Default output format [None]: json