DMMPP2ノード環境の構築

3.1 DMMPP2ノード環境の構築

1.早期計画

1.1システム計画

ここに画像の説明を挿入

1.2IPとポートの計画

ここに画像の説明を挿入

1.3保管計画

ここに画像の説明を挿入

1.4データベース初期化パラメータの計画

ここに画像の説明を挿入


2.データベースの基本ソフトウェアをインストールします

(省略)
PS:

DM MPP各EPで使用されるDMサーバーのバージョンは同じである必要があります。同時に、オペレーティングシステムのビット数、ラージエンドモードとスモールエンドモード、
タイムゾーン、および各EPが配置されているホストの時間設定に注意する必要があります。一貫している必要があります。そうしないと、予期しないエラーが発生する可能性があります。


3.環境変数を構成します

ここに画像の説明を挿入
環境変数の具体的な構成は次のとおりです。

su - dmdba
vi .bash_profile
source ~/.bash_profile
#################################################
### Dameng Database Environment Configuration ###
export TMP=/tmp
export TMP_DIR=$TMP
export DM_INSTALL_TMPDIR=$TMP
export DM_HOME=/DMDB/app/DM8
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
umask 022
### end ###

4.データベースインスタンスを初期化します

データベースを構築するには、dbcaグラフィカルツールとdminitコマンドラインツールの2つの方法があります。

ここでは、dbcaグラフィカルツールを使用してデータベースを構築します。
(それぞれMPPEP01 / MPPEP02ホストにデータベースを作成します)
MPPEP01スクリーンショット:
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

MPPEP02のスクリーンショット:
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
mpp環境を構成する前にデータベースインスタンスを停止します

service DmServiceEP01 stop
service DmServiceEP02 stop

5.MPP環境に必要な構成ファイルを編集します

5.1dm.iniを構成する

MPPEP01ホストのデータベースEP01インスタンスdm.iniファイル

## 调整dm.ini部分参数 ##
INSTANCE_NAME = EP01
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1

MPPEP02ホストデータベースEP02インスタンスdm.iniファイル

## 调整dm.ini部分参数 ##
INSTANCE_NAME = EP02
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1
5.2dmmal.iniを構成する

dmmal.ini通信システム構成ファイルは、すべてのEPノードで同じです。

[MAL_INST1]
MAL_INST_NAME = EP01
MAL_HOST = 10.10.10.11
MAL_PORT = 5336
MAL_INST_HOST = 192.168.0.11
MAL_INST_PORT = 5236

