IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]GreenPlum 集群 迷雾重重

    mchdba发表于 2017-06-02 23:48:17
    love 0

     

    报错1 error whileloading shared libraries: libyaml-0.so.1

    在单独的linux服务器安装gpfdist之后,运行报错:

    [gpadmin@g01~]$ gpfdist

    gpfdist: error while loading shared libraries: libyaml-0.so.1: cannot open shared object file: No such file or directory

    [gpadmin@g01~]$

    /data/greenplum/bin/gpfdist: error while loading shared libraries: libyaml-0.so.1: cannot open shared object file: No such file or directory

    [gpadmin@g01~]$

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

     

    查看,已经存在了,只是不识别而已:

    [gpadmin@g01~]$ find /data/greenplum/ -name libyaml-0.so.1

    /data/greenplum/lib/libyaml-0.so.1

    [gpadmin@g01~]$

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

     

     

    Google到一篇文章https://discuss.pivotal.io/hc/en-us/articles/218036377-gpfdist-shows-error-message-while-loading-shared-libraries-libyaml-0-so-1-cannot-open-shared-object-file-No-such-file-or-directory-,说可能是版本比较低引起的

    Cause

    As explained in the 4.3.7.x release note shownbelow, the library file libyaml-0.so.1 was missed in the releases prior to4.3.7.0.

    26075

    Loaders: gpload

    4.3.7.0

    The Greenplum Database Loaders for Red Hat Enterprise 5 and 6 did not contain the library libyaml-0.so.1.

    This issue has been resolved.

     

    查看安装的loaders版本信息:

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    [gpadmin@g01lib]$ ll /home/gpadmin/

    total 29200

    -rw-rw-r-- 1 gpadmin gpadmin      163 May 11 17:43 1

    -rw-rw-r-- 1 gpadmin gpadmin      141 May 12 09:50 gpfdist.log

    -rwxr-xr-x 1 gpadmin gpadmin 15027400 May 10  2016 greenplum-loaders-4.3.8.2-build-1-RHEL5-x86_64.bin

    -rw-r--r-- 1 gpadmin gpadmin 14863550 May 11 16:43 greenplum-loaders-4.3.8.2-build-1-RHEL5-x86_64.zip

    [gpadmin@g01lib]$

    [gpadmin@g01lib]$ ll /data/greenplum/lib/libyaml*

    lrwxrwxrwx 1 gpadmin gpadmin     18 May 11 17:17 /data/greenplum/lib/libyaml-0.so.1 -> libyaml-0.so.1.0.0

    -r-xr-xr-x 1 gpadmin gpadmin 319651 Feb  1  2014 /data/greenplum/lib/libyaml-0.so.1.0.0

    lrwxrwxrwx 1 gpadmin gpadmin     18 May 11 17:17 /data/greenplum/lib/libyaml.so -> libyaml-0.so.1.0.0

    [gpadmin@g01lib]$

     

    看版本是已经是4.3.8.x了,而且lib目录下也已经有了libyaml的版本了,只是不识别,看来不是版本过低的问题导致的。

     

    继续google了下,查看到文章https://discuss.pivotal.io/hc/en-us/community/posts/206003588-Load-Tools-error-while-loading-shared-libraries-libyaml-0-so-1上面dillon网友有说添加一个lib的path路径LD_LIBRARY_PATH ,尝试,问题解决,不会报错了。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    [gpadmin@g01~]$ vim .bash_profile

    ……

    export GPHOME=/data/greenplum

    export LD_LIBRARY_PATH=/data/greenplum/lib

    PATH=$PATH:$HOME/bin:$GPHOME/bin

    #export GPHOME=/data/greenplum

    export PATH

    [gpadmin@g01~]$ gpfdist

    2017-05-12 13:48:53 13870 INFO Before opening listening sockets - following listening sockets are available:

    2017-05-12 13:48:53 13870 INFO IPV6 socket: [::]:8080

    2017-05-12 13:48:53 13870 INFO IPV4 socket: 0.0.0.0:8080

    2017-05-12 13:48:53 13870 INFO Trying to open listening socket:

    2017-05-12 13:48:53 13870 INFO IPV6 socket: [::]:8080

    2017-05-12 13:48:53 13870 INFO Opening listening socket succeeded

    2017-05-12 13:48:53 13870 INFO Trying to open listening socket:

    2017-05-12 13:48:53 13870 INFO IPV4 socket: 0.0.0.0:8080

    Serving HTTP on port 8080, directory /home/gpadmin

     

     

     

     

    报错2 不识别greenplum_path.sh

    [gpadmin@g01~]$ gpload -f gpload.yml

    /data/greenplum/bin/gpload: line 3:/data/greenplum/greenplum_path.sh: No such file or directory

    [gpadmin@g01~]$

     

    解决:自己重建一个

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    [root@g01~]# more /data/greenplum/greenplum_path.sh

     

    GPHOME=/data/greenplum

     

    # Replace with symlink path if it is present and correct

    if [ -h ${GPHOME}/../greenplum-db ]; then

        GPHOME_BY_SYMLINK=`(cd ${GPHOME}/../greenplum-db/ && pwd -P)`

        if [ x"${GPHOME_BY_SYMLINK}" = x"${GPHOME}" ]; then

            GPHOME=`(cd ${GPHOME}/../greenplum-db/ && pwd -L)`/.

        fi

        unset GPHOME_BY_SYMLINK

    fi

    #setup PYTHONHOME

    if [ -x $GPHOME/ext/python/bin/python ]; then

        PYTHONHOME="$GPHOME/ext/python"

    fi

    PYTHONPATH=$GPHOME/lib/python

    PATH=$GPHOME/bin:$PYTHONHOME/bin:$PATH

    LD_LIBRARY_PATH=$GPHOME/lib:$PYTHONHOME/lib:$LD_LIBRARY_PATH

    OPENSSL_CONF=$GPHOME/etc/openssl.cnf

    export GPHOME

    export PATH

    export LD_LIBRARY_PATH

    export PYTHONPATH

    export PYTHONHOME

    export OPENSSL_CONF

     

    [root@g01~]#

     

     

     blog源地址:http://blog.csdn.net/mchdba/article/details/72848708,作者mchdba 黄杉,谢绝转载。

     

    报错3 gpload加载失败

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    [gpadmin@g01~]$ gpload -f gpload.yml

    2017-05-12 16:15:01|INFO|gpload session started 2017-05-12 16:15:01

    2017-05-12 16:15:01|ERROR|could not connect to database: FATAL:  no pg_hba.conf entry for host "192.168.2.72", user "gpadmin", database "yueworld_db", SSL off

    . Is the Greenplum Database running on port 5432?

    2017-05-12 16:15:01|INFO|rows Inserted          = 0

    2017-05-12 16:15:01|INFO|rows Updated           = 0

    2017-05-12 16:15:01|INFO|data formatting errors = 0

    2017-05-12 16:15:01|INFO|gpload failed

    [gpadmin@g01~]$

     

    解决办法:gpload是在greenplum的数据库服务器上面执行的,不是在单独的gpfdist的服务器上执行。

     

     

     

     

    报错4 cannot changea readable external table

    [gpadmin@dwhm01_2_111 ~]$ gpload -fgpload.yml

    2017-05-12 16:57:41|INFO|gpload sessionstarted 2017-05-12 16:57:41

    2017-05-12 16:57:41|INFO|setting schema'public' for table 't01'

    2017-05-12 16:57:41|INFO|started gpfdist -p8090 -P 8091 -f "/home/gpadmin/gpdextdata/t01.txt/home/gpadmin/gpdextdata/t02.txt" -t 30

    2017-05-12 16:57:42|ERROR|ERROR:  cannot change a readable external table"t01"

     encountered while running INSERT INTOpublic."t01" ("id","name") SELECT"id","name" FROMext_gpload_0e8b9f06_36f1_11e7_907a_0017fa009565

    2017-05-12 16:57:42|INFO|rows Inserted          = 0

    2017-05-12 16:57:42|INFO|rows Updated           = 0

    2017-05-12 16:57:42|INFO|data formattingerrors = 0

    2017-05-12 16:57:42|INFO|gpload failed

    [gpadmin@dwhm01_2_111 ~]$

     

    【问题解决】:需要提前建立的可读写的外部表,sql语句如:create writable external table public.t01……

     

     

     

     

    报错5 permissiondenied: no privilege

    [gpadmin@g01~]$  gpload -f gpload.yml

    2017-05-12 17:35:42|INFO|gpload session started 2017-05-12 17:35:42

    2017-05-12 17:35:42|INFO|setting schema 'public' for table 't01'

    2017-05-12 17:35:42|INFO|started gpfdist -p 8090 -P 8091 -f "/home/gpadmin/gpdextdata/t01.txt /home/gpadmin/gpdextdata/t02.txt" -t 30

    2017-05-12 17:35:42|ERROR|could not run SQL "create external table ext_gpload_5e20945e_36f6_11e7_a5f0_0017fa004ce3(id int,name text)location('gpfdist://192.168.2.72:8091//home/gpadmin/gpdextdata/t01.txt%20/home/gpadmin/gpdextdata/t02.txt') format'text' (delimiter ',' null '\\N' escape '\\' ) segment reject limit 25 ": ERROR:  permission denied: no privilege to create a readable gpfdist(s) external table

     

    2017-05-12 17:35:42|INFO|rows Inserted          = 0

    2017-05-12 17:35:42|INFO|rows Updated           = 0

    2017-05-12 17:35:42|INFO|data formatting errors = 0

    2017-05-12 17:35:42|INFO|gpload failed

    [gpadmin@g01~]$

     

     

    【解决办法:】

    赋予ssb用户创建外部表权限:

    要允许用户创建外部表,否则建外部表时会得到错误 
    ERROR:  permission denied: no privilege to create a readable gpfdistexternal table 
    修改配置文件/data/greenplum-db-4.3.12.0/gpconfig/gpinitsystem_config,添加参数 
    gp_external_enable_exec = on   # enable external tables withEXECUTE. 
    gp_external_grant_privileges = on #enable create http/gpfdist for non su's

    允许非超级管理员创建外部表,必须重启数据库服务(使用gpstop –u命令该参数文件修改不生效),才能生效。

     

    重启greenplum后,查看是否有权限:

    yueworld_db=# show gp_external_enable_exec ;

     gp_external_enable_exec

    -------------------------

     on

    (1 row)

     

    yueworld_db=#

    yueworld_db=# show gp_external_grant_privileges;

     gp_external_grant_privileges

    ------------------------------

     off

    (1 row)

     

    yueworld_db=#

     

    看到gp_external_grant_privileges还是off的,证明在gpinitsystem_config里面配置gp_external_grant_privileges无效的,所以直接使用命令行设置:

    [gpadmin@dwhm01_2_111 gpconfig]$  gpconfig -c gp_external_grant_privileges  -v on

    20170515:10:50:05:017519 gpconfig:dwhm01_2_111:gpadmin-[INFO]:-completed successfully

    [gpadmin@dwhm01_2_111 gpconfig]$ gpconfig -c gp_external_enable_exec -v on

    20170515:10:50:12:017592 gpconfig:dwhm01_2_111:gpadmin-[INFO]:-completed successfully

    [gpadmin@dwhm01_2_111 gpconfig]$

     

    添加配置完后,再重启greenplum集群,生效:

    [gpadmin@dwhm01_2_111 gpconfig]$ gpstop -r

    20170515:10:51:08:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Starting gpstop with args: -r

    20170515:10:51:08:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Gathering information and validating the environment...

    20170515:10:51:08:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information

    20170515:10:51:08:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Obtaining Segment details from master...

    20170515:10:51:27:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Cleaning up leftover shared memory

    20170515:10:51:33:017869 gpstop:dwhm01_2_111:gpadmin-[INFO]:-Restarting System...

    [gpadmin@dwhm01_2_111 gpconfig]$

    [gpadmin@dwhm01_2_111 gpconfig]$

    [gpadmin@dwhm01_2_111 gpconfig]$ psql -d yueworld_db

    psql (8.2.15)

    Type "help" for help.

     

    yueworld_db=# show gp_external_grant_privileges;

     gp_external_grant_privileges

    ------------------------------

     on

    (1 row)

     

    yueworld_db=# show gp_external_enable_exec ;

     gp_external_enable_exec

    -------------------------

     on

    (1 row)

     

    yueworld_db=#

     

    然后再执行数据导入操作,OK,不会报权限错误了:

    [gpadmin@g01~]$ gpload -f gpload.yml

    2017-05-15 10:53:47|INFO|gpload session started 2017-05-15 10:53:47

    2017-05-15 10:53:47|INFO|setting schema 'public' for table 't01'

    2017-05-15 10:53:47|INFO|started gpfdist -p 8090 -P 8091 -f "/home/gpadmin/gpdextdata/t01.txt /home/gpadmin/gpdextdata/t02.txt" -t 30

    2017-05-15 10:53:48|INFO|running time: 0.37 seconds

    2017-05-15 10:53:48|INFO|rows Inserted          = 0

    2017-05-15 10:53:48|INFO|rows Updated           = 0

    2017-05-15 10:53:48|INFO|data formatting errors = 6

    2017-05-15 10:53:48|INFO|gpload succeeded

    [gpadmin@g01~]$

     

     

     

     

    报错6 permissiondenied for schema dw

    [gpadmin@g01~]$ gpload -f g2.yml

    2017-05-19 17:02:38|INFO|gpload session started 2017-05-19 17:02:38

    2017-05-19 17:02:38|INFO|started gpfdist -p 8090 -P 8091 -f "/data/greenplum/gpextdata/t21.txt /data/greenplum/gpextdata/t22.txt" -t 30

    2017-05-19 17:02:38|ERROR|ERROR:  permission denied for schema dw

     encountered while running INSERT INTO "dw"."t02" ("id","name") SELECT "id","name" FROM ext_gpload_e8104a8a_3c71_11e7_bb89_0017fa004ce3

    2017-05-19 17:02:38|INFO|rows Inserted          = 0

    2017-05-19 17:02:38|INFO|rows Updated           = 0

    2017-05-19 17:02:38|INFO|data formatting errors = 0

    2017-05-19 17:02:38|INFO|gpload failed

    [gpadmin@g01~]$

     

    【解决方案】,在greenplum集群中,赋予mch账号权限。

    先在greenplum集群的master上执行权限赋予操作

    yueworld_db=#  grant all on schema dw to mch;                                                   

    GRANT

    yueworld_db=#

     

    然后去gpload服务器上执行

    [gpadmin@g01~]$ gpload -f g2.yml

    2017-05-19 17:09:59|INFO|gpload session started 2017-05-19 17:09:59

    2017-05-19 17:09:59|INFO|started gpfdist -p 8090 -P 8091 -f "/data/greenplum/gpextdata/t21.txt /data/greenplum/gpextdata/t22.txt" -t 30

    2017-05-19 17:09:59|INFO|running time: 0.32 seconds

    2017-05-19 17:09:59|INFO|rows Inserted          = 8

    2017-05-19 17:09:59|INFO|rows Updated           = 0

    2017-05-19 17:09:59|INFO|data formatting errors = 0

    2017-05-19 17:09:59|INFO|gpload succeeded

    [gpadmin@g01~]$

     



沪ICP备19023445号-2号
友情链接