亿信ABI
当前版本:5.6.1

Greenplum装载组件

1.组件介绍

通过创建外部表方式读取第三方文件,将大数据量的表数据抽取到Greenplum目标库中。 

Greenplum装载组件的目标设置中:

1.协议选项,下拉框有gpfdist和file协议,file 协议用于直接访问本地文件系统中的文件,适用于数据文件存储在 Greenplum 节点的本地文件系统中,且数据量相对较小,对性能要求不高的场景。

gpfdist是 Greenplum 提供的一个高性能的文件服务器,用于在多个 Greenplum 节点之间分发和读取数据文件,适用于数据文件存储在外部存储系统中(如 NFS、HDFS 等),且数据量较大,需要高效并行读取的场景,所以gpfdist协议依赖与gpload程序。

2.主机名:file协议下需要配置greenplum数据库服务器的主机名。gpfdist协议不需要配置主机名。

3.更新方式:file协议下的,更新方式有数据覆盖、数据附加方式。gpfdist协议下更新方式支持数据附加、数据覆盖、更新插入。

4.目标库用户名:file协议下可以填写多个目标库用户名,用英文逗号分隔。 由于创建外部表必须要超级用户,所以目标库配置的是超级用户,但是创建的目标表对于其他用户没有查看权限。所以增加了此配置项,会给填写的这些用户赋予目标库的增删改查权限,如果赋权操作执行失败(比如填写的用户不存在等),异常信息会在任务的控制台打印出来,提示赋权失败,不影响任务运行的整体流程,可以自己手动赋权。

整个流程说明:

1.来源表经过数据处理,再通过平面文件输出组件,输出csv文件(服务器文件文件路径名称可以写xxx.csv,以csv文件后缀结尾),这个时候csv文件就是在产品服务器的某个路径下了。

2.Greenplum装载组件如上图配置,选择的是产品服务器,其中文件路径填写的就是上一步生成的csv文件路径了。选择file协议。第一行的边缘采集节点配的是greenplum数据库(segment节点)主机上运行的边缘采集节点地址,主机名是第一行边缘采集节点主机的主机名。

3.程序会先将产品服务器上的csv文件上传到第一行边缘采集节点的主机上,然后基于这个csv文件路径,在greenplum数据库上创建外部表,再将外部表的数据(也就是csv文件的数据)插入到目标表中。 最后会删除掉第一行边缘采集节点的主机上csv文件和外部表。

另外注意的点:

由于创建外部表需要greenplum数据库的管理员用户权限,所以greenplum装载组件的目标库的数据源需要配置为gpadmin用户。

2.使用场景

现源表有100w条数据需要迁移到对应的gp库表中。通过传统的表输入-表输出的方式性能较慢。所以需要借助gp装载组件来提升数据迁移的效率。

前置步骤:

1.Liunx服务器或者windows服务器已部署边缘采集节点程序。

2.在睿治服务器系统设置-参数配置-配置边缘采集节点和gpfdist调度参数。详情见部署手册。

3.在gp数据库所在服务器安装gpload程序。

4.进入etl任务设计页面,拖入表输入组件、平面文件输出组件gp装载组件。表输入配置选择大数据量的表通过平面文件输出组件输出成文件存储在服务器上。

gp装载组件字段列表页面配置gp库,且gp库用户必须有dba 权限。目标配置中需要配置一个边缘采集节点,此处配置边缘采集节点的作用是为了将生成的文件传输到边缘采集节点通过gpdist命令处理到gp库中。第二个需要配置读取文件的来源,此处可以四种方式来获取文件分别是边缘采集节点、产品服务器、FTP服务器、hdfs数据源,此处由于我们是通过平面文件输出生成的文件所以选择文件来源为 产品服务器,然后配置文件路径即可。

协议此处选择gpfdist协议,字段分割符按照文件内容配置即可,更新方式选择为数据附加,错误数据表会在迁移过程中迁移失败的数据存储在此表中,限制错误数表示当错误数据表中的数据达到这个设置的数量时,任务会执行失败。

配置完成后点击运行即可。具体执行情况如图,对比于传统得表输入-表输出得迁移方式使用gp装载组件极大程度上得提高了迁移得效率。

单体测试情况:

序号

数据量

字段个数

文件大小(M)

文件格式

写入方式

Greenplum装载耗时

1

100w

64

332

TXT

覆盖

41秒

2

200w

64

664

TXT

覆盖

1分40秒

CSV

追加

1分8秒

3

400w

64

1328

TXT

覆盖

5分13秒

1328

TXT

追加

5分17秒

1328

CSV

追加

3分56秒

1328

CSV

覆盖

4分13秒

根据测试记录情况分析,数据量跟装载耗时呈线性增长,且耗时跟文件格式有一定关系,建议使用CSV文件格式。

