用HAWQ轻松取代传统数据仓库(二) —— 安装部署

一、安装规划
1. 选择安装介质

        HAWQ的安装介质有两种选择,一是下载源码手工编译,二是使用Pivotal公司提供的HDB安装包。源码的下载地址为http://apache.org/dyn/closer.cgi/incubator/hawq/2.0.0.0-incubating/apache-hawq-src-2.0.0.0-incubating.tar.gz,目前最新版本是2.0.0。源码编译和安装Apache官方文档地址为https://cwiki.apache.org/confluence/display/HAWQ/Build+and+Install
        建议初学者不要使用源码编译方式,这种方法需要的依赖包很多,对操作系统、Hadoop的版本、安装与配置也提出较高的要求。我曾尝试在已有的CDH 5.7集群上源码编译安装HAWQ 2.0.0,过程可谓步履维艰,一步一坎,最终还是放弃了这个失败的安装方案。如果想挑战一下自己的心理承受能力或技术水平的同学,不妨尝试这种方式。网上也有一些详细的资料可供参考,如“Apache HAWQ集群的安装部署”和“HAWQ手动安装”。我推荐的方式是使用HDB介质,主要原因是过程相对简单,安装成功率高。

2. 选择HAWQ版本
        目前Pivotal提供的最新版本是HDB 2.1.1,该版本最主要的变化是包含了对ORC文件格式的一些支持(Beta版),包含所有Apache HAWQ孵化项目的功能特性,并修复了一些Apache HAWQ的bug。
        在选择HDB版本时,需要考虑它与所支持操作系统、Hadoop平台和安装工具Ambari的版本之间的匹配关系。表1显示了最新的Pivotal HDB 2.1.1版本的产品支持。完整的产品支持矩阵参考http://hdb.docs.pivotal.io/211/hdb/releasenotes/HAWQ211ReleaseNotes.html#topic_g53_tgv_2v

Pivotal HDB版本


PXF版本


HDP (Pivotal HDP and Hortonworks HDP)版本


Ambari版本


HAWQ Ambari Plug-inban版本


MADlib版本


RHEL/CentOS版本


SuSE版本


2.1.1.0


3.1.1


2.5


2.4.1


2.1.1


1.9, 1.9.1


6.4+ (64-bit)


n/a

表1 HDB 2.1.1产品支持

注意:

  • 不支持RHEL/CentOS 7。
  • Hadoop仅支持Hortonworks Data Platform(HDP)和Pivotal HDP两种发行版本。

本次安装选择最新版Pivotal HDB 2.1.1。

3. 确认Ambari与HDP的版本兼容性
        安装HDB之前首先需要安装Ambari和Hortonworks Data Platform(HDP)。从表1看到Ambari的版本是2.4.1,HDP的版本是2.5,再次从hortonworks官方的安装文档中确认版本兼容性,兼容矩阵如图1所示。

图1 Ambari与HDP的版本兼容性

4. 实验环境
        主机信息如表2所示,所有主机都能连接互联网。

主机名


IP地址


hdp1


172.16.1.124


hdp2


172.16.1.125


hdp3


172.16.1.126


hdp4


172.16.1.127

表2 主机信息

硬件配置:每台主机CPU4核、内存8G、硬盘100G
        软件版本如表3所示。

名称


版本


操作系统


CentOS release 6.4 (Final) 64位


JDK


OpenJDK 64-Bit version "1.7.0_09-icedtea"


数据库


MySQL 5.6.14


JDBC


MySQL Connector Java5.1.38


HDP


2.5.0


Ambari


2.4.1

表3 系统软件版本

二、安装前准备
        整个HAWQ的安装部署过程包括安装Ambari、安装HDP、安装HAWQ三个依次进行的步骤,在实施这些步骤前需要做一些准备工作。如没做特殊说明,所有配置或命令都用root用户执行。
