InfoSphere DataStage 是一款功能强大的 ETL(Extract, Transform and Load) 工具,在实践中,它经常需要与数据库连接来进行数据的提取转换和分发。本文主要介绍在 AIX 环境中如何通过 InfoSphere DataStage 提供的 DB2CC 和 DB2EE stage 来实现 DB2 for Linux, Unix and Window(LUW) 数据装载的三种配置方法以及这三种方法的各自特点。
InfoSphere DataStage 是 IBM InfoSphere Information Server 的一个核心模块,它是一个拥有多样化功能的 E(提取)T(转换)L(加载)工具,支持对大量简单或复杂的数据进行收集、转换以及分发操作。InfoSphere DataStage 针对不同数据库的连接,例如 Oracle、Informix 以及 DB2 等,提供了多种类型的 stage,本文则主要介绍了如何通过 DB2CC/DB2EE Stage 来连接 DB2 Server 进行数据装载。DB2CC stage 主要基于 DB2 CLI 客户端接口,它能够非常方便地通过配置 DataStage(DS) Engine 使用的 DB2 客户端来连接 DB2 Server。在功能方面,DB2CC 不仅提供了 DB2 Database Partitioning Feature(DPF)支持 和 DB2 Bulk Load 这些 DB2EE 已有的功能,而且还包含了其他 stage 所不具备的多种新特性。在性能方面,DB2CC 更是远远超出 DB2 API 和 DB2 Load Plug-in stage。另外,与 DB2EE 相比,DB2CC 在“INSERT”方面的性能要好过 DB2EE,而在“SELECT”方面则取决于操作不同数量和类型的纵列以及不同数量的并行节点,性能会有所差异,但是在配置上,DB2EE 却比 DB2CC 复杂得多。因此在大多数情况下,DB2CC 都可被视为 InfoSphere DataStage 连接 DB2 Server 的第一选择。但是如果将获取最佳性能作为首要目标,并且不考虑配置复杂度的话,那么使用 DB2EE stage 是更优的选择。
在本文中将介绍三种通过 DataStage 将数据装载到目标数据库的配置方法,一种是使用 DB2EE,而另外两种是使用 DB2CC。
[DB2CC]
1. 单个 DB2 Connector 实例在 Engine 节点运行
这是一种简单的配置方法,与下面介绍的多个 DB2 Connector 实例相比,仅需在 Admin 和 Data 节点上进行少量的配置,但是在性能上会差一些。
2. 多个 DB2 Connector 实例在 Data 节点运行
这是一种复杂的配置方法,需要在 Data 节点上进行大量的配置,但是在性能方面会比上一种方法提高许多。
注意:DB2CC 的配置是非常灵活的,有许多配置方法可以实现将数据装载入目标数据库,但是本文将只介绍以上这两种常用方法。
[DB2EE]
对于 DB2EE 来说,它的配置是最为复杂的,但是其性能在本例的 AIX 环境中也是最佳的。
DB2EE stage 通过在主节点 (Conductor Node) 端的 CLI 接口来进行表定义的查询以及对信息的分区 , 同时,其负责数据装载的 DB2 EE 组件实例必须在 DB2 server 端运行。DB2 EE stage 只能用于分区数据库,因此必须启用 DB2 DPF 功能才能使用 DB2EE,EE stage 的部署结构图如下:
图 1. DB2EE
在 DB2CC 的架构中,数据库可以使用 DB2 分区,但这并不是 DB2CC 所必需的。DB2CC 是通过 DB2 CLI 接口来实现 DB2 client-server 之间的连接以及数据装载,因此其 connector 组件实例运行的位置较为灵活,DB2 Connector 可全部运行于主节点,也可只运行在子节点(Player Node)。其部署结构图如下
图 2. DB2CC
本文将以 AIX 环境为例,详细介绍如何配置 DB2CC 和 DB2EE 与 DB2 Server 的连接。在具体配置 DB2EE 和 DB2CC 之前,这两个 Stage 有一些相同的初始环境准备工作需要完成。
下面本文就以一个成功配置 DB2EE/DB2CC 的例子来讲解具体实现的步骤。例子中的 InforSphere DataStage 和 DB2 Server 的安装信息如下 :
DS server : sa7405p01 (Engine 节点 )
IS 安装目录:/isbin/engine/IBM/InformationServer
IS project 安装目录:/isprojects
DB2 server : sa7403p01 (Data 节点 ), sa7402p01(Admin 节点 )
需要注意:
a) 该部分(初始环境准备)是 DB2CC 和 DB2EE 配置都需要的。
b) 在本文中,DSEngine 使用的 DB2 客户端实例名和 DB2 Server 分区环境中使用的实例名一致。
c) 如用户的数据库安装时没有建立 Admin 节点,仅需忽略本文中针对 Admin 节点的相应配置即可。
1. 在 DS Engine 节点安装 DB2 客户端 , 并创建 DB2 实例 bcuaix
2. 使用“su – bcuaix”命令确认 bcuaix 实例成功创建
3. 在 Data 节点创建目标数据库 BCUDB
4. 使用下列命令将 ISAS 节点 Catalog 到 Engine
db2 CATALOG TCPIP NODE ISAS REMOTE sa7403p01 SERVER 50000 |
图 3. Catalog Node 节点结果
5. 使用下列命令将 BCUDB Catalog 到 Engine
db2 CATALOG DB BCUDB AS BCUDB AT NODE ISAS |
图 4. Catalog DB 结果
1. 因为 BCUDB 数据库是由 bcuaix 用户创建,所以当前 dsadm 用户没有权限对它进行 load 或 insert 操作。需要通过在 Admin 节点运行以下命令为 dsadm 用户赋予对 BCUDB 数据库的 load 访问权限
db2 connect to BCUDB db2 grant dbadm on database to user dsadm |
图 5. Grant dbadm 权限
2. 将下面的 DB2 profile 环境变量添加到 /ishome/dsadm/.profile file
if [ -f /db2home/bcuaix/sqllib/db2profile ]; then . /db2home/bcuaix/sqllib/db2profile fi |
3. 确保 dsadm 用户可以成功连接 BCUDB
图 6. 确保 dsadm 用户能够连接 DB
1. 配置 dsenv 文件,将下面内容添加到 /isbin/engine/IBM/InformationServer/Server/DSEngine/dsenv 文件中
if [ -f /db2home/bcuaix/sqllib/db2profile ]; then
. /db2home/bcuaix/sqllib/db2profile
fi
|
2. 运行下列命令重新启动 DataStage Engine Server
$cd /isbin/engine/IBM/InformationServer/Server/DSEngine/bin $uv – admin – stop $uv – admin – start |
当初始环境准备的工作正确配置后,读者就可以完成本章节关于 DB2CC 的具体配置步骤。
1. 创建一个 job 时,可以从组件面板拖拽 DB2 Connector 轻松的将其添加到 job 中,如图所示
图 7. 选中 DB2CC 图标
2. 将 DB2 Connector 配置作为目标数据,如图所示
图 8. 创建 DB2CC 简单 JOB
3. 设置 DB2CC 连接参数
图 9. 配置 DB2CC 连接参数
根据需求设定“Bulk load with LOB or XML column(s)”的值。当设置该值为“No”时,会使用 API 方法将数据载入数据库,否则将会使用 CLI 方法载入数据。通常使用第一种方法会获得更好的性能。
图 10. 设置 Bulk load 参数
这样一个简单的 DB2CC load job 就生成并且配置好了,但是,如果要让这个 job 顺利运行,还需要完成一些其他步骤,那就是在本文开头提到的两种 DB2CC 配置方法,下面我们来分别介绍。
注意:在有些 AIX 环境中必须设置 DB2 client library file 选项。如在本文中,它设置为 /db2home/bcuaix/sqllib/lib64/libdb2.a(shr_64.o)
单个 DB2 Connector 实例在 Engine 节点运行的配置
DB2CC 单实例在 Engine 节点运行的配置最为简单。其配置步骤如下:
1. 使用默认的 Partition type(Auto)
图 11. 设定 Partition Type
2. 创建或者修改 DS Engine 配置文件
将单个 DB2 ServerCC node 添加到 DS Engine 配置文件中,在本例中,fast name 就是 DS Engine 节点的 hostname,配置如下
{
node "node1"
{
fastname "sa7405p01"
pools ""
resource disk "/isresources/Datasets" {pools ""}
resource scratchdisk "/isscratch2/scratch" {pools ""}
}
...
node "node16"
{
fastname "sa7405p01"
pools ""
resource disk "/isresources/Datasets" {pools ""}
resource scratchdisk "/isscratch2/scratch" {pools ""}
}
//db2 cc nodes cfg for db2cc
node "dbnode1"
{
fastname "sa7405p01"
pools "DB2"
resource disk "/tmp" {pools ""}
resource scratchdisk "/tmp" {pools ""}
}
}
|
注意: 在本文,该单实例运行的配置中,仅设置了一个 pools “DB2”的节点,并且它的 fastname 设置为 DS Engine 节点的 hostname。
3. 设置 Node pool 的值
在 DB2CC 的属性页中单击选中黄颜色标识的数据库图标,然后在“Advanced”标签中,将 Node Pool 的值设置为 DB2,如图所示
图 12. 设定 Node Pool 选项
这样 DB2CC 第一种方法的配置就完成了,下面再介绍第二种方法即多个 DB2 Connector 实例在 Data 节点运行的配置。
多个 DB2 Connector 实例在 Data 节点运行的配置
DB2CC 多实例在 Data 节点运行的配置较为复杂,需要进行 rsh 和 nfs 等设置。
1. 在 Admin 节点和 Data 节点配置 remote shell(rsh)服务
1) 在 DB2 Server 上设置 rsh ,将下列内容添加到 Admin 节点和 Data 节点的 /etc/hosts.equiv 文件中
sa7402p01 dsadm sa7402p01 bcuaix sa7403p01 dsadm sa7403p01 bcuaix sa7405p01 dsadm sa7405p01 bcuaix |
2) 用 dsadm 用户运行下面的命令以确保 rsh 正确配置,如果结果没有显示日期,则说明 rsh 配置还有问题
$ rsh sa7403p01 date |
图 13. 验证 rsh
注意:请确保 rsh 正确配置,否则将无法运行 DB2CC loading
2. NFS 配置
NFS 挂载 :
若 IS project 目录包含在 IS 安装目录中(project 默认目录),则只将 sa7405p01(DS server) 上的 IS 安装目录 /isbin/engine/IBM/InformationServer 挂载到 sa7402p01(DB2 Admin 节点 ) 和 sa7403p01(DB2 Data 节点 ) 上;若 IS project 目录单独指定,则必须将 sa7405p01(DS server) 上的 IS 安装目录 /isbin/engine/IBM/InformationServer 以及 IS project 目录 /isprojects 都挂载到 sa7402p01(DB2 Admin 节点 ) 和 sa7403p01(DB2 Data 节点 ) 上。
1) 将 Engine 节点上的 IS 和 IS project 作为 NFS 目录导出,在 sa7405p01(DS server) 上,用’ smitty ’命令导出目录,运行 smitty ,按照以下菜单顺序进入设置
- System Storage Management (Physical & Logical Storage)
- File Systems
- Add / Change / Show / Delete File Systems
- Network File System (NFS)
- Network File System (NFS)
- Add a Directory to Exports List
然后,根据下图所示进行设置导出 IS 安装目录
图 14. 使用 SMITTY 配置 NFS
若需要单独挂载 IS project 目录,则重复上面的步骤,将 IS 安装目录换成 IS project 目录 /isprojects,以导出 IS project。
最后通过下面的命令行确保两个目录已经成功导出 , 结果如下图
cat /etc/exports |
图 15. 查看配置文件
2) 分别在 sa7402p01(DB2 Admin 节点 ) 和 sa7403p01(DB2 Data 节点 ) 上导入 NFS 目录,在 sa7402p01 和 sa7403p01 上,通过命令’ smitty ’创建 NFS ,运行 smitty 按照以下菜单顺序进入设置
- System Storage Management (Physical & Logical Storage)
- File Systems
- Add / Change / Show / Delete File Systems
- Network File System (NFS)
- Network File System (NFS)
- Add a File System for Mounting
然后,根据下图所示进行设置导入 IS 安装目录
图 16. 使用 SMITTY 配置 NFS
若需要单独挂载 IS project 目录,则重复上面的步骤,将 IS 安装目录换成 IS project 目录 /isprojects,以导入 IS project。
注意:
a) 必须在 sa7402p01(DB2 Admin 节点 ) 和 sa7403p01(DB2 Data 节点 ) 上都导入 IS 安装目录和 IS project 目录(若该 IS project 目录单独指定)。
b) 挂载点和远端目录必须使用完全相同的路径。
3) 通过运行 df – m 命令确保 IS 安装目录和 IS project 目录在 Admin 节点和 Data 节点都已成功挂载。
图 17. 查看配置文件
3. DB2CC 在 DS Designer 中的配置
1) 将 Partition type 的值设置为“DB2 Connector ”,如图所示
图 18. 配置 Partition Type
2) 创建并修改 DS Engine 配置文件
在 DS Engine 配置文件中添加 8 个 DB2CC 节点,Fastname 为 Data 节点的 hostname,具体配置如下
{
node "node1"
{
fastname "sa7405p01"
pools ""
resource disk "/isresources/Datasets" {pools ""}
resource scratchdisk "/isscratch2/scratch" {pools ""}
}
...
node "node16"
{
fastname "sa7405p01"
pools ""
resource disk "/isresources/Datasets" {pools ""}
resource scratchdisk "/isscratch2/scratch" {pools ""}
}
//db2 cc nodes cfg for db2cc
node "dbnode1"
{
fastname "sa7403p01"
pools "DB2"
resource disk "/tmp" {pools ""}
resource scratchdisk "/tmp" {pools ""}
}
...
node "dbnode8"
{
fastname "sa7403p01"
pools "DB2"
resource disk "/tmp" {pools ""}
resource scratchdisk "/tmp" {pools ""}
}
}
|
注意: 建议设置 pools “DB2” 节点的数量等于 DB2 Data 节点上的分区数目,并且将它们的 fastname 设置为 DB2 Data 节点的 hostname。
3) 在 DB2CC 的属性页中单击选中黄颜色标识的数据库图标,然后在”Advanced”选项卡中,设置 Node Pool 的值为”DB2”
图 19. 配置 Node Pool
以上就是两种 DB2CC 的配置方法,用户可以根据自己的需求来选择使用第一种配置(单个 DB2 Connector 实例在 Engine 节点运行的配置)或者第二种配置(多个 DB2 Connector 实例在 Data 节点运行的配置)。总体上,第一种配置步骤简单,但性能相对较弱。第二种配置复杂一些,但性能较好。
接下来,下文将介绍 DB2EE 的配置。
当 DB2EE/DB2CC 的初始环境准备的工作正确配置后,读者也可以跳过 DB2CC 配置章节,直接完成本章节关于 DB2EE 的具体配置。DB2EE 的实现步骤如下:
在 DB2Server(Admin 节点和 Data 节点)的配置步骤
1. 配置 remote shell(rsh) 服务
具体步骤请参见上文“多个 DB2 Connector 实例在 Data 节点运行的配置”中的第一步骤中的 rsh 的配置
2. NFS 配置
具体步骤请参见上文“多个 DB2 Connector 实例在 Data 节点运行的配置”中的第二步骤中的 NFS 的配置
1. 配置 remote shell(rsh) 服务
1) 在 DSServer 上配置 rsh ,将下列内容添加到 Engine 节点的 /etc/hosts.equiv 文件中
sa7402p01 dsadm sa7402p01 bcuaix sa7403p01 dsadm sa7403p01 bcuaix sa7405p01 dsadm sa7405p01 bcuaix |
2) 用 dsadm 用户运行下面的命令以确保 rsh 正确配置,如果结果没有显示日期,则说明 rsh 配置还有问题
$ rsh sa7402p01 date $ rsh sa7403p01 date |
图 20. 验证 rsh
2. 配置 db2nodes.cfg 文件
1) 将 DB2 Server Data 节点上 /db2home/bcuaix/sqllib/ 目录下的 db2nodes.cfg 文件复制到所有节点(sa7402p01, sa7403p01, sa7405p01 )的 /ishome/dsadm/dbcfg/sqllib 目录下
图 21. 配置 db2nodes.cfg 文件
2) 设置项目的环境变量 APT_DB2INSTANCE_HOME=/ishome/dsadm/dbcfg
3. 按照如下格式创建或修改 DS 配置文件
{
node "node1"
{
fastname "sa7405p01"
pools ""
resource disk "/isscratch1/dataset" {pools ""}
resource scratchdisk "/isscratch1/scratch" {pools ""}
}
…
node "node8"
{
fastname "sa7405p01"
pools ""
resource disk "/isscratch4/dataset" {pools ""}
resource scratchdisk "/isscratch4/scratch" {pools ""}
}
node "dbnode1"
{
fastname "sa7403p01"
pools "DB2"
resource disk "/tmp" {pools ""}
resource scratchdisk "/tmp" {pools ""}
}
node "dbnode2"
{
fastname "sa7402p01"
pools "DB2"
resource disk "/tmp" {pools ""}
resource scratchdisk "/tmp" {pools ""}
}
}
|
通过以上步骤就可以完成对 DB2EE 的配置了。
本文介绍了三种在 AIX 环境中通过 InfoSphere DataStage 配置 DB2CC/DB2EE stage 进行数据装载的方法,每种方法都有自己的特点,用户可根据对性能的需求以及配置操作的难易度合理选择适合的方法并应用于实际项目中。
学习
- 从 InfoSphere Information Server 信息中心 的 XML stage 部分获取更多细节。
- 了解有关 XML 架构规范 的更多信息。
- 在 developerWorks 中国网站 Information Management 专区 了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
- 随时关注
developerWorks 技术活动 和 网络广播。
获得产品和技术
- 使用可以直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目。
讨论
- 参与
developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。