過去数年間、私はデータインフラストラクチャのエコシステムがどれほど複雑であるかに不満を持っている友人や同僚と多くの会話をしてきました。 フロントエンドの世界ほど悪くはありませんが、物事は流行語のスープを作成するのに十分な速さで変化しています。

初心者として、どのツールがあなたのために右であるかを決定するために超挑戦です。 Apache Foundationは、”ビッグデータ”セクションに38のプロジェクトをリストしており、これらのツールは、彼らが対処すると主張する問題に重複のトンを持っています。 たとえば、Flink、Samza、Storm、およびSpark Streamingは「分散ストリーム処理エンジン」、ApexおよびBeamは「ストリームとバッチ処理の統合」です。

この記事では、データインフラストラクチャの構築に着手したときにオプションをナビゲートする助けを提供したいと思います。 これらは、過去10年間の私の経験とこの分野で働く同僚との会話に基づいて、私が今日従う大まかなステップです。

プロジェクトの開始時には、おそらく”自分のデータから洞察を得る”という目標以外の何ものでもないことに着手しているでしょう。 これを特定の技術セットにマッピングすることは非常に困難です。 どのようなツールが人気があるのか、”ストリーム”や”バッチ”が何を意味するのか、データインフラストラクチャがまったく必要かどうかについては、おそらく

この記事では、あなたがすぐに地面から降りて、あなたのデータから価値を抽出するのを助けるためのガイダンスを提供したいと思っています。 私は、物事をできるだけ長くシンプルに保ち、スケーラビリティのために必要なときにのみ複雑さを導入することを強く信じています。 この記事は、3つの段階でその弧をたどります。 多くの点で、それは私が過去数年間にわたって続いてきたデータインフラストラクチャを構築する手順をたどります。

データインフラストラクチャを設計する正しい方法はありません。 これを読んでいる専門家にとっては、ここで提案されている解決策の代替案が好ましいかもしれません。 それは素晴らしいことだし、我々はこれらの日を持っている素晴らしいツールの多様性を強調しています。 Hadoop MapReduceがすべてだったときから、私たちは非常に長い道のりを歩んできました。

だからここに事があります:あなたはおそらくまだ”ビッグデータ”を持っていません。 ほぼ4年後、Chris Stucchioの2013年の記事Don’t use Hadoopはまだ有効です。 5TB未満のデータがある場合は、smallを開始します。 これはあなたがまだ必要としない維持システムとの操作上の頭痛救う。 がこんにちはご愛垣は深夜3火訓練から仕事の失敗、お気軽にスキップ本部—

なな場所には近づかないでくださいすべて考慮されなかった時代は過去技術の開始時には、する必要がありました。:(1)お客様のデータqueryableアプリケーション、および(2)をお選びBIツールです。 これらの”こんにちは、世界のバックボーンのためのすべての将来のデータインフラの整備です。

SQLのすべて

これは、組織全体のデータのロックを解除するため、本当に重要です。 最も勇敢なマーケティングの人々のためのまれな例外を除いて、あなたはKibanaを学び、いくつかのログをgrepしたり、NoSQLデータストアのあいまいな構文を使用す

SQLアクセスを提供することで、会社全体がセルフサーブアナリストになり、すでに延伸されているエンジニアリングチームをクリティカルパスから また、すべての人をデータの無料のQAチームに変えます。 の”こんにちは、これらの数字を見ていうか…”での重要なバグデータとしてもお客様の製品に対する

プライマリデータストアがPostgreSQLやMySQLなどのリレーショナルデータベースである場合、これは本当に簡単です。 リードレプリカを設定し、アクセスをプロビジョニングするだけで、すべて設定できます。Elasticsearch、MongoDB、DynamoDBなどのNoSQLデータベースでは、データを変換してSQLデータベースに入れるためにさらに多くの作業を行う必要があります。 データの世界に慣れていない場合は、これをETLパイプラインと呼びます。 既製のソリューションを配線することは、小さなデータ量ではるかにコストがかからないため、可能であればこれを自分で構築することは避けてくださ 既存のインフラストラクチャによっては、利用できるsegmentのようなcloud ETLプロバイダーがある場合があります。

独自のデータパイプラインを構築する必要がある場合は、最初は非常に単純にしてください。 データベースから定期的に更新をダンプし、SQLでクエリ可能な場所に書き込むスクリプトを記述します。