1. 参考官方文档确认最小系统需求
        操作系统:CentOS v6.x
        浏览器:Google Chrome 26及以上
        依赖软件包:yum、rpm、scp、curl、unzip、tar、wget、OpenSSL (v1.01, build 16 or later)、Python 2.6.x、OpenJDK 7/8 64-bit
        系统内存与磁盘:Ambari主机至少应该有1G内存和500M剩余磁盘空间。如果要使用Ambari Metrics,所需内存和磁盘依据集群规模,如图2所示。

图2 资源需求与集群规模

最大打开文件描述符:推荐值大于10000。使用下面的命令检查每个主机的当前值:

ulimit -Sn
ulimit -Hn

如果小于10000,使用下面的命令设置成10000

ulimit -n 10000

2. 准备系统安装环境
(1)禁用防火墙
        在安装期间Ambari需要与部署集群主机通信,因此特定的端口必须打开。最简单的实现方式是执行下面的命令禁用防火墙:

/etc/init.d/iptables stop
chkconfig iptables off

四台主机都要执行。

(2)禁用SELinux
        Ambari安装需要禁用SELinux:

setenforce 0
# 编辑/etc/selinux/config文件,设置
SELINUX=disabled

四台主机都要执行。

(3)配置域名解析
        编辑/etc/hosts文件,添加如下四行:

172.16.1.124 hdp1
172.16.1.125 hdp2
172.16.1.126 hdp3
172.16.1.127 hdp4

四台主机都要执行。

注意:不要删除文件中原有的如下两行,否则可能引起网络问题。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

在hdp1上执行:

hostname hdp1
# 编辑/etc/sysconfig/network文件,设置如下两行:
NETWORKING=yes
HOSTNAME=hdp1

在hdp2、hdp3、hdp4上执行类似的配置。

(4)安装配置NTP

yum install -y ntp
chkconfig ntpd on
service ntpd start

四台主机都要执行。

(5)配置SSH免密码
        为了使得Ambari Server在集群所有主机上自动安装Ambari Agents,必须配置Ambari Server主机到集群其它主机的SSH免密码连接。以下配置用于在hdp1上运行Ambari Server,在所有四台主机上运行Ambari Agents的情况。

ssh-keygen
... 一路回车 ...
ssh-copy-id hdp1
ssh-copy-id hdp2
ssh-copy-id hdp3
ssh-copy-id hdp4

四hdp1上执行以上命令。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

四台主机都要执行。

(6)安装MySQL JDBC驱动

tar -zxvf mysql-connector-java-5.1.38.tar.gz
cp ./mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jar

四台主机都要执行。

(7)安装MySQL数据库
        在hdp1、hdp2上安装MySQL,hdp1上的MySQL用于Ambari,hdp1上的MySQL用于Hive、Oozie等Hadoop组件。在hdp1、hdp2上执行以下命令。

rpm -ivh MySQL-5.6.14-1.el6.x86_64.rpm
service mysql start

(8)在hd2上的MySQL中建立数据库用户并授权

# mysql -u root -p
create database hive;
create database oozie;
create user ‘hive‘@‘%‘ identified by ‘hive‘;
grant all privileges on hive.* to ‘hive‘@‘%‘;
create user ‘oozie‘@‘%‘ identified by ‘oozie‘;
grant all privileges on oozie.* to ‘oozie‘@‘%‘;
flush privileges;

3. 建立本地Repository
        联机安装过程中需要从远程的Repository中yum下载所需要的包,为了防止由于网络不稳定或远程Repository不可用等原因导致的安装失败,最好配置本地Repository。在安装HDP时,本地和远程的Repository配合使用,既能加快安装进度,又能补全所需的包。
(1)下载以下两个文件到hdp1

wget http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos6-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz

(2)在hdp1上建立一个HTTP服务器

