IBM InfoSphere DataStage 集羣配置管理與應用實踐

http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1111sunch/

IBM InfoSphere DataStage 集羣配置管理與應用實踐

IBM InfoSphere DataStage 集羣配置管理與應用實踐

孫春華, 軟件工程師, IBM
韋東傑, 軟件工程師, IBM
Mi Wan Shum, 高級軟件工程師, IBM

簡介: 本文不僅僅詳細講述了 IBM InfoSphere DataStage 集羣的構建與配置,同時,也以幾種典型的應用場景爲例,爲用戶提供了詳細而全面的參考價值。並且指導開發人員設計和構建更爲高效和可擴展性的 DataStage 數據處理環境。

發佈日期: 2011 年 11 月 07 日 
級別: 中級 
訪問情況 : 2519 次瀏覽 
評論: 2 (查看 | 添加評論 - 登錄)

平均分 5 星 共 4 個評分 平均分 (4個評分)
爲本文評分

免費下載:IBM® DB2® Express-C 9.7.2 免費版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 試用版
下載更多的 IBM 軟件試用版,並加入 IBM 軟件下載與技術交流羣組,參與在線交流。

前言

在開始之前,下面列出了準備以及配置 DataStage 集羣環境(在這裏以 Linux 環境爲例)我們要做的主要步驟,作者可以參考下面的步驟來閱讀本文:

  1. 準備集羣環境機器,包括 NAS Server、Domain Server、Engine Server、Client Server
  2. 爲所有集羣節點創建 dsadm 用戶、包括主導節點以及普通計算節點
  3. 在所有集羣節點上配置無密碼 SSH
  4. 在前面準備好的機器中安裝 Information Server
  5. 導出、導入 Information Server Engine 的安裝目錄
  6. 節點配置及場景應用

IBM InfoSphere DataStage 集羣簡介

現代集羣技術

衆所周知,集羣計算機的能力可以在 IT 組織架構中最大限度的提高和利用系統資源。現代信息系統的集成解決方案建立在集羣技術之上可以大大降低計算能力的成本。

InfoSphere DataStage 集羣與 Grid 的區別

InfoSphere DataStage 提供了兩種技術來實現一個作業能夠併發的運行在不同的計算節點上,第一種是 DataStage 集羣,第二種是 DataStage Grid。下面我們來看一下兩者的主要區別。首先,DataStage 集羣建立在包含多個計算處理節點的網絡之上,在這樣一個網絡結構中,作業的運行資源由配置文件來明確指定,即配置文件中的資源配置信息指明瞭作業會運行在這些資源上。而在 DataStage Grid 中,採用資源管理器軟件 (WLM) 的動態檢查和分配資源,使得作業的運行無須依賴手工設置,從而在信息技術中利用最少的資源來獲得最大的投資。常用的 WLM 有 Tivoli Workload Scheduler LoadLeveler 和 Platform LFS 等 . 而無論 DataStage 集羣還是 DataStage Grid,都可以使用戶可以在一個網絡系統中並行運行作業(Job)。如果作者想要了解更多有關 DataStage Grid 配置的信息,可以向 IBM Service 提出諮詢。

作業的並行處理及其系統的拓撲結構

爲了最大限度的提高 IBM InfoSphere Information Server 引擎的數據處理效率,用戶可以採用作業的並行處理以及系統的集羣技術。而在 DataStage 集羣網絡拓撲中,每個作業的工作負載會在運行時被分配到不同的處理器中進行處理。這些處理器可能位於相同的計算機上,也可能位於由計算機網絡連接在一起的不同的計算機上。InfoSphere Information Server 引擎會使用這些處理器和其它的計算機資源併發的完成這些作業。而這個並行引擎和 InfoSphere Information Server 引擎共同組成了引擎拓撲層。

IBM InfoSphere DataStage 系統集羣以引擎節點爲主導節點(Conductor Node),同時由它向集羣中的普通節點(Compute Node)發送數據處理指令。以此爲特徵的 DataStage 集羣也極大的提高了數據處理速度和能力。此外,InfoSphere DataStage 還具有高可擴展性,可以非常容易的集成更多的系統節點。

在本文中,我們將重點介紹 IBM InfoSphere DataStage 中提供的用於在分佈式網格環境中對數據進行管理和處理的技術。

