序文
最近、私はファンとチャットし、オフラインデータウェアハウスを実行するときにどのテクノロジースタックを使用する必要があるかについてチャットしていました。それで、私の経験といくつかの参考資料に基づいて、私はこの記事を持っています。ここでは、参考のために3つのケースを共有します。
ケース1:小さな会社
まず、中小企業には人が少ないことを理解する必要があります。次に、サーバー構成がそれほど高くないため、現時点では、データウェアハウスで使用するビッグデータコンポーネントを作成することはできません。次に、説明する従来のデータベース。
1.1技術的選択
まず第一に、会社は人員配置などのテクノロジーを選択する際にコストを考慮する必要があります。会社の従業員はビッグデータのコンポーネントをよく知りません。ビッグデータのコンポーネントを学ぶのに費用がかかる場合は、彼らもそうすることができます。ビッグデータのバッチを見つける。従業員は、プロジェクトのコストを開発し、向上させるために来、データの量ではないので、データの非常に高いボリュームも、何百万年、現在市場に出ても、データベースストレージをサポートしているMySQL
、oracle
、SQL server
Aがその選択?
MySQL、Oracle、SQLサーバーの比較
MySQLの長所と短所
- 使用するコアスレッドは完全にマルチスレッドであり、複数のプロセッサをサポートします。
- 複数の列タイプがあります:1、2、3、4、および8バイト長の自己符号付き/符号なし整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、およびENUMタイプ。
- 高度に最適化されたクラスライブラリを介してSQL関数ライブラリを実装し、可能な限り高速です。通常、クエリの初期化後にメモリが割り当てられることはありません。メモリリークはありません。
- SQL GROUPBY句とORDERBY句を完全にサポートし、集計関数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()、およびMIN())をサポートします。同じクエリで異なるデータベースのテーブルを混在させることができます。
- ANSISQLのLEFT0UTERJOINおよびODBCをサポートします。
- すべての列にはデフォルト値があります。INSERTを使用して、テーブル列のサブセットを挿入できます。明示的に指定する必要のない列は、デフォルト値に設定されます。
- MySQLはさまざまなプラットフォームで動作できます。C、C ++、Java、Perl、PHP、Python、TCLAPIをサポートします。
- インデックス作成をサポート
欠如
- MySQLの最大の欠点は、セキュリティシステムであり、標準ではなく主に複雑です。さらに、mysqladminが呼び出されてユーザー権限を再読み込みした場合にのみ変更されます。
- MySQLの他の主要な欠陥の1つは、標準のRI(参照整合性-RI)メカニズムの欠如です。RI制限(特定のフィールドドメインの固定範囲制限)の欠如は、多数のデータ型によって補うことができます。
- MySQLにはストアドプロシージャ言語がありません。これは、エンタープライズレベルのデータベースに慣れているプログラマにとって最大の制限です。
- MySQLはホットバックアップをサポートしていません。
- MySQLの価格は、プラットフォームとインストール方法によって異なります。Linux MySQLは、サードパーティではなくユーザーまたはシステム管理者によってインストールされた場合は無料であり、サードプランはライセンス料を支払う必要があります。UnixまたはLinuxの自己インストールは無料、UnixまたはLinuxのサードパーティのインストールは200ドル、
オラクルの長所と短所
優秀な
- オープン性:オラクルは、すべての主流プラットフォーム(Windowsを含む)で実行でき、すべての業界標準を完全にサポートし、完全にオープンな戦略を採用して、顧客が適切なソリューションを選択し、開発者を完全にサポートできるようにします。
- スケーラビリティと並列処理:Oracle Parallel Serverは、グループノードが同じクラスタ作業を共有できるようにすることでwindowsntの機能を拡張し、高いユーザビリティと高いスケーラビリティのクラスタソリューションを提供します。windowsNTは、データベースをUNIXに移動するユーザーのニーズを満たすことができます。OracleParallelServerからさまざまなUNIXプラットフォームクラスターメカニズムは非常に高度に統合されています。
- セキュリティ:最高レベルのISO規格認証を取得しています。
- パフォーマンス:オラクルの高性能は、オープンプラットフォーム下でTPC-DおよびTPC-Cの世界記録を維持します。
- クライアントのサポートとアプリケーションモード:Oracleマルチレベルネットワークコンピューティングは、さまざまな業界標準をサポートし、ODBC、JDBC、OCI、およびその他のネットワーククライアント接続を使用します。
- 使用リスク:オラクルの長期的な開発経験は完全に下位互換性があり、低リスクで広く使用されています
欠如
- ハードウェアに対する高い要件。
- 価格はもっと高いです。
- 管理とメンテナンスはもっと面倒です。
- 操作はより複雑で、高度な技術コンテンツが必要です。
SQLServerの長所と短所
優秀な
- 使いやすさ、分散型組織に適したスケーラビリティ、意思決定支援のためのデータウェアハウス機能、他の多くのサーバーソフトウェアと密接に関連する統合、優れたコストパフォーマンスなど。
- データの管理と分析に柔軟性をもたらし、急速に変化する環境でユニットが落ち着いて対応できるようにし、それによって競争上の優位性を獲得します
欠如
- SQL Serverは、わずかなオープン性のないWindowsでのみ実行できます。オペレーティングシステムの安定性はデータベースにとって非常に重要です。Windows9Xシリーズ製品はデスクトップアプリケーションに重点を置いています。NTサーバーは中小企業にのみ適しており、Windowsプラットフォームの信頼性は非常に限られています。セキュリティとスケーラビリティは非常に制限されています。特に大規模なデータベースの場合。
- SQL Serverの並列実装および共存モデルは成熟しており、増加するユーザー数と限られたデータボリュームのスケーラビリティを処理するのが困難です。
- セキュリティ証明書を取得していません。
- SQL Serverは、マルチユーザーの場合に優れたパフォーマンスを発揮します。クライアントサポートとアプリケーションモード:クライアントサポートとアプリケーションモード。C / Sモードのみをサポートし、SQL Server C / S構造は、ADO、DAO、OLEDB、ODBCと接続するためのWindowsクライアントのみをサポートします。
- SQL Serverはコードを完全に書き直し、長期間のテスト中断の遅延が発生しました。多くの関数は証明に時間がかかり、非常に互換性があります。
概要
すべての指導者たちは、それぞれ、構築の4つの構成でOracleにして、いくつかポジションを行うに会うと利用オラクルに決定によるとods
、dwd
、dws
、ads
次のように私は位置成層最終構造全体の数の概念を導入しないです:データベース:Oracleデータ同期:ケトルデータ表示:大画面表示、スーパーセット
1.2技術アーキテクチャ
ケース2:中規模企業
まず、オフラインのデータウェアハウスを運営している中規模の企業は、単なるデータウェアハウスではありません。データをレポートの形式でデータウェアハウスに保存し、大画面に表示します。これは、データウェアハウスの価値を反映していません。データウェアハウス。このデータに基づいて作成できます用户画像
。正しくない例を挙げましょう。たとえば、倉庫内のデータが使用されていない場合、製品を購入してデータ(デッドデータ)を追加しました。バックグラウンドレポートで注文したばかりですが、レポートが発生しました。 、会社にとってはあまり価値がありません。現時点では、データウェアハウスに基づいてユーザープロファイルを作成し、ユーザーが好む製品の種類と価格帯を分析して、正確なものを作成できますか?勧告。直接始めるのはあまりナンセンスではありません。
2.1技術的選択
テクノロジーの選択は、企業のニーズや企業の選択、使用Hive
、HBase
その他の手法などの包括的な要素に基づいて行う必要があります。次に、ここでHive
詳細なアーキテクチャを使用します。
データ収集:Kettle、sqoop、flumeデータストレージ:HDFS、Hbase、Redis、Kafkaタスクスケジューリング:ヤーンコンピューティングエンジン:Sparkオフライン処理:Hiveデータアプリケーションレイヤー:kylin、大画面ディスプレイ、スーパーセット
ここにはなぜそうするのかわからない友達がたくさんいるので、これについて説明します。
データ収集:
Kettleは通常、比較的少量のデータで一部のデータを処理します。これは、学習コストが低く、ETLを初めて使用する従業員に適しており、exec、Json、テキスト、その他の情報などの豊富なコンポーネントがデータベースに入力されているためです。
Sqoopは、主にリレーショナルデータをハイブに同期します。これは、大量のデータが分散され、効率がそれほど遅くない場合、最下層がMapReduceを介するためです。
Flumeは主に、一部のクリックストリーム操作のために、フロントエンドによって生成されたログをKafkaに保存します。例:ユーザーがこのページにとどまる時間を分析します。ページのTopNおよびその他の情報を確認してください。
データストレージ
HDFSは主に、適時性の低いデータを保存しますが、これらのデータを失うことはありません。通常、Hiveと組み合わせて使用されます。
Hbaseは通常、データサポートを提供するためにADSレイヤーのデータの一部をHive toHbaseに保存します。データのこの部分は、通常、高い適時性を必要とします。
Redisは 通常、フロントエンドとデータベース間のブリッジとして使用されます。フロントエンドからのリクエストは、データベースの高さとダウンタイムの現象を回避するために、最初にチェックするためにRedisに送信されます。
Kafkaは主に非構造化データを保存します。通常、設定は7日間保存され、シナリオは異なります。これはクリックストリームに使用されます。
タスクスケジューリング
糸は誰にでもなじみがある必要があり、メインユーザーはリソースのスケジューリングを行います。
計算エンジン
Spark は主にこのプロジェクトでデータ分析を行っています。SparkSqlにより、分析効率がより速く改善され、時間が大幅に節約されます。
オフライン処理
Hive
ここでは、データ・ウェアハウスの役割を果たし、ここにハイブを層別化されているods
、dwd
、dws
、ads
それぞれの層は自分のスコープを持っています。
2.2技術アーキテクチャ
ケース3:Ctripのチケットデータウェアハウステクノロジースタック
次のコンテンツは、https://www.sohu.com/a/403837625_411876からのものです。
Ctripのチケット部門のデータウェアハウスの構築は、主に会社の公共部門のビッグデータインフラストラクチャとデータスケジューリングプラットフォームに基づいており、自己運用と保守のためのオープンソースストレージエンジンとデータ同期ツールおよび運用と保守ツールの一部によって補完されていますオープンソースコンポーネントの二次開発に基づいています。
3.1現在のテクノロジースタック
本番環境のデータは、大きく3つのカテゴリに分類できます。
- ビジネスデータは主にMySQLとSQLServerに格納されます。これらのリレーショナルデータベースには、さまざまな本番サービスのビジネスデータを書き込むための数万のテーブルがあります。
- 基本データもMySQLとSQLServerに保存され、集中型キャッシュ(Redisなど)またはローカルキャッシュは通常、本番アプリケーション中に確立されます。
- ログデータ、このタイプのデータは「追加のみ」という特徴があり、生成されたデータの更新操作はありません。このタイプのデータのスループットが高いことを考慮すると、本番環境では通常、メッセージキューKafkaを使用します。一時保管;
データウェアハウスがデータ同期を実装すると、要件に応じて、リアルタイム、ほぼリアルタイム、T + 1日などのさまざまな頻度でデータ同期が実行され、ビッグデータ環境では、さまざまなキャリアが異なる周波数で同期されたデータを引き受けます。Ctrip航空券では、リアルタイム同期のターゲットキャリアはElasticSearch、CrateDB、またはHBaseであり、ほぼリアルタイム(通常はT + 1時間)またはT + 1日のターゲットキャリアはHiveです。
データキャリアの生産から、それは主にDBとメッセージキューを含みます。それらのデータ同期ソリューションは主に次のとおりです。
- 本番DBからHiveへの同期は、TaobaoのオープンソースDataXを使用します。DataXは、WebサイトオペレーションセンターのDPチームによって開発されました。現在、複数のデータソース間のデータ同期をサポートしています。リアルタイム同期のシナリオは主にMySQLで行われ、DBA部門はCanalを使用してメッセージキューのbinログを解析して書き込みます。
- CamusはKafkaからHiveに同期して使用されますが、Camusのパフォーマンスの問題と、消費レコードと消費の有効期限の監視が難しいため、新しいKafkaからHiveへの同期用にspark-sql-kafkaに基づくhamalを開発しました。Kafkaのリアルタイム同期キャリアは主にElasticSearchまたはCrateDBであり、主にFlinkを介して実装されます。
- 生産データがデータウェアハウスに同期された後、データクリーニング、情報統合、集計計算などのデータ反転プロセスがウェアハウスで完了し、最終的にデータが他のキャリアにエクスポートされます。この一連のプロセススケジューリングがスケジュールされます。同社のDPチームによるプラットフォームZeusが完成しました。
3.2技術アーキテクチャ
概要
完全なデータウェアハウス実装計画には、上記で紹介したデータ同期計画、データストレージ計画、データ仕様、メタデータ構築、データ品質システム、運用および保守ツールなどが含まれますが、これらに限定されません。各実装チームは、実際の状況について状況は、各ポイントに固有の技術的ソリューションを選択します。私は大数据的资料
それを必要とする友達をあなたに提供するためにここにいます、あなたはダウンロードするために次のGitHubに行くことができます、あなた自身を信じてください、努力と汗は常に報われるでしょう。私はビッグデータの兄弟です、また会いましょう~~~
リソースの取得Flinkインタビューの質問、Sparkインタビューの質問、プログラマーに不可欠なソフトウェア、ハイブインタビューの質問、Hadoopインタビューの質問、Dockerインタビューの質問、再開テンプレート、その他のリソースを入手するには、GitHubにアクセスして自分でダウンロードしてくださいhttps://github.com / lhh2002 / Framework- Of-BigDataGiteeを自分でダウンロードhttps://gitee.com/li_hey_hey/dashboard/projects