yum install httpd
mkdir -p /var/www/html/
cd /var/www/html/
tar -zxvf ~/HDP-2.5.0.0-centos6-rpm.tar.gz
tar -zxvf ~/HDP-UTILS-1.1.0.21-centos6.tar.gz
service httpd start

(3)新建/etc/yum.repos.d/hdp.repo文件,添加如下行:

name=hdp-2.5.0.0
baseurl=http://172.16.1.124/HDP/centos6/
path=/
enabled=1
gpgcheck=0
priority=10

(4)新建/etc/yum.repos.d/hdp-utils.repo文件,添加如下行:

name=HDP-UTILS-1.1.0.21
baseurl=http://172.16.1.124/HDP-UTILS-1.1.0.21/repos/centos6
path=/
enabled=1
gpgcheck=0
priority=10

(5)下载CentOS6-Base-163.repo到/etc/yum.repos.d目录
        安装过程中发现本地仓库不全,还少RPM包,因此再加一个163的源。

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

(6)新建/etc/yum.repos.d/fedora.repo文件,添加如下行:

name=epel
baseurl=http://dl.fedoraproject.org/pub/epel/6/x86_64/
enabled=1
gpgcheck=0

HAWQ的Repository中缺少libgsasl库,需要再加一个包含libgsasl库的源。

(7)将新建的Repository配置文件复制到其它主机

scp /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/
scp /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/
scp /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/

三、安装Ambari
        Ambari跟Hadoop等开源软件一样,也是Apache Software Foundation中的一个项目,并且是顶级项目。目前最新的发布版本是 2.4.2。就Ambari的作用来说,就是创建、管理、监视Hadoop的集群。但是这里的Hadoop是广义的,指的是Hadoop整个生态圈(例如 Hive、Hbase、Sqoop、Zookeeper等等),而并不仅是特指Hadoop。用一句话来说,Ambari就是让Hadoop 以及相关的大数据软件更容易使用的一个工具。
        Ambari主要具有以下功能特性:

  • 通过一步一步的安装向导简化了集群部署。
  • 预先配置好关键的运维指标(metrics),可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。
  • 支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。
  • 通过一个完整的RESTful API把监控信息暴露出来,集成了现有的运维工具。
  • 用户界面非常直观,用户可以轻松有效地查看信息并控制集群。

