《Greenplum企业应用实战》一2.2 安装Greenplum的常见问题

2.2 安装Greenplum的常见问题

安装Greenplum最常见的错误就是环境变量设置错误,网卡配置错误,或者是每个Segment的通道或网络没有打通。
如果子节点的操作系统环境不一样,也可能会导致各种各样的错误。所以在搭建环境的时候,要求每一台机器的配置基本一样,方便以后管理与维护,避免一些奇怪的问题。下面将介绍几个常见的报错及处理方法。

2.2.1 /etc/hosts配置错误

现在来看一个奇怪的报错SQL,查询一张普通表时报如下错误,但是查询数据字典又不报错:

testDB=# select * from test002;
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
ERROR:  No primary gang allocated (cdbgang.c:1635)
testDB=# select count(1) from pg_class;
 count
-------
   633
(1 row)

报这个错误是因为Master连接不到Segment。如果原先是一个正常的系统,突然报错了,就要想想是否修改了什么导致的。在这个例子中,是因为修改了/etc/hosts,不小心将:

10.20.151.8     inc-dw-hadoop-151-8 sdw1

改成了:

10.20.151.18     inc-dw-hadoop-151-8 sdw1

Master连接Segment的时候连接不上,就报了这个错误,但是pg_class是每一个节点都有的,而Master上的数据只需要在Master上查询,不用连接Segment,所以没有报错,只需将配置修改回来即可。
有些时候,也可以利用这个方法来判断一个操作是否需要与Master交互,比如生成执行计划(关于执行计划的详细内容可阅读第5章)是否只在Master上执行,与Segment有没有交互:

testDB=# explain select * from test002;
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
ERROR:  No primary gang allocated (cdbgang.c:1635)
testDB=# explain select count(1) from pg_class;
                            QUERY PLAN
------------------------------------------------------------------
 Aggregate  (cost=39.20..39.21 rows=1 width=0)
   ->  Seq Scan on pg_class  (cost=0.00..20.48 rows=7488 width=0)
(2 rows)

这样就可以看出,生成分布式执行计划也是需要与Segment进行交互的。那么为什么下面生成pg_class的执行计划不会报错呢?这是因为表test002是业务数据,数据分布在Segment上,生成的执行计划是分布式的,而pg_class是保存表元数据信息的数据字典,数据保存在Master上,生成的执行计划是单机的,详见第5章执行计划。
在Greenplum 4.3中,这个报错是:ERROR: Unexpected internal error (cdbgang.c:1622)。报错的内容与原因都是一样的,只是在显示上Greenplum 4.1与Greenplum 4.3有所区别。
在Greenplum 3.3.x版本中,如果修改了Master的/etc/hosts配置,将:

127.0.0.1    localhost  localhost.localdomain

错写成:

127.0.0.1    localhost  localhost.localdomain mdw

那么还会有如下的奇怪现象发生。
在创建表的时候Master没有报错,说明Master与Segment是可以通信的,但是查询这张表的时候就会报如下的错误:

testDB=# create table aaa(like bbb);
NOTICE:  Table doesn't have 'distributed by' clause, defaulting to distribution columns from LIKE table
CREATE TABLE
testDB =# select * from bbbb;
ERROR:  Interconnect timeout: Unable to complete setup of all connections within time limit.
DETAIL:  Completed 2 of 6 incoming and 0 of 0 outgoing connections.
gp_interconnect_setup_timeout = 20 seconds.

错误提示已经超时了,建议将超时时间设置大一点,但是修改相关参数还是没有用。其实是因为Segment在连接到Master的时候使用的IP是127.0.0.1,指定到了本地机器,导致Segment连接不到Master,故报出这个错误。将Master连接到Segment就没有问题,因此将对应的/etc/hosts修改回来就可以了。
将/etc/hosts改回来之后,进行查询后还是报同样的错,这是因为当前连接还没有生效,要退出当前的session,重新连接Greenplum才行。
Greenplum内部会有很多的网络通信交互,因此建议将操作系统的防火墙关闭,避免各种奇怪的问题,其中防火墙就会引起本节介绍的在Greenplum 3.3.x版本中遇到的问题。

2.2.2 MASTER_DATA_DIRECTORY设置错误

没有设置MASTER_DATA_DIRECTORY,会报这样的错误:

[gpadmin@dw-greenplum-1 ~]$ gpstop
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[INFO]:-Starting gpstop with args: ''
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[INFO]:-Gathering information and validating the environment...
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[CRITICAL]:-gpstop failed. (Reason='Environment Variable MASTER_DATA_DIRECTORY not set!') exiting...

这样会导致MASTER_DATA_DIRECTORY参数的目录设置错误:

[gpadmin@dw-greenplum-1 ~]$ echo $MASTER_DATA_DIRECTORY
/home/gpadmin/gpdata/gpmaster/gpseg-1
[gpadmin@dw-greenplum-1 ~]$ export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg1
[gpadmin@dw-greenplum-1 ~]$ gpstop
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[INFO]:-Starting gpstop with args:
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[INFO]:-Gathering information and validating the environment...
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[CRITICAL]:-gpstop failed. (Reason='[Errno 2] No such file or directory: '/home/gpadmin/gpdata/gpmaster/gpseg1/postgresql.conf'') exiting...

在初始化数据库的时候要多注意环境变量的设置,如果环境变量设置不当,很容易造成数据库初始化错误。

时间: 2024-08-10 02:25:12

《Greenplum企业应用实战》一2.2 安装Greenplum的常见问题的相关文章

《Greenplum企业应用实战》一第2章 Greenplum快速入门2.1 软件安装及数据库初始化

