【案件】医療用アプレットのフルスタック開発
記事ディレクトリ
第1章 コース紹介
1.5 HBase+Phoenix ビッグデータ プラットフォームの構築
通常、MySQL データベースは開発プログラムで最も使用されますが、MySQL データベースには避けられないハードルがあります。1 つのテーブルのデータ量が 2000 万を超え、
CRUD のパフォーマンスが急速に低下します。
したがって、テーブルを縮小するという目的を達成できるように、半年または 1 年のデータを定期的にアーカイブ データベースに移行するように DBA または自動化されたスクリプトを配置する必要があります。通常の MIS システムを開発している場合、ビジネス データはそれほど多くなく、MySQL は定期的なアーカイブなしでサポートできます。しかし、e コマース プラットフォームと同様のプロジェクトでは、毎日大量のビジネス データが生成され、1 ~ 2 か月で数千万のデータが蓄積される可能性があります。この場合、データのアーカイブを頻繁に行うか、アーカイブなしで数百テラバイトに対応できるビッグ データ プラットフォームを選択します。ここでは、開発の難易度を下げるだけでなく、DBA を雇う運用と保守のコストを削減できる後者を選択します。
1.5.1 ビッグデータプラットフォームの技術選択
1 HBase テクノロジー
HBase は、Apache Hadoop と Apache ZooKeeper の上に構築された、バージョン管理された分散型の列指向のオープン ソース データベースです。
HBase は、高信頼性、高性能、カラム指向、およびスケーラブルな分散ストレージ システムです. HBase テクノロジーを使用すると、大規模な構造化ストレージ クラスターを安価な PC サーバー上に構築できます_.
HBase は、一般的なリレーショナル データベースとは異なり、非構造化データ ストレージに適したデータベースです。HBase は行ベースではなく、列ベースです。
HBaseの特徴
- 大規模なデータ ストレージである HBase のテーブルは、数百億行 x 数百万列のデータを保持できます。
- 列型ストレージ、HBase のデータは列に基づいて格納され、列は動的に追加および削除できます。
- 準販売クエリ、HBase は大量のデータの下で準リアルタイム クエリ (100 ミリ秒以内) に近づくことができます
- 複数のバージョン。HBaser のデータの各列には複数のバージョンがあります。
- 信頼性の高い HBase のデータは HDFS に保存され、Zookeeper に依存して Master と RegionServer の調整された管理が行われます。
HBase はテーブル構造をサポートしていますが、操作が不便です。たとえば、次は学生テーブルで、多数のフィールドが含まれています。
例: 学生データ テーブル
Student テーブルに新しいレコードを追加する場合は、次のコマンドを実行する必要があります。
put 'Student','0001','StuInfo:Name','Tom Green',1
データを取得したいときは、get コマンドを実行するだけです。
get 'Student','0001'
SQL文に慣れている私たちにとっては、上記のコマンドが単純なものであれば問題ありませんが、複雑な条件や関数が重なると可読性が非常に悪くなるので、Phoenixの技術を導入する必要があります
。
scan 'mytest:test01',FILTER=>"RowFilter(=,'substring:202006')",LIMIT=>1
count 'mytest:test01',FILTER=>"RowFilter(=,'substring:202004')",INTERVAL=>10000
2 フェニックステクノロジー
Phoenix は HBase に構文プレゼンテーション レイヤーを追加し、SQL ステートメントを使用して HBase でデータを読み書きできるようにします. オンライン トランザクション処理を行うことができ、
低レイテンシー機能を備えているため、はるかに便利です.
Phoenix: SQL を一連の Hbasel スキャン操作にコンパイルし、スキャン結果から標準の JDBC 結果セットを生成します. 数千万行のデータを処理するのに数ミリ秒または数秒しかかかりません. また、Phoenix は、プロジェクトに統合できる MyBatis フレームワークもサポートしています。
1.5.2 HBase と Phoenix のデプロイ
1 画像ファイルのインポート
まず、コースで共有されているリソースで phoenix.tar.gz イメージ ファイルを見つけ、このファイルを CentOS システムにアップロードし、コマンドを実行して、イメージ ファイルを Docker にインポートします。
注文:docker load < phoenix.tar.gz
注文の実行
最初にdockerを起動することを忘れないでください
既存のミラーを表示
2 コンテナを作成する
イメージにはすでに HBase と Phoenix が含まれているため、コンテナーを作成するだけで済みます。
HBase は大量のメモリを使用する必要があるため、ここでは特定のメモリ サイズを指定しません。コンテナーは自動的に空きメモリを使用します。コンテナー内のデータ ディレクトリは です。このディレクトリをホスト マシンのディレクトリ/tmp/hbase-root/hbase/data
にマップします。/root/hbase/data
docker run -it -d -p 2181:2181 -p 8765:8765 -p 15165:15165 \
-p 16000:16000 -p 16010:16010 -p 16020:16020 \
-v /root/hbase/data:/tmp/hbase-root/hbase/data \
--name phoenix \
boostport/hbase-phoenix-all-in-one:2.0-5.0
現在稼働中のコンテナ
3つのオープンポート
著者はここでファイアウォールを直接オフにしました
4 フェニックスの初期化
コマンドを実行し、Phoenix コンテナーに入り、コマンドを実行してHBASE_CONF_DIR
環境変数を設定します。
docker exec -it phoenix bash
export HBASE_CONF_DIR=/opt/hbase/conf/
次に、Phoenix のコマンドライン クライアントに接続します。IDEAにもPhoenixクライアントが組み込まれていますが、バグが多く使い勝手が悪いので
、Phoenixに付属のコマンドラインクライアントの方が使いやすいと思います。また、実行する SQL ステートメントは多くありません。コマンド ライン クライアントで
十分です。
/opt/phoenix-server/bin/sqlline.py localhost
最初の接続をお待ちください
アウト、とてもつながっている
1.5.3 ロジックライブラリとデータテーブルの作成
1 ロジックライブラリを作成する
データを格納するには、MySQL を操作するのと同じように、最初にロジック ライブラリを作成し、次にデータ テーブルを定義する必要があります。Phoenix のコマンド ライン クライアントで、まずコマンドを実行してロジック ライブラリを作成します。
CREATE SCHEMA hospital;
USE hospital;
2 データテーブルを作成してデータをインポートする
このコースの git にはデータベース スクリプトと SQL ファイルがあり、この SQL ファイルのステートメントをコピーして Phoenix コマンド ラインに貼り付けて実行できます。
一気に貼り付けるだけ
1350回線
完了するのを待つ [インデックスの作成に時間がかかる]
OK、完了です。終了します
1.5.4 JDBC接続情報の設定
プロジェクトのインポートはこちら
ここでは、教師が API を使用してデモンストレーションを行いました。
プロジェクトを自分のディレクトリにコピーします
インポートして IDEA で開く
独自の Maven 構成を使用する
かなり新しい、SpringBoot バージョン 2.7.2
プロジェクトのビルドが完了するまで待ちます
使用されている JDK バージョンは、以前にインストールした 15 であることに注意してください。
ビルド完了
ここで、サーバー (仮想マシン IP) に変更する必要があります。
別のJavaプロジェクトがあり、これはWeChatアプレットのインターフェースの背景であり、Web側のインターフェースの背景もあります。
また、IDEAを使用してインポートして開きます
また、ローカルのmaven構成を使用してください
上記の場所を同じように変更するだけです
このプロジェクトの springboot バージョンは 2 ポイント高い
よし、それだけだ。