下圖是基於多個物理計算機實體的集羣系統拓撲結構,這些處理節點通過網絡連接在一起,共同組成了 DataStage 的集羣環境。


圖 1. 基於多個物理計算機實體的集羣系統拓撲結構
圖片示例 

初始環境準備

在詳細介紹如何配置具有多個節點的 DataStage 集羣環境之前,有一些必要的初始環境準備工作需要完成。

搭建環境所需要的機器資源

假設我們的集羣環境中 InfoSphere™ Information Server 的每個層都獨立佔用一個計算機資源,以在 Linux OS 上搭建一個 DataStage 的集羣環境爲例子,那麼我們至少需要下面的資源:

  • NAS Server:Linux OS,Host Name 假設爲 iisperfblade0,用於提供 Information Server 的 Engine 安裝目錄以導出到主導節點和其它的普通節點中。
  • Domain 層 : Linux OS,Host Name 假設爲 iisperfblade_domain,用於安裝 Information Server 的 Services tier( 服務 ) 以及 Metadata repository tier ( 存儲數據庫 )
  • Engine 層:Linux OS,Host Name 假設爲 iisperfblade11,用於安裝 Information Server 的 DataStage Server 以及處理引擎
  • Client 層:Windows OS,Host Name 假設爲 iisperfblade_client,用於安裝 Information Server 的客戶端軟件
  • 普通節點:Linux OS,普通計算節點的個數要求並沒有限制,但是要組成集羣至少需要一個普通計算節點。在我們下面的例子中,假設還有另外的三個計算節點,Host Name 分別爲 iisperfblade12,iisperfblade13,和 iisperfblade14。

對於每個機器以及資源的操作系統,由於 Information Server 的 Client 層用於安裝 DataStage 的客戶端軟件,只能安裝在 Windows 上面,所以 Client 層必須爲 Windows 操作系統。而 DataStage 的集羣需要建立在 Linux 環境中,那麼 Information Server Domain 層、Engine 層以及所有的普通計算節點都要求爲 Linux 操作系統。

爲 DataStage 節點資源創建管理員用戶

對於每一個 InfoSphere DataStage 引擎都需要一個操作系統用戶,一般情況下會使用 dsadm。用戶可以選擇在安裝的過程中創建這個用戶,也可以在安裝之前手工創建好這個用戶,然後在安裝過程中選擇它。

這個用戶會用來做一些管理性的任務,例如:創建新的項目、定義項目屬性、編譯運行作業等。下面給出了在準備 DataStage 集羣環境過程中創建用戶的步驟。

  1. 以 root 用戶登錄每一個 DataStage 節點(包括主導節點以及其它所有的普通計算節點)。
  2. 如果用戶希望在安裝 DataStage Engine 的時候讓安裝程序自動創建管理員用戶,讀者可以跳過在主導節點上手工創建的步驟。
  3. 添加用戶組:/usr/sbin/groupadd dstage
  4. 添加用戶:/usr/sbin/useradd -g dstage -d /home/dsadm dsadm
  5. 爲用戶設置密碼:/usr/sbin/passwd dsadm

注意:默認情況下,我們一般爲 InfoSphere DataStage 創建的用戶名是 dsadm,如果是在 AIX 系統上使用自定義用戶名稱,請不要超過 8 個字符。

無密碼的 SSH 服務

IBM InfoSphere DataStage 系統集羣中由主導節點(Conductor Node)向集羣中的普通節點(Compute Node)發送數據處理指令,這個過程需要主導節點和普通節點的通信。在 DataStage 系統集羣網絡中,通過 SSH(Secure Shell)進行通信。

InfoSphere DataStage 集羣中主導節點和普通節點的通信是通過無密碼的 SSH 服務來完成的。普通計算節點上的用戶通過它的共有密鑰來進行認證。在主導節點和所有的普通計算節點上進行無密碼 SSH 服務的配置方法我們將在下一小節中詳細講述。

DataStage 集羣環境構建與配置

本小節接下來的幾個部分將以一種典型的網絡拓撲結構:單 DataStage 服務器引擎即單集羣環境爲例,詳細講述 InfoSphere DataStage 集羣的構建與配置方法。

InfoSphere Information Server 服務器安裝與配置