Ambari使用Ganglia收集度量指标,用Nagios支持系统报警,当需要引起管理员的关注时(比如,节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。此外,Ambari能够安装安全的(基于Kerberos)Hadoop集群,以此实现了对Hadoop 安全的支持,提供了基于角色的用户认证、授权和审计功能,并为用户管理集成了LDAP和Active Directory。
        Ambari自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server和Ambari Agent。简单来说,用户通过Ambari Server通知Ambari Agent安装对应的软件,Agent会定时地发送各个机器每个软件模块的状态给Ambari Server,最终这些状态信息会呈现在Ambari的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。下面详细说明Ambari的安装。

1. 下载Ambari repository到hdp1
(1)下载Ambari repository文件

wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo

注意:文件名必须是ambari.repo,当Ambari Agent注册到Ambari Server时需要此文件。

(2)确认Repository配置

yum repolist | grep amba

应该看到类似图3所示的信息

图3 查看Ambari repository

(3)安装Ambari Server

yum install ambari-server

这步也会安装Ambari缺省使用的PostgreSQL数据库。出现提示符时输入y,确认事务和依赖检查。

2. 为Ambari配置MySQL数据库
(1)在hdp1上的MySQL中建立Ambari数据库用户并授权

# mysql -u root -p
create user ‘ambari‘@‘%‘ identified by ‘ambari‘;
grant all privileges on *.* to ‘ambari‘@‘%‘;
flush privileges;

(2)建立Ambari Server数据库模式

# mysql -u ambari -p
create database ambari;
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

3. 配置Ambari Server
        启动Ambari Server前必须进行配置,指定Ambari使用的数据库、安装JDK、定制运行Ambari Server守护进程的用户等。在hdp1上执行下面的命令管理配置过程。

ambari-server setup
  • Customize user account for ambari-server daemon提示时输入n,使用root用户运行Ambari Server。
  • 选择JDK 1.7。
  • Enter advanced database configuration提示时输入y,选择Option [3] MySQL/MariaDB,然后根据提示输入连接MySQL的用户名、密码和数据库名,这里均为ambari。

4. 启动Ambari Server
        在hdp上执行下面的命令启动Ambari Server:

ambari-server start
# 查看Ambari Server进程状态
ambari-server status

至此,Ambari安装完成

四、安装、配置、部署HDP集群
        Hortonworks Data Platform是Hortonworks公司开发的Hadoop数据平台。Hortonworks由Yahoo的工程师创建,它为Hadoop提供了一种“service only”的分发模型。有别于其它商业化的Hadoop版本,Hortonworks是一个可以自由使用的开放式企业级数据平台。其Hadoop发行版本即HDP,可以被自由下载并整合到各种应用当中。
        Hortonworks是第一个提供基于Hadoop 2.0版产品的厂商,也是目前唯一支持Window平台的Hadoop分发版本。用户可以通过HDInsight服务,在Windows Azure上部署Hadoop集群。HDP的特性如下:

  • HDP通过其新的Stinger项目,使Hive的执行速度更快。
  • HDP承诺是一个Apache Hadoop的分支版本,对专有代码的依赖极低,避免了厂商锁定。
  • 专注于提升Hadoop平台的可用性。

下面说明在浏览器中使用Ambari的安装向导交互式安装、配置、部署HDP。

1. 在浏览器中登录Ambari
http://172.16.1.124:8080,初始的用户名/密码为admin/admin。在欢迎页面点击“Launching Install Wizard”,如图4所示。

图4

2. 给集群命名
        集群名称中不要有空格和特殊字符,然后点击“Next”。

3. 选择HDP版本
        选择2.5.0.0,如图5所示。

图5

4. 选择Repositories
        选择Use Public Repositories,然后点击“Next”。

5. 安装选项

  • Target Hosts编辑框中输入四个主机名,每个一行。
hdp1
hdp2
hdp3
hdp4
  • 点击“Choose File”按钮,选择“准备系统安装环境”第(5)步中hdp1上生成的私钥文件id_rsa。
  • 用户名root,端口22
  • 选择“Register and Confirm”

6. 确认主机
        选中四台主机,点击“Next”。

7. 选择服务
        根据需要选择服务,点击“Next”。

8. 标识Masters
        根据需要选择Masters,点击“Next”。

9. 标识Slaves和Clients
        根据需要选择Slaves和Clients,点击“Next”。

10. 定制服务

  • 为hive和oozie配置MySQL数据库连接。
  • 设置所需的密码。
  • 其它保持缺省。

11. 复查确认
        选择“Deploy”。

12. 安装、启动与测试
        此时显示安装进度页面。Ambari对HDP的每个组件执行安装、启动和简单的测试。不要刷新浏览器,等待部署过程完全执行成功。当出现“Successfully installed and started the services”时,选择“Next”。

13. 完成
        汇总页面显示完成的任务列表。选择“Complete”,显示Ambari Web GUI主页面。

至此,HDP安装完成。

五、安装HAWQ
1. 选择HAWQ主机

        在安装HAWQ之前,使用下面的步骤选择和准备所需主机。
(1)选择作为HAWQ segment的主机。记住有以下限制:

  • 每台主机都必须满足安装相应版本HAWQ的系统要求。
  • 每个HAWQ segment所在主机必须和其上运行的HDFS DataNode协同工作。
  • HAWQ master segment和standby master segment必须部署在不同的主机上。

在本实验环境中,集群中的四台主机均作为HAWQ segment,其中两台分别作为master和standby,在安装时Ambari会自动部署主机。
(2)选择运行PXF的主机。记住有以下限制:

  • PXF必须安装在HDFS NameNode和所有HDFS DataNodes主机上。
  • 如果配置了Hadoop HA,PXF必须安装在包括所有NameNode和所有HDFS Node的主机上。
  • 如果想通过PXF访问HBase和Hive,必须在将要安装PXF的主机上首先安装HBase和Hive的客户端。

在本实验环境中,集群中的四台主机均安装PXF,在安装时Ambari会自动部署主机。(在前面部署HDP时,已经在所有四台机器上安装了客户端程序。)
(3)确认所有主机上的所需端口没有被占用
        HAWQ master和standby master服务缺省使用5432端口。前面安装Ambari是使用的是MySQL数据库存储元数据,而不是缺省的PostgreSQL,所以本次安装中不存在端口冲突问题。

2. 建立HDB软件的Repositories
        在安装HDB前必须建立两个本地yum repositories。在运行Ambari server的主机上(hdp1)以root用户执行下面的步骤。这台主机(称为repo-node)必须能够访问HAWQ集群的所有节点。
(1)重启httpd服务器

service httpd [re]start

(2)从https://network.pivotal.io/products/pivotal-hdb下载名为hdb-2.1.1.0-7.tar的HDB安装文件。
(3)建立一个临时目录存储解压后的的HDB安装包。运行httpd进程的操作系统用户(本此安装中是root)必须对该目录及其所有上级目录具有可读可执行的权限。

mkdir /staging
chmod a+rx /staging

注意:不要使用/tmp目录,/tmp下的文件可能在任意时间被删除。
(4)HDB安装文件中包含一个yum repository。解压HDB安装文件后,运行setup_repo.sh脚本,将HDB软件的发布包添加到本地yum包的repository中。

cd /staging
tar -zxvf hdb-2.1.1.0-7.tar
cd hdb-2.1.1.0
./setup_repo.sh

setup_repo.sh在本地建立一个名为hdb-2.1.1.0.repo的HDB repository,并且在httpd服务器的根目录(缺省为/var/www/html)下建立一个符号链接指向hdb-2.1.1.0-7.tar的解压缩目录。在本次安装中为:/var/www/html/hdb-2.1.1.0 -> /staging/hdb-2.1.1.0
(5)在HAWQ集群的所有节点上安装epel-release包

yum install -y epel-release

3. 使用Ambari安装HAWQ
(1)用root用户登录Ambari server主机(hdp1)。
(2)从HDB repository安装HAWQ Ambari插件。

yum install -y hawq-ambari-plugin

以上命令会建立/var/lib/hawq目录,并将所需的脚本和模板文件安装到该目录中。
(3)重启Ambari服务器。

ambari-server restart

(4)执行add-hawq.py脚本将HDB repository添加到Ambari服务器中。

cd /var/lib/hawq
./add-hawq.py --user admin --password admin --stack HDP-2.5

注意:提供正确的Ambari管理员用户名/密码,缺省为admin/admin。
(5)重启Ambari服务器。

ambari-server restart

(6)登录Ambari web控制台。
http://172.16.1.124:8080,缺省的用户名/密码为admin/admin,确认HAWQ服务已经可用。
(7)选择HDFS -> Configs标签。
(8)配置HDFS。

  • 选择Settings标签,修改DataNode max data transfer threads为40960。
  • 选择Advanced标签,点开DataNode,设置DataNode directories permission为750。
  • 点开General,设置Access time precision为0。
  • 点开Advanced hdfs-site,设置表4所示属性的值,如果属性不存在,则选择Custom hdfs-site,点击Add property… 添加属性并设置表中所示的值。

Property


Setting


dfs.allow.truncate


true


dfs.block.access.token.enable


false for an unsecured HDFS cluster, or true for a secure cluster


dfs.block.local-path-access.user


gpadmin


HDFS Short-circuit read


true


dfs.client.socket-timeout


300000000


dfs.client.use.legacy.blockreader.local


false


dfs.datanode.handler.count


60


dfs.datanode.socket.write.timeout


7200000


dfs.namenode.handler.count


600


dfs.support.append


true

表4 hdfs-site属性
(9)点开Advanced core-site,设置表5所示属性的值,如果属性不存在,则选择Custom core-site,点击Add property… 添加属性并设置表中所示的值。

Property


Setting


ipc.client.connection.maxidletime


3600000


ipc.client.connect.timeout


300000


ipc.server.listen.queue.size


3300

表5 core-site属性
(10)点击Save保存配置。
(11)如果Ambari提示需要重启,在继续后面的步骤前先点击Restart重启服务。
(12)在主页选择Actions > Add Service。
(13)从服务列表选择HAWQ和PXF,点击Next,显示Assign Masters页。
(14)选择HAWQ Master和HAWQ Standby Master的主机,或接受缺省值,点击Next显示Assign Slaves and Clients页。
(15)选择运行HAWQ segments和PXF的主机,或接受缺省值,点击Next。Add Service助手会基于可用的Hadoop服务自动为HAWQ选择主机。
        注意:PXF必须安装在NameNode、Standby NameNode和每一个DataNode节点上,而HAWQ segment必须安装在每个DataNode节点上。
(16)在Customize Services页面接受缺省设置。
(17)点击Advanced标签,输入HAWQ系统用户口令,点击Next。
(18)在后面的页面均接受缺省值,连续点击Next。
(19)最后点击Complete。如果Ambari提示集群上的组件需要重启,选择Restart > Restart All Affected重启所有受影响的服务。
(20)验证HAWQ安装。
        用gpadmin用户登录HAWQ master所在主机,执行下面的命令:

# 设置HAWQ环境变量
source /usr/local/hawq/greenplum_path.sh
psql -d postgres
create database test;
\c test
create table t (i int);
insert into t select generate_series(1,100);
\timing
select count(*) from t;

结果如图6所示。

图6 验证HAWQ安装

参考:
http://hdb.docs.pivotal.io/
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.0/index.html

时间: 2024-10-09 23:46:42

用HAWQ轻松取代传统数据仓库(二) —— 安装部署的相关文章

用HAWQ轻松取代传统数据仓库(十一) —— 数据管理

一.基本操作1. INSERT        在常用的增删改查数据库操作中,HAWQ仅支持INSERT和SELECT两种,不支持UPDATE和DELETE,这主要是因为HDFS是一个只能追加数据而不能更新的文件系统.SELECT语句最熟悉不过,它应该是数据库中最常用的语句了,在下一篇"查询优化"时再进一步讨论.INSERT语句用于创建表行,该命令需要表名和表中每个列的值.在HAWQ中,该命令有四种用法,其中三种是SQL中的常规用法,另一种是对标准SQL的扩展.(1)指定列名与列值   

用HAWQ轻松取代传统数据仓库(十四) —— 高可用性

一.HAWQ高可用简介 HAWQ作为一个传统数仓在Hadoop上的替代品,其高可用性至关重要.通常硬件容错.HAWQ HA.HDFS HA是保持系统高可用时需要考虑并实施的三个层次.另外实时监控和定期维护,也是保证集群所有组件健康的必不可少的工作.        总的来说,HAWQ容错高可用的实现方式包括: 硬件冗余 master镜像 双集群 1. 硬件级别的冗余(RAID和JBOD) 硬件组件的正常磨损或意外情况最终会导致损坏,因此有必要提供备用的冗余硬件,当一个组件发生损坏时,不中断服务.某

用HAWQ轻松取代传统数据仓库(四) —— 启动停止

前面已经完成了HAWQ的安装部署,也了解了HAWQ的系统架构与主要组件,下面开始使用它.HAWQ作为Hadoop上的一个服务提供给用户,与其它所有服务一样,最基本的操作就是启动.停止.重启服务.要完成这些操作,需要适当的环境设置.下面就HAWQ管理的一些基础概念.操作环境.启动停止及其推荐的操作进行讨论. 一.基础概念        如果组织中能够做到系统管理与开发分离,那这部分内容严格说应该是HAWQ系统管理员所关心的.要利用好HAWQ集群,应该有一些Linux/UNIX系统管理.数据库管理系

用HAWQ轻松取代传统数据仓库(十二) —— 查询优化

即便对SELECT等数据库查询语句已经很熟悉了,但HAWQ里的查询有其自己的特点,还是需要研究一下. 一.HAWQ的查询处理流程        理解HAWQ的查询处理过程有助于写出更加优化的查询.与任何其它数据库管理系统类似,HAWQ也有如下的查询执行步骤: 用户使用客户端应用(如psql)连接到HAWQ master主机上的数据库实例,并向系统提交SQL语句. master接收到查询后,由查询编译器解析提交的SQL语句,并将生成的查询解析树递交给给查询优化器. 查询优化器根据查询的磁盘I/O.

用HAWQ轻松取代传统数据仓库(八) —— 大表分区

一.HAWQ中的分区表        与大多数关系数据库一样,HAWQ也支持分区表.这里所说的分区表是指HAWQ的内部分区表,外部分区表在后面"外部数据"篇讨论.在数据仓库应用中,事实表通常有非常多的记录,分区可以将这样的大表在逻辑上分为小的.更易管理的数据片段.HAWQ的优化器支持分区消除以提高查询性能.只要查询条件中可以使用分区键作为过滤条件,那么HAWQ只需要扫描满足查询条件的分区,而不必进行全表扫描.        分区并不改变表数据在segment间的物理分布.表的分布是物理

用HAWQ轻松取代传统数据仓库(十七) —— 最佳实践

一.HAWQ参数配置最佳实践 (原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/bestpractices/config_hawq_bestpractices.html)        在$GPHOME/etc/hawq-site.xml文件中维护HAWQ的配置参数.该文件存在于所有HAWQ实例上,并可以通过Ambari或使用HAWQ命令行接口进行修改.使用一致的策略(Ambari或命令行接口)维护h

用HAWQ轻松取代传统数据仓库(七) —— 存储分布

在HAWQ中创建一个表时,应该预先对数据如何分布.表的存储选项.数据导入导出方式和其它HAWQ特性做出选择,这些都将对数据库性能有极大影响.理解有效选项 的含义以及如何在数据库中使用它们,将有助于做出正确的选择. 一.数据存储模型        create table的with子句用于设置表的存储选项.例如: db1=# create table t1 (a int) with db1-# (appendonly=true, db1(# blocksize=8192, db1(# orient

用HAWQ轻松取代传统数据仓库(十三) —— 资源管理

一.HAWQ如何管理资源 HAWQ使用多种机制管理CPU.内存.I/O.文件句柄等系统资源,包括全局资源管理.资源队列.强制资源使用限额等. 1. 全局资源管理 Hadoop通常使用YARN全局管理资源.YARN是一个通用的资源管理框架,为MapReduce作业或其它配置了YARN的应用提供资源.在YARN环境中,资源分配的单位被称为容器(container),YARN还能强制限制每个集群节点上的可用资源.图1展示了Hadoop YARN环境下的HAWQ集群布局. 图1 可以将HAWQ配置为一个

用HAWQ轻松取代传统数据仓库(十八) —— 问题排查

(原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/troubleshooting/Troubleshooting.html)        本章描述如何解决HAWQ系统中常见的错误和问题. 一.查询性能问题 问题:查询慢.        原因:一个查询执行缓慢可能有多个原因.例如,数据分布的位置,虚拟段的数量,查询使用的主机数量等都可能影响查询性能.以下过程描述如何排查查询性能问题. 一个查询不像预期