Table Distribution and Storage
HAWQ存储除了系统表以外的所有的表数据在HDFS。一个用户创建一个表时,元数据存储在master的本地文件系统,表内容存储在HDFS。
为了简化表数据的管理,所有的关联数据存放在一个HDFS目录。
对于所有HAWQ表存储格式、AO (append only)和Parquet,数据文件都是可分割的,这样HAWQ就可以分配多个虚拟段并行的使用一个数据文件。这增加了查询并行度。
Table Distribution Policy
HAWQ中的默认表分发策略是随机的。
随机分布的表比散列分布的表有一些优点。例如,在集群扩展之后,HAWQ可以自动使用更多的资源,而无需重新分配数据。对于大型表,重新分配非常昂贵,并且在底层HDFS数据再平衡或DataNode故障期间重新分配数据之后,随机分布表的数据更好。当集群很大时很常见的。
另一方面,对于某些查询,散列分布的表要比随机分布的表快。例如,散列分布式表对于某些TPC-H查询具有一些性能优势。您应该选择最适合应用程序场景的分发策略。
Data Locality
数据分布在HDFS数据节点上。由于远程读取涉及到网络I/O,一种数据局部性算法提高了本地读取率。HAWQ在将数据块分配到虚拟段时考虑了三个方面:
- 本地读比例
- 连续性的文件读
- 虚拟段之间的数据平衡
External Data Access
HAWQ可以使用HAWQ扩展框架(PXF)访问外部文件中的数据。PXF是一个可扩展的框架,允许HAWQ以可读写的HAWQ表的形式访问外部数据源中的数据。PXF有用于访问HDFS文件、Hive表和HBase表中的数据的内置连接器。PXF还与HCatalog集成,直接查询Hive表。有关详细信息,请参阅使用PXF和非托管数据。
用户可以创建定制的PXF连接器来访问其他并行数据存储或处理引擎。连接器是使用PXF API的Java插件。有关更多信息,请参阅PXF External Tables and API.