InfoSphere Information Server 提供了多種用戶安裝方式,它可以分爲單層安裝、雙層安裝、三層安裝以及多引擎節點的多層安裝等。下圖就是一種 Information Server 三層安裝方式的總體拓撲結構圖。下面我們將使用第二小節中所列出的資源以一個單服務器引擎節點的安裝方式爲例來介紹 InfoSphere DataStage 集羣的構建與配置方法。


圖 2. Information Server 三層安裝方式的總體拓撲結構
圖片示例 

單服務器引擎

首先,我們介紹最簡單的一種 DataStage 集羣構建方式,具有單個服務器引擎的網絡拓撲來構建我們的集羣環境。DataStage 是 InfoSphere Information Server 產品的重要組成部分 . 構建 DataStage 集羣首先要安裝 InfoSphere Information Server。InfoSphere Information Server 的安裝方式採用三層安裝,即客戶端軟件一個層次,Information Server 服務軟件和存儲數據庫 (XMETA) 一個層次 , 以及 Information Server Engine 一個層次,如下圖所示。在 Information Server Engine 這一層,有一個主導節點 (Head Node) 和三個普通計算節點 (Compute Node),其中,由主導節點來與 Information Server 服務層進行通信,同時,由主導節點來與其它的普通節點進行通信 , 及普通節點間的通訊。


圖 3. 具有單服務器引擎的集羣環境
圖片示例 

多服務器引擎

此處,我們介紹另外一種安裝拓撲結構,即有兩個服務器引擎即雙集羣環境的網絡拓撲。同樣,我們把 Information Server 的總體拓撲結構分爲三個層次:一是客戶端層,用於安裝 Information Server 的客戶端軟件。一是 Information Server 引擎層。在這個拓撲中有兩個引擎層,在每個引擎層中各有一個引擎實例,因此又兩個主導節點。最後一個是 Information Server 的服務及 XMETA 數據庫層,用於安裝能夠提供各種服務的軟件系統。同單服務器引擎一樣,各引擎由主導節點來與 Information Server 服務層進行通信,同時,在同一引擎內主導節點與其它的普通節點進行通信 , 及普通節點間的通信。下圖顯示了此網絡拓撲的詳細架構圖。


圖 4. 具有雙服務器引擎的集羣環境拓撲圖
圖片示例 

Secure Shell 服務(SSH)配置

在上一小節中講述了兩種 DataStage 集羣架構,同時分別提供了它們的網絡拓撲結構。本小節集羣配置中,我們按照第二節中提供的計算機資源,以一個 DataStage 集羣爲例詳細講述其環境配置方式。

根據上述資源,對 Information Server 進行三層安裝,對於每個層上的安裝步驟都比較典型,在這裏不再贅述,作者可以參考 Information Server 信息中心上的安裝文檔 http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r5/index.jsp 。 在完成上述配置安裝完成之後,爲了構建一個集羣環境,我們需要爲這個環境添加新的普通計算節點。而這些節點中的通信是通過 SSH 來完成的,接下來我們來講述如何在這些節點中配置無密碼 SSH 服務。

在開始之前,我們來了解下集羣環境中各節點間的 SSH 通信方式及原理。InfoSphere DataStage 集羣中普通計算節點上的用戶通過它的共有密鑰來進行認證。而這是在每個需要運行作業的計算節點上都必須要進行的一個認證處理過程。

假設 DataStage 主導節點是 iisperfblade11,需要向這個環境中添加一個普通計算節點 iisperfblade14。下面是在主導節點以及普通計算節點上配置無密碼的 SSH 的詳細方式:

1. 在主導節點上生成本身的共有和私有密鑰對(RSA key pair):


清單 1. 在主導節點上生成本身的共有和私有密鑰對
				
 [dsadm@iisperfblade11 ~]$ ssh-keygen -t rsa 
 Generating public/private rsa key pair. 
 Enter file in which to save the key (/home/dsadm/.ssh/id_rsa): 
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/dsadm/.ssh/id_rsa. 
 Your public key has been saved in /home/dsadm/.ssh/id_rsa.pub. 
 The key fingerprint is: 
 d0:dc:31:0c:76:04:ab:46:c4:01:bd:00:e6:2e:43:92 dsadm@iisperfblade11 
 [dsadm@iisperfblade11 ~]$ 