第2章 Greenplum快速入门 本章将介绍如何快速安装部署Greenplum,以及Greenplum的一些常用命令及工具."工欲善其事,必先利其器",因此我们先从如何安装Greenplum开始介绍,然后介绍一些简单的工具,以及Greenplum的语法及特性.为了让读者更加快速地入门,避免涉及太多底层的东西.本章不会涉及硬件选型.操作系统参数讲解.机器性能测试等高级内容,这些会在"第8章Greenplum线上环境部署"中介绍. 2.1 软件安装及数据库初始化 下面

《Greenplum企业应用实战》一导读

前 言 为什么写作本书 阿里巴巴是国内最早使用Greenplum作为数据仓库计算中心的公司.从2009年到2012年Greenplum都是阿里巴巴B2B最重要的数据计算中心,它替换掉了之前的Oracle RAC,有非常多的优点. Greenplum的性能在数据量为TB级别时表现非常优秀,单机性能相比Hadoop要快好几倍. Greenplum是基于PostgreSQL的一个完善的数据库,在功能和语法上都要比Hadoop上的SQL引擎Hive好用很多,对于普通用户来说更加容易上手. Greenpl

《Greenplum企业应用实战》一2.3 畅游Greenplum

2.3 畅游Greenplum 本节只介绍一些常用的命令,重点是Greenplum特有的一些命令,而对于一般数据库都具备的特性及SQL标准语法,本节提到的比较少,因此要求读者在阅读本节具备一定的SQL基础. 2.3.1 如何访问Greenplum psql psql是Greenplum/PostgreSQL默认的客户端,前面初始化数据库的时候已经使用过了,下面介绍一些详细的用法. ```javascript [gpadmin@dw-greenplum-1 ~]$ psql --help This

《Greenplum企业应用实战》一1.4 Greenplum特性及应用场景

1.4 Greenplum特性及应用场景 1.4.1 Greenplum特性 (1)支持海量数据存储和处理当今是个数据迅速增长的时代,数据量从过去的MB到GB,再到TB增长到现在的PB级规模,传统的OLTP数据库在TB级别以上的数据管理中已经捉襟见肘.Greenplum使用MPP架构,同时使用多台机器并行计算,极大地提高了对海量数据的处理能力.采取MPP架构的数据库系统才能对海量数据进行管理.(2)高性价比Greenplum数据库可以搭建在业界各种开放式硬件平台上,在硬件选型上有很强的自由性.相

《Greenplum企业应用实战》一第1章 Greenplum简介1.1 Greenplum的起源和发展历程

第1章 Greenplum简介 本章先介绍Greenplum的产生背景.特性及应用场景.与PostgreSQL关系,以及发展历程. 1.1 Greenplum的起源和发展历程 短短十多年,互联网在中国经历了从门户网站.搜索.即时通信.游戏娱乐.垂直细分--到电子商务.Web 2.0,再到社会化网络.移动互联网的一系列进化和变革.无论是互联网还是移动互联网,都是由海量的数据构成.对海量数据分析的需求开始突破传统边界,不再局限于电信.移动.金融.保险.制造等传统企业,涌现出大批将海量.庞杂的数据转化

《Greenplum企业应用实战》一第3章 Greenplum实战3.1 历史拉链表

第3章 Greenplum实战 从本章开始我们结合实际需求,阐述一下日常项目开发中如何结合Greenplum的特性进行高效的开发,展现出Greenplum在海量数据分析中的优势. 本章将介绍两个完整的例子:数据仓库拉链记历史和网页浏览日志分析.在这两个例子中,会结合Greenplum的一些特性加以描述,之后会介绍使用Greenplum中要注意的一些特性,以及这些特性对性能的影响. 3.1 历史拉链表 数据仓库是一个面向主题的.集成的.相对稳定的.反映历史变化的数据集合,用于支持管理决策.由于需要

《Greenplum企业应用实战》一3.2 日志分析

3.2 日志分析 日志分析是网站分析的基础,通过对网站浏览的日志进行分析,可以为网站优化提供数据支持,了解用户群以及用户浏览特性,对改进网站体验,提升流量有非常重要的意义.下面将通过Greenplum实现一个简单的网站浏览日志的分析. 3.2.1 应用场景描述 分析全网站每分钟的PV.UV,并导出到Excel中,画出折线图.解析URL,获取URL中的参数列表.通过URL取得member_id,然后统计当天浏览次数的用户分布,如浏览次数在1-5.6-10.11-50.51-100以及100次以上的

《Greenplum企业应用实战》一3.3 数据分布

3.3 数据分布 由于Greenplum是分布式的架构,为了充分体现分布式架构的优势,我们有必要了解数据是如何分散在各个数据节点上的,有必要了解数据倾斜对数据加载.数据分析.数据导出的影响. 3.3.1 数据分散情况查看 我们来简单做个测试,首先,利用generate_series和repeat函数生成一些测试数据,代码如下: create table test_distribute_1 as select a as id ,round(random()) as flag , repeat('a

《Greenplum企业应用实战》一2.4 小结

2.4 小结 本章主要介绍了Greenplum的安装和部署,以及一些简单的基本的数据库操作及使用注意点, 力求使读者可以快速了解Greenplum的特性,迅速上手,后续的章节会详细介绍Greenplum的一些高级特性以及管理和优化.与普通的PostgreSQL数据库的最大不同就是,Greenplum是分布式数据库,所有的数据都切分在Semgment上,在使用过程中要时刻注意这一点.Greenplum的函数与PostgreSQL的函数大部分是一样的,在PostgreSQL的文档中对函数有很多的解释