HAWQ使企业能够获益于经过锤炼的基于MPP的分析功能及其查询性能,同时利用Hadoop堆栈。HAWQ可与其它传统的SQL on Hadoop引擎(如图1所示)共存于一个分析堆栈。...HAWQ 1.0 Alpha(2012):多个国外大型客户试用,当时客户性能测试是Hive的数百倍。促进了HAWQ 1.0作为正式产品发布。 3....三、HAWQ基本介绍 HAWQ是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用。和其他关系型数据库类似,接受SQL,返回结果集。...这些性能改进主要归功于Dynamic pipelining和HAWQ内基于成本的查询优化器的强大功能。这使HAWQ能够帮助企业以显著降低的成本摆脱企业数据仓库工作负载。 5....HAWQ的容错性、可靠性和高可用性三个特点能容忍磁盘级与节点级故障。这些能力可确保业务的连续性,并且实现了将更多关键业务分析迁移到到HAWQ上运行。 8.
二、HAWQ的可行性 刚才介绍了几种SQL-on-Hadoop产品的主要问题,那么重点来了,HAWQ是否有能力取而代之呢?下面从功能与性能两方面,简单分析一下使用HAWQ的主要特点。...除了用于访问HDFS文件的PXF协议,HAWQ还提供了gpfdist文件服务器,它利用HAWQ系统并行读写本地文件系统中的文件。 2....对于习惯了编写存储过程的DBA来说,这无疑大大提高了HAWQ的易用性。HAWQ的UDF提供以下特性: 给HAWQ内部函数起别名。 返回结果集的表函数。 参数个数可变的函数。...HAWQ过程化编程实例参见用HAWQ轻松取代传统数据仓库(十) —— 过程语言。 四、HAWQ系统架构 图4是给出了一个典型的HAWQ集群的主要组件。图5是HAWQ内部架构图。...关于HAWQ的系统架构说明,参见解密Apache HAWQ ——功能强大的SQL-on-Hadoop引擎。 ? 图4 ? 图5
处理渐变维(SCD) 上一篇已经提到,HAWQ只有INSERT,没有UPDATE、DELETE操作,因此所有维度属性都使用SDC2记录全部历史变化。...使用HAWQ的DISTINCT ON语法去重。DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。...将文件修改为可执行模式: chmod 755 ~/regular_extract.sh 六、建立定期装载HAWQ函数 create or replace function fn_regular_load...下面的HAWQ函数按照转储最老分区数据、删除最老分区数据、建立新分区的步骤动态滚动分区。
一、用sqoop用户建立初始抽取脚本 本示例要用Sqoop将MySQL的数据抽取到HDFS上的指定目录,然后利用HAWQ外部表功能将HDFS数据文件装载到内部表中。...但HAWQ没有提供UPDATE、DELETE等DML操作,因此对于所有属性的变化均增加一条记录,即所有维度属性都按SCD2方式处理。 3....HAWQ中的bigserial数据类型与MySQL的auto_increment类似,长用于定义自增列。...但它的实现方法却与Oracle的sequence类似,当创建bigserial字段的表时,HAWQ会自动创建一个自增的sequence对象,bigserial字段自动引用sequence实现自增。...依据HAWQ的建议,装载数据后,执行查询前,先分析表以提高查询性能。
172.16.1.126 HAWQ Primary Master、HAWQ Segment hdp4 172.16.1.127 HAWQ Segment、MySQL 表1 四、HAWQ相关配置 1...hawq config -c max_prepared_transactions -v 200 -- 重启HAWQ hawq restart cluster -- 查看配置 hawq config...在该模式下,HAWQ使用集群节点资源时,不考虑其它共存的应用,HAWQ假设它能使用所有segment的资源。对于专用HAWQ集群,独立模式是可选的方案。...hawq config -s hawq_rm_memory_limit_perseg hawq config -s hawq_rm_nvcore_limit_perseg ?...关于HAWQ表数据的存储与分布,参见“用HAWQ轻松取代传统数据仓库(七) —— 存储分布”。
HAWQ支持用户自定义函数(user-defined functions,UDF),还支持给HAWQ内部的函数起别名。...其中除SQL和C是HAWQ的内建语言,其它语言通常被称为过程语言(PLs),支持过程语言编程是对HAWQ核心的功能性扩展。...对于习惯了编写存储过程的DBA来说,这无疑大大提高了HAWQ的易用性,冲这点也得给HAWQ点个赞。这里主要研究HAWQ内建的SQL语言函数和PL/pgSQL函数编程。...PL/pgSQL自动在所有HAWQ数据库中安装。 PL/pgSQL函数参数接收任何HAWQ服务器所支持的标量数据类型或数组类型,也可以返回这些数据类型。...三、给HAWQ内部函数起别名 许多HAWQ的内部函数是用C语言编写的。这些函数是在HAWQ集群初始化时声明的,并静态连接到HAWQ服务器。
一、HAWQ的查询处理流程 理解HAWQ的查询处理过程有助于写出更加优化的查询。...HAWQ基本的查询处理流程如图1所示。 ? 图1 1. 查询计划 一个查询计划是HAWQ为了产生查询结果而要执行的一系列操作。...[gpadmin@hdp3 ~]$ hawq config -c optimizer -v on 重载HAWQ配置。...GPORCA的限制 启用GPORCA时,HAWQ中有一些限制。也正是因为GPORCA并不支持所有的HAWQ特性,GPORCA与老优化器才会在HAWQ中并存。...[gpadmin@hdp3 ~]$ hawq config -s hawq_re_memory_overcommit_max GUC : hawq_re_memory_overcommit_max Value
一、创建和管理数据库 HAWQ中数据库的概念与MySQL类似,一个HAWQ实例中通常会建立多个数据库,这和Oracle中数据库的概念不同。...尽管可以在一个HAWQ系统中创建很多数据库,但是客户端程序在某一时刻只能连接到一个数据库,这也决定了HAWQ不能执行跨库的查询。 1....例如,运行下面的命令将连接HAWQ主机并创建名为db3的数据库,主机名和端口号必须与HAWQ的master节点相匹配。...创建文件空间 文件空间是一个符号存储标识符,映射为一组HAWQ主机文件系统的位置,指示HAWQ系统的存储空间。...row) 可以看到,HAWQ在HDFS上的根目录/hawq_data。
) 本章描述如何解决HAWQ系统中常见的错误和问题。...二、拒绝查询资源请求 问题:HAWQ资源管理器拒绝了查询的资源分配请求。 原因:出现以下情况时,HAWQ资源管理器拒绝查询的资源分配请求: 太多物理段不可用。...如果资源管理器确定未注册的或不可用的HAWQ物理段数量大于hawq_rm_rejectrequest_nseg_limit,那么资源管理器直接拒绝查询的资源请求。...当偏差大于hawq_rm_nvseg_variance_amon_seg_limit设置的值,HAWQ拒绝查询的资源分配请求。例如,一个查询引起2个物理段分派9个虚拟段。...这可能引起HAWQ的段获得相同的IP地址。资源管理器的容错服务组件只能识别具有相同IP地址的段中的一个。 解决方案:启动HAWQ集群前,修改网络配置,禁止IP地址相同。
HAWQ系统部署 从前面的安装过程中看到,一个典型的HAWQ部署包括一个HDFS NameNode、一个HAWQ master、一个HAWQ standby,以及多个HAWQ segment...二、HAWQ操作环境 在操作HAWQ集群前,必须设置HAWQ所需的环境。 1....这些环境变量中最重要的是$GPHOME,它指定了HAWQ安装的根目录。如果安装的是Pivotal提供的HAWQ安装版本,典型的HAWQ根目录是/usr/local/hawq。...启动和停止HAWQ的命令分别是hawq start和hawq stop,hawq init命令也会启动系统。hawq命令行工具是一个python脚本,位于$GPHOME/bin目录下。...启动/停止HAWQ集群最佳实践 为了更好地使用hawq start和hawq stop管理系统,HAWQ推荐使用下面的最佳实践。
(1)选择作为HAWQ segment的主机。记住有以下限制: 每台主机都必须满足安装相应版本HAWQ的系统要求。...在本实验环境中,CDH集群中的全部四台主机均作为HAWQ segment,172.16.1.124部署为HAWQ master。...创建HAWQ的本地数据目录 mkdir -p /opt/gpadmin/hawq-data-directory/masterdd mkdir -p /opt/gpadmin/hawq-data-directory...解压并安装 tar -zxvf apache-hawq-rpm-2.4.0.0.tar.gz cd hawq_rpm_packages/ rpm -ivh apache-hawq-2.4.0.0-el7...创建HAWQ的HDFS数据目录 su - hdfs hdfs dfs -mkdir /hawq_default hdfs dfs -chown gpadmin:gpadmin /hawq_default
行列转置是ETL或报表系统中的常见需求,HAWQ提供的内建函数和过程语言编程功能,使行列转置操作的实现变得更为简单。 一、行转列 1....这种方法利用了HAWQ内建的聚合函数,实现简洁。 2....----+----+----+---- 1 | 我 | 是 | 谁 2 | 不 | 知 | 3 | 道 | | 因为结果集列数不固定,必须使用动态SQL实现(HAWQ...- Java | aa | 1 Java | bb | 2 Java | cc | 3 C++ | dd | 1 C++ | ee | 2 HAWQ
/config_hawq_bestpractices.html) 在$GPHOME/etc/hawq-site.xml文件中维护HAWQ的配置参数。...该文件存在于所有HAWQ实例上,并可以通过Ambari或使用HAWQ命令行接口进行修改。使用一致的策略(Ambari或命令行接口)维护hawq-site.xml文件的内容。 ...只使用hawq-site.xml配置你的HAWQ集群。hawq-site.xml中定义的任何参数将覆盖postgresql.conf里的参数。...使用命令行启动/停止HAWQ集群成员最佳实践 以下最佳实践是使用hawq start和hawq stop管理你的HAWQ集群时所推荐的。...始终使用HAWQ管理命令启动和停止HAWQ,而不用等价的Postgres。
数据类型映射 为了在HAWQ中表示Hive数据,需要将使用Hive私有数据类型的数据值映射为等价的HAWQ类型值。表5是对Hive私有数据类型的映射规则汇总。...由于HAWQ原生不支持这些类型,PXF将它们统一映射为text类型。可以创建HAWQ函数或使用应用程序抽取复杂数据类型子元素的数据。 下面是一些HAWQ访问Hive表的例子。 4....图2所示HAWQ如何使用HCatalog查询Hive表。 ? 图2 HAWQ使用PXF从HCatalog查询表的元数据。 HAWQ用查询到的元数据创建一个内存目录表。...当所有Sacramento分区的数据传到HAWQ后,在HAWQ端执行item_name的过滤。 执行一个过滤下推的查询。...的数据类型映射 为了在HAWQ中表示JSON数据,需要将使用私有数据类型的JSON值映射为等价的HAWQ数据类型值。
1. hawq_toolkit模式 hawq_toolkit是HAWQ的一个管理模式,使用与下面类似的命令在模式的查询路径中增加hawq_toolkit模式: db1=# set role...2.1.1的hawq_toolkit中没有找到) HAWQ的hawq_toolkit管理模式包含有关HAWQ工作文件信息的视图。...三、HAWQ日志文件管理 日志文件中包含HAWQ数据库和应用程序部署的相关信息。HAWQ的管理性日志文件保存在预定义或配置的HAWQ节点的本地文件系统上。...(5)配置HAWQ日志 可以使用HAWQ服务器日志参数配置HAWQ服务器对日志的操作。...例如,hawq restart调用hawq stop和hawq start。此时日志被写入到调用的两个应用的日志文件中。
网上也有一些详细的资料可供参考,如“Apache HAWQ集群的安装部署”和“HAWQ手动安装”。我推荐的方式是使用HDB介质,主要原因是过程相对简单,安装成功率高。 2....五、安装HAWQ 1. 选择HAWQ主机 在安装HAWQ之前,使用下面的步骤选择和准备所需主机。 (1)选择作为HAWQ segment的主机。...记住有以下限制: 每台主机都必须满足安装相应版本HAWQ的系统要求。 每个HAWQ segment所在主机必须和其上运行的HDFS DataNode协同工作。...(20)验证HAWQ安装。 ...用gpadmin用户登录HAWQ master所在主机,执行下面的命令: # 设置HAWQ环境变量 source /usr/local/hawq/greenplum_path.sh psql -d postgres
一、为什么还需要备份 HAWQ作为一个数据库管理系统,备份与恢复是其必备功能之一。HAWQ的用户数据存储在HDFS上,系统表存储在master节点主机本地。...而配置了HDFS NameNode HA与HAWQ master HA后,NameNode和master的单点故障问题也得到了解决。似乎HAWQ没有提供额外备份功能的必要。 ...HAWQ支持这些应用的主要目的是用于从PostgreSQL向HAWQ迁移数据。下面是一些pg_dump用法的简单示例。 ...三、备份与恢复示例 1. gpfdist示例 gpfdist是HAWQ的并行文件分发程序。hawq load应用程序操作gpfdist可读外部表,将外部表文件并行分发给HAWQ处理。...PXF示例 HAWQ Extension Framework (PXF)是一个允许HAWQ查询外部系统数据的扩展框架。
在HAWQ中创建一个表时,应该预先对数据如何分布、表的存储选项、数据导入导出方式和其它HAWQ特性做出选择,这些都将对数据库性能有极大影响。...再者,行典型的HAWQ系统中的表都很大,如果为每行赋予一个32位的计数器,不但占用空间,而且可能给HAWQ系统的目录表造成问题。最后,每行节省4字节存储空间也能带来一定的查询性能提升。 8....数据分布策略概述 所有的HAWQ表(除gpfdist外部表)都是分布存储在HDFS上的。HAWQ支持两种数据分布策略,随机与哈希。...在HAWQ的TPCH测试中,哈希分布表在很多查询上具有更好的性能。图1是HAWQ提供的一个数据分布性能对比图,其中CO表示列存储格式,AO表示行存储格式。 ?...除hawq_rm_nvseg_perquery_limit参数外,hawq_rm_nvseg_perquery_perseg_limit也控制执行一个查询使用的虚拟段数量。
使用hawq load装载数据 HAWQ的hawq load应用程序使用可读外部表和HAWQ并行文件系统(gpfdist或gpfdists)装载数据。...(1)确认建立了运行hawq load的环境。 它需要依赖某些HAWQ安装中的文件,如gpfdist和Python,还需要通过网络访问所有HAWQ segment主机。...使用COPY装载、卸载数据 COPY是HAWQ的SQL命令,它在标准输入和HAWQ表之间互拷数据。...hawq register的使用场景好像很有限,因为它只能注册HAWQ或Hive已经生成的Parquet表文件。...下面的例子使用hawq config命令行应用将统计目标从25改为50。 以HAWQ管理员(缺省为gpadmin)登录HAWQ的master主机并设置环境。
图1展示了Hadoop YARN环境下的HAWQ集群布局。 ? 图1 可以将HAWQ配置为一个在YARN中注册的应用,执行查询时,HAWQ的资源管理器与YARN通信以获取所需的资源。...在该模式下,HAWQ使用集群节点资源时,不考虑其它共存的应用,HAWQ假设它能使用所有segment的资源。对于专用HAWQ集群,独立模式是可选的方案。当前HAWQ支持YARN作为外部全局资源管理器。...如果使用YARN模式,需要在YARN中为HAWQ配置资源队列,还要在HAWQ进行与YARN相关的配置。HAWQ自动注册为YARN应用,使用YARN中配置的资源队列。 在HAWQ中,创建资源队列。...根据需要调整HAWQ的资源使用:为HAWQ修改相应的YARN资源队列配额(刷新YARN资源队列不需要重启HAWQ);通过修改HAWQ资源队列进行资源消耗的细粒度控制;其它配置,如设置每个HAWQ segment...hawq_rm_yarn_queue_name YARN中HAWQ使用的资源队列名称。 hawq_rm_yarn_app_name YARN中HAWQ使用的应用名称。 表2 4.
领取专属 10元无门槛券
手把手带您无忧上云