2. 在上述命令運行中,系統提示輸入密碼設置,連續按回車(enter)兩次,即設置一個空的密碼。上述命令需要以 InfoSphere DataStage 用戶(一般情況下是 dsadm)執行,產生的共有和私有密鑰對會在 dsadm 用戶的 home 目錄中的 ~/.ssh/id_rsa 下面。

3. 把主導節點 iisperfblade11 上產生的共有密鑰發送給普通計算節點(以 iisperfblade14 爲例):


清單 2. 把主導節點 iisperfblade11 上產生的共有密鑰發送給普通計算節點
				
 cd /home/dsadm/.ssh/ 
 [dsadm@iisperfblade11 .ssh]$ ssh-copy-id -i dsadm/.ssh/id_rsa.pub dsadm@iisperfblade14 
 27  The authenticity of host 'iisperfblade14 (192.168.1.12)' can't be established. 
 RSA key fingerprint is e2:f9:98:cc:a5:2a:19:c5:c9:d4:ec:e6:47:1a:c3:a0. 
 Are you sure you want to continue connecting (yes/no)? yes 
 Warning: Permanently added 'iisperfblade14, ' (RSA) to the list of known hosts. 
 dsadm@iisperfblade11's password: 
 Now try logging into the machine, with "ssh 'dsadm@iisperfblade11'", and check in: 
 .ssh/authorized_keys 
 to make sure we haven't added extra keys that you weren't expecting. 
 [dsadm@iisperfblade11 ~]$ 

4. 如果上述命令無法正確執行,作者可以登錄到普通計算節點 iisperfblade14 上,把這個共有密鑰添加到自身的授權密鑰列表中,同時修改這個授權文件的權限:


清單 3. 把共有密鑰添加到自身的授權密鑰列表中
				
 cd .ssh 
 cat id_rsa.pub >>authorized_keys 
 chmod 640 authorized_keys 
 rm -f id_rsa.pub 

5. 結果驗證:

現在你可以從 InfoSphere DataStage 的主導節點上可以通過無密碼的 SSH 連接到普通計算節點上了。


清單 4. 結果驗證
				
 [dsadm@iisperfblade11 .ssh]$ ssh iisperfblade14 
 Last login: Sun Jun 26 23:03:09 2011 from iisperfblade11.svl.ibm.com 
 IISPERFBLADE14 
 Security level of data on this Machine, 
 Use of this system is subject to audit at any time by management. 
 Last APAR security update: Sun Aug  8 12:09:08 PDT 2010 
 [dsadm@iisperfblade14 ~]$ 

結果顯示主導節點與普通計算節點通信成功。按照此配置方法,在其它的計算節點 iisperfblade12, iisperfblade13 上也配置上無密碼的 SSH。

InfoSphere DataStage 主導節點(Conductor Node)構建

1. 通過 NFS Server iisperfblade0 導出 NAS 上的共享目錄 /install

在這裏我們需要把 NAS 上的目錄共享給主導節點 iisperfblade11 和普通計算節點 iisperfblade12, iisperfblade13, iisperfblade14。修改 /etc 目錄下的 exports 文件,對於每一個節點分別添加一行 :

/install hostname(rw,no_root_squash,async)

rw 允許這些節點對這個共享目錄可讀可寫,no_root_squash 允許 NFS 的客戶端可以以 root 用戶連接。添加後的文件如下:


圖 5. 添加 DataStage 節點後的 exports 文件
圖片示例 

2. 重啓 NFS Server 使得導出生效


清單 5. 重啓 NFS Server
				
 # /etc/init.d/nfs stop 
 # /etc/init.d/nfs start 
或者
 # /etc/init.d/nfs restart 

3. 在 DataStage 節點上導入共享目錄

上述操作的目的是把 NAS 上的 /install 目錄共享給 DataStage 節點(包括主導節點和普通節點),使它們能夠對這一目錄可讀可寫,並且確保 NFS 的客戶端可以用 root 用戶連接。完成上述配置之後,我們登錄到 iisperfblade11 上面,把這個目錄導入進來。具體步驟如下:

3.1 以 root 用戶登錄 iisperfblade11

3.2 修改 /etc 目錄下的 fstab 文件,添加下面一行到這個文件:

iisperfiisperfblade0:/install /install nfs rw,nolock 0 0

添加後的 /etc/fstab 文件如下:


圖 6. 添加後的 /etc/fstab 文件
圖片示例 

