JAWS DAYS 2015 に参加しました
スマートニュースの世界進出を支えるログ解析基盤 on AWS
Fluentd
- ログは日付×時間ごとに取っておく
Presto
- クエリ実行エンジン(ストレージはもたない)
- Hiveは遅いので、バッチ処理を実行する目的に特化させるべき
- 一発のクエリで複数のデータソース(Hadoop/各種DB)を扱える(プラグインを書けばなんでも)
- Prestgres
- 各種ベンダの統計・解析ツール(BIツール)は、PostgreSQLのODBC/JDBCをAPIとして扱っており、単にPostgreSQLをPrestoに置き換えただけでは使いずらいので、PostgreSQL protocol gateway for Prestoを作った
- Treasure dataのブログ参照
Google Big Query
- UDF (User Defined Function) が強力
[Deep Dive] まる見え、AWS!! ~CloudTrailとConfigからわかるAWSオペレーションのすべて~
CloudTrail
- API管理、ロギング
- APIコールだけでなく認証もロギング
- 出力形式(フィールド)の説明、扱い方
- Cloud Watch Logsと連携(Metrics Filter=特定の文字列が何回発生するか、を指定)
- 特定インスタンスタイプのインスタンスが作成されたかの監視など
CloudFormation
- メトリックフィルタの”自動”生成
- ログをCloudSearchに突っ込みたい
- JSONをテーブルにしてから、CloudSearchへ
- Lambdaイベントドリブン with S3
- 現状はリージョンは揃えないといけないけど、Lambdaすごく安い
「金融クラウド最新動向 ~AWSで金融イノベーション」
FINTECH
- Finance + Technology
- http://www.bk.mufg.jp/fintech/
- 金融機関のAWSの使用を本気で考えて要件を整理した結果、今後は基幹系も全て含めてパブリッククラウドで運用出来る
[Deep Dive] AWS OpsWorksの仕組みと活用方法のご紹介
OpsWorks
- Chefレシピの活用(DevOps as a service、Chef as a service)
- スタック(レイヤーの集合)、レイヤー(各APPごとのEC2インスタンスの雛形)、という概念
- OpsWorksエージェントが存在する
- オンプレもエージェントをインストールすることでサポート
- オートスケールによるスタック内のインスタンス数の増減をイベントとして、ELBに負荷分散対象として追加・削除ができる
Hadoop Trends and Best Practices of Running Hadoop on EC2
HDP - Modern Data Architecture
- 全データをHadoop一箇所に集約(一つのFSの上に)というコンセプト
- データ・セットのサイズ・種類問わず連携・活用できるような柔軟性
- 管理・運用が楽になる、セキュリティ、デプロイメント、全部一箇所でできてしまう
YARN over HDFS
- Data Operating Systemというべきもの
- その上でいろんなアプリが動く
- リソースの利用率を最適化する
Tiered Storage
- DataNodeはストレージではなくストレージコレクションとして見る
- 要件によって、異なるストレージタイプが使いたい
Archival Tier GA
- General Availability : 一般ユーザ向けのリリースってことね
- ストレージコスト8倍
Erasure Coding
- データの冗長保存により何倍も時間がかかる
- パリティデータを別のところに(RAID5,6っぽい)
- YARN containerを立てる
- メモリだけではなくCPUもスケジューリング、アイソレーション
- cgroupsを使う
- YARN managerは全てのノードを同一視
- 異なるアプリの要件によって、ノードを使い分ける
- Node Label(これはHBase専用、とか)によって役割を分ける
Slider ( over YARN )
- YARNに対応するのに設定ファイルを書くだけ
- Docker over Sliderも考えている
Hive
Tez
- ORC File (カラムベースフォーマット)
- MapReduceの代わりに使う
- 実行エンジンが全然違う
- Hiveの生成する実行プラン、それをさらにOptimized
LLAP
- YANRが受けたら、プロセスを立ち上げて、データを取ってくる、これでは遅い
- デーモンを起動しておいて、HiveのクエリはなるべくLLAPにプッシュダウン
- HDFSのデータをキャッシュする
Spark
- HDP2.2.3
- Hive on Spark
セキュリティ
Ambari
- 管理、インストール、など、Hadoop for everyone を達成するため
Hadoop on EC2
- EMR(AWS Elastic MapReduce)は一時的なワークロード(バッチ処理)、要件が違う
- HadoopはシーケンシャルI/Oが重要
- EBSはランダムI/Oに特化している
- ローカルストレージがポイント、インスタンスストア
- マスタノードのデータはEBSでOK
- S3はバックアップに使う
Hadoop オンプレは
Hadoop on EC2 実際にやってみた
- Ambariでインストール
- HadoopにSSDかHDDを教えてやる
- hdfs -setStoragePolicy /hbase ALL_SSD -getStoragePocy /ssd
- SSDがいっぱいになると、フォールバックして、HDDを使う
開発するように運用するインフラ
KAIZEN Platform
- Github x CircleCI
- Hubotにチャット流すのがテスト実行のトリガ
- headless browserを使ってE2E(end-to-end)テストも自動化
- yum --security -y update
- Bugsnag, Pingdom, Pagerdirty
- CircleCIがボトルネックに
ドコモの画像認識APIもAWSだった
基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )
- 作者: 西沢夢路
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/05/01
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (9件) を見る
{ "recognitionId": "0b9df4a0-d05b-11e4-b975-06d1b328602f", "isFiltered": false, "candidates": [ { "score": 39424.6015625, "itemId": "book_0001435661", "category": "book", "imageUrl": "http://ecx.images-amazon.com/images/I/61Gg9S8OUBL.jpg", "detail": { "author": [ "西沢 夢路" ], "isbn10": "4797369450", "isbn13": "978-4797369458", "pages": "536", "itemName": "基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )", "releaseDate": "2012/05/01", "publisher": "ソフトバンククリエイティブ", "type": "大型本" }, "sites": [ { "url": "http://www.amazon.co.jp/gp/product/4797369450", "title": "Amazon.co.jp: 基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! ): 西沢 夢路: 本", "imageUrl": "http://ecx.images-amazon.com/images/I/61Gg9S8OUBL.jpg" }, { "url": "http://www.7netshopping.jp/books/detail/-/accd/1106158338/subno/1", "imageUrl": "http://img.7netshopping.jp/bks/images/i8/1106158338.jpg" }, { "url": "http://books.rakuten.co.jp/rb/11652697/", "imageUrl": "http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9458/9784797369458.jpg" } ] }, { "score": 9450.80859375, "itemId": "book_0000064734", "category": "book", "imageUrl": "http://ecx.images-amazon.com/images/I/51UMQ8Ils0L.jpg", "detail": { "author": [ "宮本 信二" ], "isbn10": "4797359277", "isbn13": "978-4797359275", "pages": "544", "itemName": "基礎からのJava 改訂版 (基礎からのシリーズ)", "releaseDate": "2010/09/01", "publisher": "ソフトバンククリエイティブ", "lang": "日本語", "type": "大型本" }, "sites": [ { "url": "http://books.rakuten.co.jp/rb/6618132/", "imageUrl": "http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7973/79735927.jpg" }, { "url": "http://www.amazon.co.jp/gp/product/4797359277", "title": "Amazon.co.jp: 基礎からのJava 改訂版 (基礎からのシリーズ): 宮本 信二: 本", "imageUrl": "http://ecx.images-amazon.com/images/I/51UMQ8Ils0L.jpg" }, { "url": "http://www.7netshopping.jp/books/detail/-/accd/1102957020/subno/1", "imageUrl": "http://img.7netshopping.jp/bks/images/i0/1102957020.jpg" } ] } ] }
スポットインスタンスは1時間おきに入札されてシャットダウンされる可能性があるので、少なくとも1時間おきに保存する処理を入れる
ファンアウトパターン
- 処理を分離してQueueを間に入れることでプロセス同士を並列にかつ疎結合に
- http://aws.clouddesignpattern.org/index.php/CDP:Fanoutパターン
[Deep Dive] AWS Lambdaを紐解く
- LambdaではLinux コンテナを起動している
- Node.jsのコードをロードをデプロイ
- /tmpに書き込みできるが、ファンクションが終了した時点でコンテナは破棄される
- 前回の実行からあまり時間が立っていない場合前回のコンテナが再利用されnode.jsの初期化処理等がスキップされる
- Lambdaでネイティブライブラリを使うにはAmazon Linuxでコンパイルしてnpm installする
- S3はPushモデル (inotify?)
- 実行順序は順不同
- リトライは3回まで
- Dynamo DB/KinesisはPullモデル(ポーリング)
- 実行順序はデータが登録された順序通り
- リトライはデータが生きている間
- context.done()によって明示的にファンクションを終了、引数にエラー番号・エラーメッセージを指定できる
- Execution role、Invocation roleの違い
- 再帰で無限ループに陥る可能性があるので注意
新サービスをSimpleWorkflow + OpsWorksで構築して解ったこと
- SQSとSWFの区別
- SQSはキューに入っているジョブの数に対して、Workerプロセス数を意識する必要がある
- 同時に実行することができない場合があるし、最低1度のメッセージ到達性(複数がありえる)