3.gpload安装

gpload是用Python语言实现的,所以我们需要先配置好Python环境,然后安装gpload压缩包。
①.Linux系统默认是安装了Python的,如果没有需要手动安装(Python版本要求2.4.4以上);
通过命令:python
可以查看Python版本信息,如下图:

exit() 退出
Python下载地址:https://www.python.org/downloads/source/
②.PyYAML包安装
安装命令:pip install pyyaml
检查安装:
输入:python
输入:import yaml
没有报错,则表示安装成功,如下图:
报错则需要重新安装;
如果pip命令安装不上,则可以离线安装;
③.  离线安装
安装包下载地址:https://pypi.org/project/PyYAML/#files
1、下载Linux对应版本的PyYAML包;
2、将文件拷贝到Linux上,并解压:tar -zxvf PyYAML-5.1.tar.gz
3、安装命令:进入解压后的文件夹,执行:python setup.py install
3.PyGresql包安装
4.安装命令
安装命令:pip install PyGreSQL
4.1离线安装
安装包下载地址:https://pypi.org/project/PyGreSQL/#files
①.下载Linux对应版本的PyGreSQL包;
②.将文件拷贝到Linux上,并解压:tar -zxvf PyGreSQL-5.1.tar.gz
③.  安装命令:进入解压后的文件夹,执行:python setup.py install
④.greenplum-loaders安装
⑤.1greenplum-loaders下载
下载地址:
https://network.pivotal.io/products/pivotal-gpdb/#/releases/280281
注意:
a)版本选择与Grennplum版本一致;
b)需要与Linux版本对应,查看Linux系统版本: cat /proc/version;
c)根据具体情况,选择对应的版本。
4.2 greenplum-loaders安装(zip包版)
(1)解压unzip greenplum-loaders-5.16.0-rhel7-x86_64.zip
解压缩出来bin格式文件
greenplum-loaders-5.16.0-rhel7-x86_64.bin
(2)运行 ./greenplum-loaders-5.16.0-rhel7-x86_64.bin
注意:
a)中途提示是否接受协议,选择yes,
b)中途提示安装路径,直接跳过表示选择默认安装在/usr/local/路径下,可根据自己想要安装的路径进行指定;
(3)添加环境变量
执行:vi ~/.bashrc
插入:source/usr/local/greenplum-loaders-5.16.0/greenplum_loaders_path.sh
生效命令:source ~/.bashrc
(4)修改路径
如果安装不是默认路径,则需要更改
/usr/local/greenplum-loaders-5.16.0/greenplum_loaders_path.sh中GPHOME_LOADERS改为你安装的路径;
(5)添加环境GP变量:
执行命令:vi ~/.bash_profile

export PGDATABASE=addseg(数据库)

export PGHOST=192.25.108.86(Master主机IP)

export PGPORT=5432(端口)

export PGUSER=gpadmin(用户名)

export PGPASSWORD=123456(密码)


生效命令 source ~/.bash_profile
注意:控制文件里面已经设置好了这部分内容,一般不用写死,如果连接数据库时需要验证密码,可以编辑新增PGPASSWORD。
(6)配置Greenplum master主机上的pg_hba.conf文件
为了让Greenplum能够接受此主机的远程连接,需要配置Greenplum master主机上的pg_hba.conf文件,需要在其中添加一行表示此主机配置信息,格式为:host database role CIDR-address authentication-method
host表示连接采用TCP/IP协议,database为此连接匹配的数据库名(可以为all),role代表为此连接匹配的数据库用户(可以为all),CIDR-address代表当客户端主机的IP地址和此值相匹配时建立连接,authentication-method代表授权方式,包括Trust和md5等方式,Trust代表只要连接即授权,md5代表需要密码进行授权;
重载集群配置文件命令:gpstop -u
例如:vi /home/data/master/gpseg-1/pg_hba.conf
添加一行: host all all 172.33.33.33 trust
执行命令:gpstop -u
完成之后在命令行输入:gpload -?查看帮助
5.Linux环境上安装遇到的问题
在linux机器上部署了gpload,一般都会遇到以下几个问题:
1、版本不对应,一般都体现为python版本和pyyaml版本,python和pygresql版本,GP库与gpload版本不对应。
对于这种版本不对应的问题,一般解压后安装时都会报版本不对应的错误,换成对应版本的即可。
2、安装比较繁琐的应该是pygresql,因为这个包依赖其他包比较多,如果解决了版本问题,安装依旧报错的话可以执行以下命令
yum install gcc
yum install postgresql-devel
sudo yum install python-devel
已测试成功的版本如下:
Greenplum5.19+Greenplum-loaders-5.21.4+python2.6.6+PyYaml-5.1.2+PyGresql-4.2.2

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇Greenplum卸载组件

下一篇Hadoop迁移组件

请先登录