3.3 在 iisperfblade11 根目錄下創建 /install 目錄

3.4 使用 mount 命令導入 iisperfblade0 上的目錄 /insall:mount /install。導入後的文件系統如下:


圖 7. 導入後的 iisperfblade11 文件系統
圖片示例 

4. 在主導節點 blade11 上安裝 Information Server Engine

對於 Information Server Engine 的安裝,每個步驟都比較典型,在這裏不再贅述,作者可以參考 Information Server 信息中心上的安裝文檔 http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r5/index.jsp 。 在安裝過程中,需要注意的是安裝目錄要選擇已經配置好的 /install 目錄。

InfoSphere DataStage 普通節點(Compute Node)配置

到目前爲止,我們已經在主導節點 iisperfblade11 上安裝了 Information Server Engine。同時也配置好了主導節點和其它的三個普通節點 iisperfblade12, iisperfblade13, iisperfblade14 無密碼的 SSH 通信。接下來我們需要把 Information Server Engine 的安裝目錄導出(export)到普通節點上。

具體的導出步驟和主導節點上的做法類似,作者可以參考上一小節中的步驟。

系統構建小節

按照上述方式配置好系統環境後,Datastage 集羣環境中的主節點以及普通節點就通過計算機網絡連接在一起,並且可以通過無密碼 SSH 進行通信。

注意: 如果在 DataStage 的作業中使用到了 Oracle 數據庫連接 Stage,那麼需要做如下配置:

  1. 找到 $APT_ORCHHOME/etc 目錄
  2. 把 remsh.example 重命名爲 remsh
  3. 修改 remsh 文件,把 rsh 改爲 ssh
  4. 把 remcp.example 重命名爲 remcp

系統負載管理與分配

本小節重點講述如何在一個集羣環境中根據項目的實際運行需要,權衡系統的負載,進行正確的分配以及管理。

DataStage 節點配置文件創建和作用

DataStage 的節點配置文件用來定義普通節點和主導節點用以運行作業的計算機資源,在配置文件中每個節點都有它自己的實體用來定義它的邏輯上的節點名字,一般情況下是它的 hostname,配置文件中叫做 fastname。

在配置文件中包含多個節點塊,每個節點塊定義了它本身邏輯上節點的名字,機器的 host name,節點 pool 的名字以及存儲資源等。下面是一個包含多個節點的配置文件示例:


清單 6. 節點配置文件示例
				
 { 
	 node "CONDUCTOR" 	
	 { 		
		 fastname "production_conductor_node" 		
		 pools "conductor" 		
		 resource disk "/u1/Datasets" {pools ""} 	
		 resource scratchdisk "/u1/Scratch" {pools ""} 
	 } 
	 node "COMPUTERNODE1" 	
	 { 		
		 fastname "production_node1" 		
		 pools "" 		
		 resource disk "/u1/Datasets" {pools ""} 	
		 resource scratchdisk "/u1/Scratch" {pools ""} 
	 } 
	 node "COMPUTERNODE2" 	
	 { 		
		 fastname "production_node2" 		
		 pools "" 		
		 resource disk "/u1/Datasets" {pools ""} 	
		 resource scratchdisk "/u1/Scratch" {pools ""} 
	 } 
	 node "COMPUTERNODE3" 	
	 { 		
		 fastname "production_node3" 		
		 pools "" 		
		 resource disk "/u1/Datasets" {pools ""} 	
		 resource scratchdisk "/u1/Scratch" {pools ""} 
	 } 
 } 

  • node: 節點的邏輯名稱,通常情況下根據此節點本身具有的功能來定義。配置文件中不能包含多個相同的節點名字。
  • Fastname: 機器的 host name
  • Pools: 定義了這個節點被分配到的節點 pool 的名稱,一個節點可以分配到多個節點 pool 中。因此這裏的 pools 可以有多個值。如果這個值爲空,那麼將使用默認 pool,默認 pool 對所有的 stage 都是可用的
  • resource disk: 定義了這個節點用來存儲持久數據的存儲資源
  • resource scratchdisk: 定義了這個節點用來存儲臨時數據的存儲資源

性能優化提示:在上面的示例配置中,每個節點都使用了相同的 scratchdisk /u1/Scratch,這並不是一個好的實踐。出於性能的考慮,一般情況下並不建議這麼做,而是針對每一個節點都使用一個本身專用的 resource scratchdisk。