[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 10.10.10.12
MAL_PORT = 5336
MAL_INST_HOST = 192.168.0.12
MAL_INST_PORT = 5236

dmmal.iniの同じコピーがMPPEP02データディレクトリに転送されます

[dmdba@MPPEP01 DMDB]$ scp dmmal.ini 192.168.0.12:/DMDB/data/DMDB/
[email protected]'s password: 
dmmal.ini                                                                                           100%  245     0.2KB/s   00:00    
[dmdba@MPPEP01 DMDB]$ 
5.3 dmmpp.ini構成ファイル(dmpp.ctl)を準備します

dmmpp.ctlはバイナリファイルであり、ユーザーが直接構成することはできません。最初にdmmpp.iniを構成する必要があります。

# dmmpp.ini
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01

[SERVICE_NAME2] 
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02

dmctlcvtツールを使用してdmmpp.iniをdmmpp.ctl制御ファイルに変換してから、このファイルを各ノードに転送して、すべてのノードが同じdmmpp.ctlを使用するようにします。

dmctlcvt TYPE=2 SRC=/DMDB/data/DMDB/dmmpp.ini DEST=/DMDB/data/DMDB/dmmpp.ctl
scp /DMDB/data/DMDB/dmmpp.ctl 192.168.0.12:/DMDB/data/DMDB


[dmdba@MPPEP01 DMDB]$ ls -l dmmpp*
-rw-r--r-- 1 dmdba dinstall 41540 12月  4 15:01 dmmpp.ctl
-rw-r--r-- 1 dmdba dinstall   106 12月  4 15:00 dmmpp.ini
[dmdba@MPPEP01 DMDB]$ scp /DMDB/data/DMDB/dmmpp.ctl 192.168.0.12:/DMDB/data/DMDB
[email protected]'s password: 
dmmpp.ctl                                                                                           100%   41KB  40.6KB/s   00:00    


6.MPPを実行します

MPPフロントエンド環境が構成された後、(インスタンスが開始される順序に関係なく)データベースインスタンスEP01 / EP02をそれぞれ開始します。

### PS: 用户登录任意一个EP节点(又称:主节点)进行正常的数据库操作。
chkconfig --list |grep ^Dm
service DmServiceEP01 start
service DmServiceEP02 start

7.分布表テストを作成します

グローバル接続モードでmppにログインします(デフォルト)disql SYSDBA / SYSDBA global @ localhost:5236
ローカル接続モードでmppにログインしますdisql SYSDBA / SYSDBA
local @ localhost:5236

dm_svc.conf構成

TIME_ZONE=(+8:00)
LANGUAGE=(en)
mppsvc=(192.168.0.11:5236,192.168.0.12:5236)
LOGIN_MODE=(1)

ここに画像の説明を挿入
ここに画像の説明を挿入

7.1表スペースを作成する
## DDL必须在mpp全局模式下执行
create tablespace cqsoftbs 
   datafile '/DMDB/data/DMDB/cqsoftbs01.DBF' size 64;
7.2ユーザーの作成
create user cqsoft identified by "cqsoft_123"  
   diskspace unlimited 
   default tablespace cqsoftbs;
7.3許可されたユーザー
grant resource to cqsoft;
7.4ハッシュ分布表を作成する
conn cqsoft/"cqsoft_123" 
create table tab_hash(a1 int, a2 char(10)) distributed by hash(a1);
7.5ランダム分布表を作成する

ランダムに分散されたテーブルtab_random(a1 int、a2 char(10))を作成します。

7.6範囲分布表の作成
create table tab_range(a1 int, a2 char(10)) 
  distributed by range(a1) 
    (
    values equ or less than (100) on EP01,
    values equ or less than (maxvalue) on EP02 
    );    
7.7リストリスト分布表の作成
create table tab_list (a1 int, a2 char(10)) 
  distributed by list(a2)
   (
     values ('男') on EP01,
     values (default) on EP02
   );
   
-- 分布表中实例分布不能重复指定。
values ('女') on EP02,
 values (default) on EP02  
错误[-2212]:分布表指定了相同的实例名[EP02]. 
7.8レプリケーション配布テーブルを作成する

各EPノードのこのテーブルのデータ内容はまったく同じです。他のノードからデータを取得する必要はありません。

create table tab_replicate (a1 int, a2 char(10))  distributed fully;
7.9ハッシュ分布テーブルの範囲水平パーティションテーブル
create table tab_hash_range_part (a1 int, a2 char(10), a3 char(10))
  partition by range (a1)
   (
     partition p1 values less than (100),
     partition p2 values less than (200),   
     partition p3 values less than (maxvalue)  
   )
 distributed by hash (a1);  

8.高速データロードdmfldr

データテキストファイルtab_list_distr.txtを準備します

1,中
2,男
3,男
4,男
5,男
6,男
7,女
8,女
9,女
10,女
11,女
12,女
13,女
14,女
15,女
16,女
17,女
18,女
19,男
20,男

dmfldr制御ファイルtab_list_distr.ctl注:最初にジャイアントピットデータファイルのエンコーディングを確認することをお勧めし
ます。

OPTIONS (
 CHARACTER_CODE = 'UTF-8'       
)

LOAD DATA
INFILE '/DMDB/soft/tab_list_distr.txt'
BADFILE '/DMDB/soft/fldr.bad'
INTO TABLE tab_list
FIELDS ','
(A1,A2)

dmfldrロードデータ

su - dmdba
dmfldr cqsoft/"cqsoft_123"@localhost:5236 control=\'/DMDB/soft/tab_list_distr.ctl\'

グローバルモードクエリテーブルの内容:
ここに画像の説明を挿入

ローカルモードのクエリテーブルの内容:
大胆なスタイル

PS:上記のクエリ結果から、MPPは分散ストレージと分散コンピューティングの利点を利用してシステムの並列処理の効率を向上させることがわかります。


9.MPPを停止します

*** 予防***

DM MPPシステムの運用中に特定のEPが故障した場合、MPPシステム全体がDMが通常のMPPサービスを大規模に並列処理できない状態になります。
現在のすべてのユーザーセッションはシステムによって切断されます。グローバルログインはできず、ローカルログインのみが可能です。したがって、MPPシステムの高可用性を確保するために、DMMPP
とデータ保護を組み合わせた展開計画を強くお勧めします。

#Stop mppは、データベースインスタンスの通常の停止と同じですが、順不同です。つまり、各EPのデータベースインスタンスを停止します。サービスDmServiceEP01停止サービスDmServiceEP02停止


10.データ配布の概念

DM MPPシステムのデータは各EPノードに分散され、テーブルデータのハッシュ配布、ランダム配布、コピー配布、範囲配布、およびLIST配布タイプをサポートします。ユーザーは実際のテーブルデータに応じて適切な配布タイプを選択できます。アプリケーションの状況。
1.ハッシュ分散
ハッシュ分散は、テーブル定義で指定された1つ以上の列に従ってデータ行のハッシュ値を計算し、ハッシュ値とハッシュマッピングテーブルに従ってマップされたノードに行データを分散します。
テーブルの結合クエリで使用される結合キーがハッシュ分散列の場合、MPPでのクエリプランが最適化されます。たとえば、プラン内の通信演算子の数を減らしたり、インデックスを使用したり、グループ化プランを最適化したりできます。など、ノード内のデータを減らします。クエリの効率を向上させるために、2つの間で分散します。
ハッシュ分散を使用する場合、ノード間のデータのバランスが取れているかどうかは、ハッシュ分散列のセットとテーブル内のデータによって異なります。
ノード数が変化した場合、新しいハッシュマップに従って各ノードのデータを再配布する必要があります。

2.ランダム分布
ランダム分布テーブルには分布列がありません。テーブルデータを挿入すると、特定のランダムアルゴリズムに従って、データがランダムかつ均等に各ノードに分散されます。
ランダム分布の利点は、データとノードの間にマッピング関係がないことです。ノード数を変更した後、ノードのデータバランスが必要ない場合は、ノードの既存のデータを変更する必要はありません。
一般的に、ランダム分散は、複雑なクエリのハッシュ分散やノード間のデータ分散ほど良くありません。

3.レプリケーション配布
各ノードのレプリケートされた配布テーブルのローカルデータは完全なコピーです。テーブルデータをクエリする場合、任意のノードで個別に実行でき、他のノードからデータを取得する必要はありません。
レプリケーション分散は通常、データ量が少ないテーブルに使用されます。

4.範囲分布
範囲分布は、テーブル定義で指定された1つ以上の列の列値範囲分布項目に従って、データの行がMPPのどの対応するEPに格納されるかを決定します。

5. LIST分布
LIST分布は、テーブル内の1つ以上の列の離散値セットを指定することにより、データの行に対応するMPPのEPを決定します。この分布は、テーブル内の列の値を一覧表示できる場合に使用されます(列挙)。

11.EPデータの分散とパーティションテーブル

DM MPPは、データ分散とパーティションテーブルの組み合わせもサポートしており、「データ分散後のパーティション」を実現します。
データが各ノードに配布された後、クエリのパフォーマンスをさらに向上させるために、データは単一のノードで再度分割されます。
分散タイプとパーティションタイプを混在させて一致させることができます。たとえば、ハッシュ分散テーブルの範囲レベルのパーティションテーブルが確立されます。

おすすめ

転載: blog.csdn.net/ai20110304/article/details/113968801