@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「ビッグデータ分析のシステムと開発がこれ1冊でしっかりわかる教科書」を読んだ

仕事変わって1年ほど経つがあまり詳しくなった気がしないので、周りで持っている人たちが多かったので読んでみようと思った。

  1. ビッグデータ分析の全体像
  2. ビッグデータ分析システムのアーキテクチャ
  3. 分散処理の基礎
  4. 機械学習の基礎
  5. ビッグデータの収集
  6. ビッグデータの蓄積
  7. ビッグデータの活用
  8. メタデータ管理

ビッグデータ分析の全体像として関係する用語が説明されている。
ビッグデータ分析システムについて、生成→収集→蓄積→活用までの流れが説明されている。
また、ビッグデータに関係する人として、

  • 事業組織の中に事業システム担当
  • 分析組織の中に、サイエンス担当、エンジニアリング担当とデータビジネス担当
  • 事業組織の中に、データ閲覧者、データ利用者

が紹介されている。

分散処理の基本では、分散処理が必要になった理由をボトルネックについての解説から始まり、ストレージ、計算、ネットワークとリソース管理について説明がされている。これから触る人にもさらっと読みやすく書いてある。今まで触ってて復習をする意味でもさくっと読めて良かった。

機械学習の基礎でも、機械学習とはから始まり、データの準備、開発プロセス、ツールについてなど幅広く書かれている。

データの収集では、バッチデート収集とストリームデータ収集に分けて説明し、それぞれの具体例が書かれており分かりやすかった。具体例が多いので想像がつきやすい。

データの蓄積では、データレイクとデータウェアハウスの説明から始まり、データウェアハウス製品の紹介がされている。

最後のメタデータ管理では、静的メタデータと動的メタデータの説明がされている。それぞれがどのようなものか説明されており、さらに必要になるタイミングも説明されている。実際にデータを使っているとメタデータは重要だと思うことが増えてきた。しかし、最初から設計していないで途中から追加しようとすると難しい。だけれども、どうにかこうにかちゃんと管理をしたいなと思う。メタデータ管理について、データ基盤に関わっている方々と話し合いをしてみたい。

まとめ

  • データ分析に関わる用語を勉強できた
  • 実際に構築した話などが入っていたので具体例が多くあやふやだった箇所が納得できた
  • データエンジニアって大事なんだなと思えた

データマネジメント知識体系ガイド 第二版

データマネジメント知識体系ガイド 第二版

ビッグデータ分析・活用のためのSQLレシピ

ビッグデータ分析・活用のためのSQLレシピ

201911 振り返り

今年もあと1ヶ月。
つまり転職して丸1年が経とうとしているのか。
仕事には慣れたと信じているが、これができるようになったと胸を張って言えることが少ない。日々精進。

Regional Scrum Gathering Tokyo 2020 でも無事に(?)ボランティアに慣れた。力仕事は任せてと言ってた気がするので、何かお仕事あったら頑張る。

そろそろ副業について考えようかなー。

べんきょうかい