DataStage 配置文件設計與管理

在本小節中我們可以使用 InfoSphere DataStage 客戶端和 InfoSphere Administrator 客戶端來設計項目配置文件,根據集羣環境中的資源情況,爲 DataStage 項目定義使用資源。

用戶可以根據實際需要爲每個項目創建一個配置文件,那麼定義之後這個項目中的所有的作業運行時都會選擇這個項目的配置文件。下面我們來講述怎麼爲項目定義配置文件。

爲整個項目定義配置文件步驟如下:

  1. 使用 InfoSphere DataStage Design 客戶端,根據實際需要創建和修改配置文件
  2. 進入 DataStage Design 客戶端選擇 Tools 菜單 .
  3. 選擇 Configurations 選項,出現配置窗口,選擇新建,如下圖所示: 

    圖 8. 新建配置窗口
    圖片示例 

  4. 根據實際的計算機資源修改此配置文件
  5. 修改完成後,點擊 Check 以驗證這個配置文件,然後點擊保存並關閉主配置文件修改窗口
  6. 然後打開 Administrator 客戶端,選擇一個你需要管理的項目 

    圖 9. 選擇需要管理的項目
    圖片示例 

  7. 選擇 Properties->Environment->Parallel
  8. 找到 APT_CONFIG_FILE 參數,輸入或者雙擊選擇前面定義好的配置文件 

    圖 10. 輸入或者選擇前面定義好的配置文件
    圖片示例 

在完成上述操作之後,這個項目下的所有的作業在運行時都會使用這個配置文件中的資源。此中配置方式的優點是簡單方便,但是不能爲特殊的作業指定集羣中的資源。下面講述爲項目中特定的作業定義配置文件。

爲特定作業定義配置文件步驟如下:

  1. 使用 InfoSphere DataStage Design 客戶端,選擇進入作業所在的項目
  2. 選擇此作業,然後右擊單擊屬性,然後選擇 Parameters->Add Environment Variables,如下圖所示: 

    圖 11. 選擇 Add Environment Variables
    圖片示例 

  3. 選擇 Configuration file,如下圖所示: 

    圖 12. 選擇 Configuration file
    圖片示例 

  4. 選擇一個已經定義好的配置文件,如下圖所示: 

    圖 13. 選擇一個已經定義好的配置文件
    圖片示例 

在完成上述操作之後,這次作業在運行的時候會選擇這個配置文件。

DataStage 節點配置文件分配

到目前爲止,我們可以根據集羣環境中的資源使用 InfoSphere DataStage Design 客戶端創建配置文件,可以使用 InfoSphere Administrator 客戶端爲項目指定配置文件,同時還可以使用 DataStage Design 客戶端定義特殊作業配置文件。那麼下面接下來我們將講述他們之間的分配關係以及優先級順序。

集羣的配置文件定義了系統中可用的資源,這些資源包括固定的名稱,如數據庫服務器,SAN 服務器,SAS 服務器,遠程存儲磁盤服務器。

那麼,對於集項目配置文件以及作業配置文件,他們的關係和優先級順序如下:在一個作業運行的過程中,如果爲這個作業定義了作業配置文件,那麼 InfoSphere DataStage 引擎會優先選擇作業上的配置文件,使用這個配置文件裏面的資源運行這個作業。如果沒有爲這個作業定義作業配置文件,那麼 InfoSphere DataStage 引擎會選擇作業所在的項目配置文件,使用項目配置文件中的資源運行這個作業,如果沒有爲作業所在的項目定義配置文件,那麼 InfoSphere DataStage 引擎會使用默認的配置文件 default.apt。

DataStage 集羣應用實踐

在本文第三小節以及第四小節中,詳細講述了 DataStage 集羣構建配置和系統負載管理與分配,本節在三、四節的基礎上着重論述 DataStage 集羣在實際產品環境中的應用。對於集羣環境中實際的資源情況和系統運行需求,用戶可以修改和指定配置文件,以使得它們能夠和實際的系統資源相匹配。然後,以兩種典型的應用:側重處理器(CPU) 或者是系統內存(Memory) 的應用以及側重硬盤讀寫(Disk IO) 的應用爲例,指導用戶根據對性能的需求以及軟硬件資源的擁有情況合理選擇適合的方法並應用於實際項目中。

