データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Similar documents
内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Joint Content Development Proposal Tech Docs and Curriculum

クエリの作成が楽になるUDF

無料セミナー資料:ビッグデータ管理基盤ソフトウェアHadoop入門

スライド 1

ビッグデータ分析を高速化する 分散処理技術を開発 日本電気株式会社

PowerPoint Presentation

Microsoft Azure Service Fabric によるレジリエントなマイクロサービスの構築

スライド 1

【Cosminexus V9】クラウドサービスプラットフォーム Cosminexus

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

PowerPoint Presentation

Microsoft PowerPoint pptx

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

Oracle Database 10g Release 2を使用したデータベース・パフォーマンス

スライド 1

Hadoop Introduction

…l…b…g…‘†[…N…v…“…O…›…~…fi…OfiÁŸ_

スライド 1

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

PowerPoint Presentation

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗


今さら聞けない!? Oracle入門 ~前編~

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

PowerPoint プレゼンテーション

Oracle Real Application Clusters 10g: 第4世代

OSSTechプレゼンテーション

TFTP serverの実装

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

PowerPoint プレゼンテーション

APEX Spreadsheet ATP HOL JA - Read-Only

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

データベース暗号化ツール「D’Amo」性能検証

Congress Deep Dive

VB実用Ⅲ⑩ フリーデータベースⅡ

9 WEB監視

Maser - User Operation Manual

MaxGauge_診断分析プロセス

Sharing the Development Database

Hadoop LZO圧縮機能の検証

ウェビナー資料

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

OSS Mtg

データベースアクセス

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

<4D F736F F D FC8E448FEE95F1837C815B835E838B C8F92E88B608F912E646F63>

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

Transcription:

データセンターの効率的な 資源活用のためのデータ収集 照会システムの設計 株式会社ネットワーク応用通信研究所前田修吾 2014 年 11 月 20 日

本日のテーマ データセンターの効率的な資源活用のためのデータ収集 照会システムの設計 時系列データを効率的に扱うための設計 1

システムの目的 データセンター内の機器のセンサーなどからデータを取集し その情報を元に機器の制御を行うことで 電力消費量を抑制する 収集したデータの中長期的なトレンドを分析し 上記の制御を効率的に行うために活用する 2

アプリケーションの例 直近の値に応じて機器を制御するアプリケーション 値の推移をグラフで表示するアプリケーション 中長期的なトレンドを分析するためのバッチ処理 3

収集する主なデータ 時刻 データが発生した時刻 Epochからの経過マイクロ秒数 ( 精度は変更の可能性あり ) 整数値 データソースID データの発生源を表すID 整数値 値 データソースの種別によって意味が異なる値 温度 湿度 CPU 使用率 メモリ使用量 消費電力など 任意の整数値 4

性能上の課題 データ量 データソース数 1 コンテナあたり 20,000 点程度 データの取得間隔と保存期間 レイテンシ 取得間隔を 5 秒 保存期間を 1 年とすると 1 コンテナあたり約 126G records データの発生 ~ データの登録にかかるレイテンシ 問合せ ~ 応答にかかるレイテンシ 数百ミリ秒 ~ 数秒 同時アクセス数 5

Impala/BigQuery の採用 Impala Hadoop 上で動作する SQL クエリエンジン MapReduce の代りに独自の仕組みでクエリを分散実行する MapReduce を使用した SQL クエリエンジンである Hive に比べて メモリ使用量が大きい代りに高速 BigQuery Google が提供するビッグデータ分析サービス カラム型データストアとツリー構造のサーバ構成によりクエリを高速処理 6

データ登録のレイテンシ Imapala CSV を HDFS に書き込んだ上で Parquet フォーマットに変換 BigQuery レイテンシが高い Google Cloud Storage にアップロードした CSV/JSON ファイルを BigQuery にロード レイテンシが高い Streaming Insert で逐次登録 レイテンシが低い quota: 10,000 ~ 100,000 rows per sec コストが高い : $0.01 per 100,000 rows 100,000 rows per sec で一日分 = $864 10 万円 7

レイヤーの分離 Speed layer? DC Batch layer Hadoop BigQuery 8

各レイヤーの役割 Speed layer 機器の制御に利用するようなデータを扱う データの保存期間は短い 低レイテンシ 少データ Batch layer 分析に利用するため全データを扱う Speed layer のデータを含む データの保存期間は長い 高レイテンシ 多データ Speed layerのデータは一時的なもの 時間が経てばBatch layerにすべてのデータが格納される 9

システム構成 Speed layer Data Collector? Worker (Speed) Worker (Speed) API Server MQTT Broker Data Collector Impala Batch layer Worker (Impala) Worker (Impala) Message Queue API Server API Server Data Collector BigQuery Worker (BigQuery) Worker (BigQuery) 10

Speed layer のデータストア RDBMS or KVS? 11

シャーディング 行単位でデータを複数サーバに分散 シャードキーと呼ばれる特定の列の値によってデータを格納するシャードを決定する方法が一般的 シャードキーの選択 時刻をキーにする場合 そのままシャードキーに使用すると 常に現在の時刻が含まれるシャードに登録が集中し シャードの再配置が頻繁に起こる ハッシュ値によるシャーディングではその問題はないが 参照の局所性が失われる データソース ID をキーにする場合 特定のデータソースのデータを検索する場合は 一つのシャードにアクセスするだけでよいため効率的 同時刻のすべてのデータが欲しい場合には すべてのシャードに問合せが必要 12

時刻によるシャーディング node1 0:00~1:00 node2 3:00~4:00 node3 6:00~7:00 1:00~2:00 4:00~5:00 7:00~8:00 2:00~3:00 5:00~6:00 9:00~10:00 select data_source_id, value from log_data where time >= '04:00' and time < '04:05' 10:00~11:00 11:00~12:00 13

データソース ID による シャーディング node1 データソース 1 node2 データソース 4 node3 データソース 7 データソース 2 データソース 5 データソース 8 データソース 3 データソース 6 データソース 9 select data_source_id, value from log_data where time >= '04:00' and time < '04:05' 14

InfluxDB Time Series Database (TSDB) SQLライクなクエリをサポート 時刻の範囲によってシャードを分割 各シャード毎にLevelDBにデータを格納 15

LevelDB ネットワーク API を持たないシンプルな KVS キーによってデータがソートされている Sequential Read / Write が高速 複数のレベルに分けてデータを保存 新しいデータは Level-0 に入り 古くなるにつれてより容量の大きいレベルに移動 Bloom filter によって探索するレベルの枝刈り 16

InfluxDB のシャーディング node1 node2 node3 0:00~1:00 1:00~2:00 2:00~3:00 3:00~4:00 4:00~5:00 5:00~6:00 6:00~7:00 7:00~8:00 9:00~10:00 10:00~11:00 11:00~12:00 select data_source_id, value from log_data where time >= '04:00' and time < '04:05' 17

シャードの expire node1 node2 node3 0:00~1:00 1:00~2:00 2:00~3:00 一定期間が過ぎた 3:00~4:00 シャードは削除 4:00~5:00 5:00~6:00 6:00~7:00 7:00~8:00 9:00~10:00 10:00~11:00 18

シャーディング レプリケーションと負荷分散 参照は負荷分散できるが登録は負荷分散できない データソースでシャードを分ければ登録負荷を分散できるが 参照時に複数シャードへのアクセスが必要 node1 node2 node3 0:00~1:00 0:00~1:00 1:00~2:00 1:00~2:00 2:00~3:00 2:00~3:00 19

プレーンの分割 データソース 8000 点 / 8 コンテナを一つの単位 (= プレーン ) として InfluxDB クラスタを分割 クラスタ分割の前段階としてテーブル分割する? InfluxDB Cluster A PlaneID=A InfluxDB Cluster B Worker (Speed) Message Queue API Server App InfluxDB Cluster C 20

まとめ スケーラビリティと低レイテンシを両立させるためレイヤーを分割 Speed layerには時系列データに適したinfluxdbを採用 InfluxDBの性能限界を考慮したプレーン分割 21

補足 InfluxDBでは時刻以外の検索や集計処理に時間がかかる Continuous Query 入力データに対して検索 集計を継続的に実行 結果は別テーブルに保存 22

データソース毎の分割 データソース ID 毎に別のテーブルにデータを保存する select * from log_data into log_data.[data_source_id] データソース ID で検索する代りに分割されたテーブルを参照する select * from log_data.213 where time > now() - 1h 23

ダウンサンプリング 1 時間毎の平均値を別のテーブルに保存する select data_source_id, mean(value) from log_data group by time(1h) into log_data.mean.1h 24