どれも面白かった(全部話を聞いたのはどれもないけど…
自分の勉強が足りてないから話を聞いても分からないものが何個もあった。
取捨選択しながら勉強していかないとなー

ほん

技術的な勉強は何もしていないな。漫画と小説はたくさん読んだ気がする。
誕生日にもらったPSYCHO‐PASSをようやく読み終えた。
数えてないが積読が100冊を超えそうになっている気がする。昔の本は、役に立たないだろうし捨てることも考えないと。

えいが

どれも面白かった。この中だと想像していたよりも面白かったのは、イエスタデイかな。
月初に勢いで観に行ってしまってそこでしか観なかったから、1日1個くらいでゆっくり観たいな。

201910 振り返り

今年もはやあと2ヶ月。
未だに病院に行ってない。行こう行こうとは思うこともあるのだが、怖さもありなんだか遠ざかってしまっている。
ちょいちょい飲みにも行っているので元気です。ドラクエウォークの進捗が悪く、もっと歩かないとなと思っている。

べんきょうかい

自分では触れていないけど、動いてるのを見たりもしているし、主催者の方にも大変お世話になっていることもあり、serverless DAYS TOKYO に参加してきた。事例紹介も面白かったし、スポンサーブースも面白かったしで刺激を受けた。
kyon_mm の話を聞きに行ったButterfly Effect #2は今まで聞いたこと無い話が聞けて面白かった。第3回も行きたいなと思う。

ほん

相変わらず、小説と漫画の消費は順調。
技術書の積読は少しづつ読む手法を始めてみたので、時間をかけてゆっくりと読んでいこうと思う。

えいが

なんか激しい映画が多かった気がする。
どれも面白かったけど、空の青さを知る人よが一番良かったな。あの花も心叫も映画館で泣いたけど今回は泣くまではいかなかった。
それでも今年一かなと思っている。

201909 振り返り

3連休が2週あったおかげかあっというまに終わった感じがする。
気がついたら今年の3/4 が終わってしまった。職場も慣れたが貢献できていることが少ないので頑張らないといけない(お給料的にもメンバに対しての意味でも)。
休日のやることが寝てるか、本を読むかになっているから何か趣味でも見つけようかなと思っている。

べんきょうかい

何も行ってない。自分での勉強も止まってしまっているしピンチ。

ほん

技術書は読めてないけど、今月買った本はすべて消費できた。
最近の漫画は転生モノが多すぎる気がする。1巻は読んでみたけど2巻も読むかはわからない。
べんきょうかいと一緒で学びができてないからどうにかしないといけない。

えいが

今月はたくさん観れた。人間失格がなかなかおもしろかった。
失格かもしれないけどあれだけ名前売れてて、モテてるんだから良いのではなかろうか。
とりあえず、文豪ストレイドッグスが久しぶりに読みたくなった。

HELLO WORLDは押し込んでる感あるけど、個人的には面白かった。

201908 振り返り

体調はあまり変わってない。
ビールは最近おさまっている。クラフトビールは飲みに行ってないが、飲み会にはいくつか参加している。

楽天ファミリーデーにてお手伝いをさせてもらった。子供の相手をするのはとても楽しかった。
ただ、子供の目線に合わせるために中腰で長くいたせいで、足が筋肉痛になってしまった。あきらかに運動不足だ。
使ったのはPETSという教材なのだが、とてもおもしろかった。ちょっとよいお値段するけど子供いたら一緒に遊んでみたい。

4ok.jp

べんきょうかい

何も行かなかった。相変わらず会社にいる時間が長い。
積極的に勉強をしていかないとおいていかれてしまうから個人的に勉強とは別に勉強会に貼るようにしよう。

ほん

お盆休みだから本を読める時間があったので、漫画小説以外の本をたくさん読んだ。
休み中に読むために積ん読を持ち歩いたが、5冊持つのはさすがに思いし疲れてしまう。電子版のほうが持ち歩きやすいけど、漫画以外は最初に読むのは紙が良いのでしょうがないか。
積んである本を少しでも減らしたい。

えいが

どれも面白かった。
ドラゴンクエストが話題になっているように〆がそうなるのかと思って受け入れができにくかった。
ダンスウィズミーは話も面白かったし、ダンスも歌も良かった。特に三吉彩花が大画面でみれるのはとても良い。

ぶろぐ

まとめて読む時間があったのでブログを書こうと思う本を読んだ。

hihihiroro.hatenablog.com hihihiroro.hatenablog.com hihihiroro.hatenablog.com hihihiroro.hatenablog.com

「分散システムデザインパターン」を読んだ

誕生日プレゼントでもらったが5章くらいまでを繰り返していて、読み終わってなかったので一気読みした。

まえがきで書かれている通り、本書の目的は分散システムを作る、使う人達が共通言語で話ができるように汎用的なパターンが紹介されている。
別に限ってはないがコンテナを使っての設計、運用をする際に、何を知っていると楽になるかということがまとめられている。

シングルノードパターン

サイドカー

サイドカーの役割は、メイン処理を行うコンテナを拡張したり改善したりする。
サイドカーのメリットとして、

  • 個々の処理にリソースを割り振れる
  • 開発の責任分解がしやすい
  • いろんなコンテナの組み合わせができる
  • 障害がコンテナ内部に閉じれる
アンバサダ

メイン処理を行うコンテナとそれ以外の間のやり取りを仲介する仕組み。
シャーディングやサーキットブレーカ、リクエスト分割などをアンバサダが担当するので、メイン処理を行うコンテナはシンプルに作成することができる。またアプリケーションがどの環境でも同じ設定を使ったテストを行うことができるようになる。

アダプタ

アダプタが通信の形式を揃えるることで、中央の監視システムに共通したインタフェースを提供する仕組み。
これによって、メイン処理を行うコンテナには手を入れることなくインターフェイスを修正することができる。

マルチノードパターン

スキャッタ・ギャザー

リクエストを処理するために必要な演算をシャーディングする仕組み。
ルートに対してリクエストすると、ルートは処理を小さな部分問題に分割し、ワーカコンテナにばらまく。ばらまかれた処理が終わったら、ワーカコンテナは結果をルートに返す。この処理をフレームワーク化することで、

  • ルートがタスクを分割する部分
  • ワーカコンテナでの処理部分
  • 処理結果のマージ部分

を実装することでスキャッタ・ギャザーのフレームワークが使えるようになる。

ファンクションとイベント処理駆動

Fanction-as-a-Service の説明と使うべきパターンについて書かれている。
その中でデコレータパターンが紹介されている。デコレータパターンはリクエストまたはレスポンスの内容を変換するような、メイン処理の事前処理、事後処理を行うものとして使う。アダプタとは別に紹介されているのは、アダプタで実装してしまうとメイン処理と一緒にスケールしなければいけなくなる。デコレータは軽い処理が多いため、デコレータとメイン処理を別々にスケールできる方がメリットがある。

オーナーシップ選出

マスタ選出の実装方法として、PaxosやRaft のような分散コンセンサスアルゴリズムが有名だがとても難しい。
そこで、すでにコンセンサスアルゴリズムが実装されているコンテナを使い、オーナーシップ選出を行うことで、メイン処理には影響を与えずに複雑な機能のついっかを行うことができる。

バッチ処理パターン

ワークキューシステム

よく見るキューにためてワーカが順次処理するパターン。このパターンの場合処理を行うコンテナとキューに接続する部分が必要になる。この際キューはKafkaやRedisなど種類が色々あるため、キューに接続するインターフェース部分はアンバサダとして設計することをすすめている。

イベント駆動バッチ処理

あるワークキューの出力が他のワークキューの入力になるよう、ワークキュー同士をつなげることがある。

  • コピア
    ワークアイテムのストリームを1つ取り込み、それを2つあるいはそれ以上のストリームに複製する

  • フィルタ
    ある一定のルールに当てはまらないワークアイテムをフィルタすることで減らす

  • スプリッタ
    ルールに応じて異なる入力を異なるキューに送る

  • シャーダ
    1つのキューを何らかのシャーディング関数を元にしてワークアイテムの集合に均等に分割する

  • マージャ
    2つのワークキューを1つのワークキューにする

協調的バッチ処理

複数の出力を元にして結合された出力を生成するパターン

  • 結合(またはバリア同期)
    ワークアイテムの並列処理のすべてが完了後、結合処理が行われる。
    これによって結合処理の前にデータが欠けることがなくなるが、並列処理すべてが終わってからしか結合処理が行えないため処理が遅くなる可能性がある。

  • Reduce
    並列処理されたデータアイテム全部を1つの総合的なものに楽観的マージを行う。
    並列処理が継続中のものがあっても、Reduce は開始できる。最終的にはすべてのデータが処理される必要はあるが、結合よりも少しでも早く処理を開始できる。

まとめ

  • コンテナを使っての設計、運用をする際に役立つパターンがまとまってた
  • 複雑だったり、やることが違うものを切り出すことが多そう
  • パターンは1つだけ使うのではなく組み合わせて使うことが多そう
  • そこまでやるって言うのもあるようなないような…

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

  • 作者:Sam Newman
  • 発売日: 2016/02/26
  • メディア: 単行本(ソフトカバー)

試して学ぶ Dockerコンテナ開発

試して学ぶ Dockerコンテナ開発

入門 Kubernetes

入門 Kubernetes

「GCPの教科書」を読んだ

雰囲気で使っているので勉強しようと思って読んだ。

GCPの教科書

GCPの教科書

Ⅰ. Google Cloud Platform とは?
Ⅱ. GCP の基本を知ろう

この2章でGCPについての基本的なことは分かる気がする。ここだけ読むとひとまずGCPにアクセスして、使い始めることができる。
この後の章ではそれぞれのサービスについて説明されている。

Ⅲ. GCP の基本サービスを学ぼう

Ⅳ. 高度なサービスを知ろう (その1)

  • Kubernetes Engine
  • ネットワーキング
  • Bigtable
  • Datastore
  • Stackdriver モニタリング
  • Stackdriver ロギング

Ⅴ. 高度なサービスを知ろう (その2)

  • Deployment Manager
  • Cloud Pub/Sub
  • Cloud Dataflow
  • Dataproc
  • Cloud Launcher
  • Cloud Functions
  • その他のサービス
    • Spanner
    • Endpoints
    • Genomics
    • IoT Core
    • Dataprep
    • Datalab

Ⅵ. 機械学習

  • TensorFlow
  • Cloud Machine Learning Engine

Ⅶ. GCP で使えるAPIの紹介

Ⅷ. AWS ユーザへ
Ⅸ. GCP のまとめと今後の展望

まとめ

  • 広くサービスのことを知ることができた
  • 実際にサービスを触ってみないとよくわからない
  • GCS、BigQuery、GKE、ネットワーキング、Cloud Pub/Sub、Dataproc、DataPortal、Datalab は色々試してみたい

Google Cloud Platform エンタープライズ設計ガイド

Google Cloud Platform エンタープライズ設計ガイド