首先,假設我們已經有了在前面章節中搭建好的 DataStage 的集羣環境,同時設定整個集羣環境中主導節點爲 iisperfblade11,三個普通的計算節點 iisperfblade12, iisperfblade13, iisperfblade14。而這些計算節點計算能力和數據處理性能又各不相同,例如有些具有很強的處理器運算速度,有些具有很快的數據讀寫能力,有些具有很大的系統內存等。

應用場景一:不同項目中的作業運行在不同資源節點中

集羣的最大的作用就是分散系統負載到集羣中的各個資源上,使得每個節點都承擔工作負載。假設我們根據項目需求,需要在絕大多數時間裏併發運行一百個作業,由於單個機器的資源有限,例如不具有強大的處理器來併發執行這麼多作業。那麼我們現在就需要把這些工作負載分配到集羣中的所有節點上。

首先,根據集羣的四個資源節點創建四個不同的配置文件,以下提供了各個節點配置供作者參考,具體的創建步驟可以參考前面小節中的創建方式。

主導節點 iisperfblade11 配置文件示例如下:


清單 7. 主導節點 iisperfblade11 配置文件示例
				
 { 
	 node "node1"
	 { 
		 fastname "iisperfblade11"
		 pools "conductor"
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node2"
	 { 
		 fastname "iisperfblade11"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node3"
	 { 
		 fastname "iisperfblade11"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node4"
	 { 
		 fastname "iisperfblade11"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node5"
	 { 
		 fastname "iisperfblade11"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 

 } 

普通節點 iisperfblade12 配置文件示例如下:


清單 8. 普通節點 iisperfblade12 配置文件示例
				
 { 
	 node "node1"
	 { 
		 fastname "iisperfblade11"
		 pools "conductor"
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node2"
	 { 
		 fastname "iisperfblade12"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node3"
	 { 
		 fastname "iisperfblade12"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node4"
	 { 
		 fastname "iisperfblade12"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node5"
	 { 
		 fastname "iisperfblade12"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 

 } 

普通節點 iisperfblade13 和 iisperfblade14 的配置文件與 iisperfblade12 的相似,讀者可以參考進行配置。

其次,爲不同的項目指定其運行所需要的配置資源,分散工作負載。具體的指定步驟作者可以參考 DataStage 配置文件設計與管理小節中的方法。在這一過程中,我們可以儘量把所有的作業平均分配到集羣中所有資源節點上。其中,有一點需要注意:三個普通計算節點的配置文件都需要包含主導節點信息,以讓 DataStage 去識別出主導節點。例如,在這裏我們包含了一個名稱爲 conductor 的 node pool,它的 fastname 爲主導節點 iisperfblade11。如果在配置文件中確少了這個主導節點的信息,那麼項目中的作業將無法運行。當這一過程完成之後,就實現了不同項目中的作業運行在了集羣環境中的不同資源上。

從這裏可以看出,這種方式配置比較方便,只需要簡單的幾個步驟就可以把系統負載分擔到不同的集羣節點上。但是對於某些特殊的作業需要運行在特定的資源節點上,這中配置方法就無能爲力了。下面我們講述如何配置特定的作業運行到特定的資源節點上的應用。

應用場景二:特定的作業 Stage 運行到特定的資源節點上

如果一個項目的配置文件能夠適合這個項目中的絕大多數作業運行,例如這些作業都需要佔用很多的系統內存,而配置文件中的資源都具有很大的內存。但對於某些特殊的 Stage 不需要很大的系統內存而僅僅需要很快的 Disk I/O 速度。配置文件中的資源都不具有快速的 Disk I/O 讀寫能力,那麼我們可以按照下面的方式進行配置,以適用這樣的特殊的需求。

假設集羣中的一個節點 iisperfblade12 具有快速的 Disk I/O 讀寫能力,我們可以在配置文件中添加這個節點,配置如下:


清單 9. 配置文件中添加節點 iisperfblade12 示例
				
 { 
	 node "node1"
	 { 
		 fastname "iisperfblade11"
		 pools "conductor"
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node2"
	 { 
		 fastname "iisperfblade14"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node3"
	 { 
		 fastname "iisperfblade14"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node4"
	 { 
		 fastname "iisperfblade14"
		 pools ""
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 
	 node "node5"
	 { 
		 fastname "iisperfblade12"  
		 pools "io"
		 resource disk "/tmp" {pools ""} 
		 resource scratchdisk "/tmp" {pools ""} 
	 } 

 } 

在上面的配置中,我們添加了一個新的節點,然後把它的 fastname 定義爲具有快速 Disk I/O 讀寫能力的 iisperfblade12 節點。同時,爲了僅僅使作業中的某些特殊的 Stage 使用這個資源,需要爲它的 node pools 定義一個名字,在這裏定義爲“io”,然後爲這些特殊的 Stage 顯式的指定節點。使用 Designer 客戶端打開需要處理的作業,選擇作業屬性,然後打開 Advantage 頁面,選擇 Node pool and resource constraint, 同時選擇我們在配置文件中配置好的 IO pool,具體方法如下圖所示:


圖 14. 爲特殊的 Stage 顯式指定 node pools
圖片示例 

完成上述操作之後,DataStage 就會把這些特殊的 Stage 運行在集羣中的這個節點上,同時其它的作業仍然運行在其它的合適的節點資源上。這就使得作業在運行時能選擇更適合於它運行的計算機資源,大大的增快了數據處理速度。

Job 負載均衡優化與總結

1. 爲了最大可能的提高 DataStage 作業的處理效率,請爲每個項目單獨的創建一個配置文件,爲特殊的作業設置特殊的集羣資源。

2. 通常情況下的系統都會有不同的生命週期,如果是在集羣環境中,最佳實踐是需要把生命週期中的每個階段,例如開發、測試和生產系統處於不同的物理環境中。基於效率和安全等因素,不要把三者置於同一個物理集羣中。

3. 集羣的優點就是集羣環境中的節點數目越多,就具有越好的系統性能。在 DataStage 集羣中,計算節點的數目越多,系統吞吐量就越大即更好的數據處理能力。下圖展示了集羣環境中節點的數目與系統吞吐量的關係。用戶可以根據實際需要來確定集羣的節點數目。

注:下圖數據僅共讀者參考,性能測試所得到的數據一般使用特定的計算機或者組件,任何硬件或者軟件設計、配置上的不同都會影響實際所取得的性能數據。讀者應該諮詢資源中心來評估正在使用的計算機及其組件性能。


圖 15. 集羣環境中節點的數目與系統吞吐量的關係
圖片示例 

總結

本文不僅詳細講述了 IBM InfoSphere DataStage 集羣的構建與配置,同時,也以幾種典型的應用場景爲例,爲用戶提供了詳細而全面的參考價值。並且指導開發人員設計和構建更爲高效和可擴展性的數據處理環境。

貢獻者

技術審閱:

Ron Liu,IBM Information Server 性能測試team高級軟件工程師,硅谷實驗室,加利福尼亞州,美國。

Xiaoyan Pu,IBM Information Server 並行引擎高級軟件開發工程師,立託頓實驗室,力託頓,美國。


參考資料

學習

獲得產品和技術

討論

作者簡介

孫春華的照片

孫春華, IBM 中國軟件開發中心軟件工程師。目前從事針對於 InfoSphere 的系統測試以及集成測試工作,熟悉 InfoSphere 產品家族的各個子產品。同時他對各種開源的測試工具以及測試自動化技術比較感興趣。

韋東傑的照片

韋東傑,IBM IM 軟件工程師。目前主要負責 Datastage 的 SVT 測試工作。之前有 3 年的企業信息化實戰經驗。

Mi Wan Shum 的照片

Mi Wan Shum 是 IBM InfoSphere Information Server 性能測試部門的經理,現在居住於美國加利福尼亞州的硅谷。她畢業於奧斯丁的德克薩斯大學,同時在 IBM 還擁有多年的軟件開發經驗。

爲本文評分

平均分 5 星 共 4 個評分 平均分 (4個評分)

1 星1 星
2 星2 星
3 星3 星
4 星4 星
5 星5 星

評論

請 登錄 或 註冊 後發表評論。

注意:評論中不支持 HTML 語法


剩餘 1000 字符



共有評論 (2)

Good ,perfect!

希望能看到各位專家再寫 一篇 Datastage 性能 最佳實踐類的文章,最好也分應用場景來寫。

由 BruceLeeFC 於 2012年02月08日發佈

非常不錯。

由 manULinux 於 2011年11月23日發佈


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章