サードパーティのソースからのETLingデータの話は、NoSQLデータベースと似ています。 ETL-as-a-serviceプロバイダーを使用するか、単純なスクリプトを作成し、データをSQL照会可能なデータベースに入金するだけです。

ETLスクリプトを毎日のcronとして実行するマシンをセットアップすると、あなたはレースに出ます。

BIツール

優れたBIツールは、データを理解する上で重要な部分です。 考慮すべきいくつかの素晴らしいツールは、Chartio、モード分析、およびペリスコープデータです—これらのいずれかが地面からあなたの分析を取得するために素晴ら ほとんどの場合、これらのツールをSQLデータベースに直接接続して、簡単な構成を行い、ダッシュボードの作成に飛び込むことができます。

を引くこと、こちらの”こんにちは世界”のデータインフラ:

ステージ1:”こんにちは、世界の”小さなデータをパイプライン

ステージ2:う”中”データ

ここで、これまで以上に数テラバイト浮動小数は、 おcron+スクリプト英語-日本語両方を使えるなえます。 おそらく、データストアを増殖させ、SQLとNoSQLバックエンドが異種混合されている可能性があります。 また、データを収集している少数の第三者がいる可能性もあります。 最後に、ETLパイプラインに複数のステージがあり、ステップ間にいくつかの依存関係がある場合があります。

ワークフロー管理&自動化

このフェーズの最初のステップは、ETLパイプラインを管理するためのAirflowの設定です。 Airflowを使用すると、定期的にジョブをスケジュールし、ジョブ間の時間的依存関係と論理的依存関係の両方を表現できます。 また、インフラストラクチャでジョブの再試行を追加し、タスクの失敗を警告する&を監視するのにも最適な場所です。 特定のサイズを超えるすべての起動が独自のワークフローマネージャ/ジョブスケジューラを書き込むのは、実行中の冗談です。 他にも、SpotifyはLuigiを、PinterestはPinballを書いています。 しかし、これらはコミュニティでは勢いが少なく、気流に関していくつかの機能が欠けています。

ETLパイプラインの構築

ビジネスの成長に伴い、ETLパイプラインの要件は大幅に変更されます。 単一のスクリプトがそれを切断しないので、よりスケーラブルなインフラストラクチャの構築を開始する必要があります。 あなたの目標は、単にSQLアクセスを可能にすることから、同じデータを処理する他の下流ジョブのサポートを包含することにも拡大する可能性があり

最終的には、単純なパイプラインは、これらの変化する要件に対処するために

をスケーリングしません。 ここで可能な解決策の数は絶対に圧倒的です。 Apache Sparkから始めることを強くお勧めします。 Sparkには巨大で非常に活発なコミュニティがあり、スケールがよく、すぐに立ち上げて実行するのはかなり簡単です。 AWSではEMRを使用してSparkを実行でき、GcpではCloud Dataprocを使用できます。 リレーショナルデータベースからデータを取得する場合、Apache Sqoopはほとんど標準です。

この時点で、ETLインフラストラクチャは、ソースからデータを抽出し、永続ストレージ上でそのデータを標準化された形式に変換し、SQL照会可能なデータストアにロードするという三つのETL動詞を実装するパイプライン化されたジョブの段階のように見え始めます。

データウェアハウス

この段階では、すべてのデータをSQLに取得することが優先されますが、これは”実際の”データウェアハウスの構築を開始する時です。

始めたばかりの人には、BigQueryを使用することをお勧めします。 BigQueryはセットアップが簡単で(レコードをJSONとしてロードすることができます)、ネストされた/複雑なデータ型をサポートし、完全に管理/サーバーレスなので、維持す ここでの推奨事項の多くと同様に、BigQueryの代替手段が利用可能です:AWS、Redshift、およびOn-prem、Presto。 サーバーレス設計、適切なセキュリティ/監査の構成の単純さ、および複合型のサポートのため、RedshiftよりもBigQueryを強く好みます。 あなたがオンプレムのための難しい要件を持っているならば、Prestoは検討する価値があります。

データウェアハウスの設定を考えるとき、便利なパターンは、未処理のデータを一連のテーブルに直接上陸させ、第二のジョブがこのデータを”クリーナー”テーブルに後処理する2段階のモデルを採用することです。

これらのクリーンなテーブルを、ビジネスにキュレーションされたビューを作成する機会として扱います。 ビジネスの主要なエンティティごとに、そのエンティティの分析に頻繁に使用するすべての指標/Kpiおよびディメンションを含むテーブルを作成し、 たとえば、”ユーザー”テーブルには、サインアップ時間、購入数、地理的位置や取得チャネルなどのディメンションなどの指標が含まれている場合があります。

このすべての終わりに、あなたのインフラストラクチャは次のようになります:

ステージ2:”中”データパイプライン

🚀 ステージ3: 大きな

適切な基盤を持つことで、さらなる成長は苦痛を伴う必要はありません。 多くの場合、増加したデータ量を処理する問題にハードウェアを投げるだけで行うことができます。

この時期の最も困難な問題は、多くの場合、生の規模だけでなく、要件の拡大です。 たとえば、A/Bテストのサポート、機械学習モデルのトレーニング、または変換されたデータをelasticsearchクラスターにパイプする必要がある場合があります。

この段階で考慮したいことがいくつかあります:

  • ニア-リアルタイム: おそらく、あなたが考えるよりもずっと後になるまで、分散キューやほぼリアルタイムのインフラストラクチャは必要ありません。 すべての可能性のある故障モードを処理するために、多くの複雑さが追加されていますが、これは初期の段階では価値がありません。 ROI計算が理にかなったら、kafkaまたはCloud Pub/Subを試してみてください。
  • スケーラビリティ:単一のモノリシックSparkクラスターを使用すると、ほぼ確実にリソース競合の問題に遭遇します。 その場合は、完全に弾力性のあるジョブスコープのSparkクラスターを探索する価値があります。
  • セキュリティ&監査: ある時点で、より詳細なアクセス制御をデータウェアハウスのデータに適用することができます。 BigQueryを使用している場合は、googleグループへのデータセットアクセスをプロビジョニングし、Deployment Managerを使用してそのアクセ BigQueryには、ユーザーのクエリを理解するための監査ログも用意されています。 On-premセキュリティソリューションには、Apache KnoxやApache Sentryのような他のツールが利用可能です。
  • A/Bテスト:社内のA/Bテストを構築し、実験をサポートするために、残念ながら市販のソリューションはあまりありません。 データウェアハウスにテーブルを設定するSparkジョブのパイプラインを構築することが最善の策です。
  • 機械学習:特徴抽出のために、Sparkで追加のデータパイプラインを構築できます。 モデル自体のために、あなたは再び小さく始めるべきです。 処理されたフィーチャは、1台のマシンに収まるほど小さい可能性が高いため、scikit-learnまたはTensorFlowを使用してモデルをトレーニングできます。 1台のマシンでは十分でなくなった場合は、Spark MLlibまたは分散TensorFlowを使用できます。

未来

過去10年間でデータインフラストラクチャエコシステムがどれだけ改善されたかを見るのはエキサイティングです。 私たちは、データ処理ロジックをマップに強制し、厄介なJavaを削減するために、hadoopクラスターや体操をベビーシッターから長い道のりを歩んできました。 当時、データインフラの構築は、おもちゃのハンマーを使用して超高層ビルを構築しようとしているように感じました。

今日、私たちは驚くべき多様なツールを持っています。 Sparkは、Hadoop MapReduceのジャック-オブ-オール-トレードの代替品として明らかに支配しています; 機械学習プラットフォームとしてのTensorFlowでも同じことが起こり始めています。 ごく少数の例外を除いて、最近ではインフラストラクチャやツールを社内でゼロから構築する必要はなく、おそらく物理サーバーを管理する必要はあり 超高層ビルはすでにそこにある、あなたはちょうどあなたの塗料の色を選択する必要があります。

サーバーレスの未来—それは完全にこのようになります

先を見て、私はデータインフラストラクチャとツールが完全にサーバーレスのプラットフォームに向かって動き続けることを期待しています-DataBricksはちょうどSparkのためのそのような提供を発表しました。 クラウドプロバイダーは、ハードウェア、devops、およびツールについて心配することができ、エンジニアはビジネスに固有の(そして整列した)問題に集中することができます。 将来は、ハードウェア障害、ZooKeeper freakouts、またはYARNリソース競合の問題のないものであり、それは本当にクールです。

編集:私は画鋲のデータインフラストラクチャについて書いたいくつかの以前の記事へのリンクを追加します:

コメントを残す

メールアドレスが公開されることはありません。

lg