《Hadoop实战手册》一1.10 在Greenplum外部表中使用HDFS

本节书摘来异步社区《Hadoop实战手册》一书中的第1章,第1.10节,作者: 【美】Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 , 赵磊 , 卢学裕 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.10 在Greenplum外部表中使用HDFS

Greenplum是一个并行数据库,数据的存储与查询基于一个或多个PostgreSQL实例。它补充了Hadoop,提供对大数据的实时或准实时访问,它还支持使用HDFS文件作为外部表。外部表是一个处理Greenplum集群之外数据很好的解决方案。由于外部表访问首先要消耗网络带宽,所以与Greenplum集群内的数据相比,它应该存储那些访问相对不频繁的数据。本节将介绍如何创建只读的外部表和可读写的外部表。

准备工作
在本节假定你使用的Hadoop版本为CDH3。

运行一个Greenplum实例,确认它能够访问Hadoop集群。相关信息可以查看http://www.greenplum.com/products/greenplum-database

按照下面的方式配置Greenplum。

  • gp_hadoop_target_version设置为cdh3u2。
  • gp_hadoop_home设置为$HADOOP_HOME的完整路径。

在Greenplum集群的每个节点上都需要安装1.6以上(包含1.6)版本的Java。

操作步骤
创建HDFS上weblogs文件的一个外部表:

CREATE EXTERNAL TABLE weblogs( 
    md5          text, 
    url          text, 
    request_date date, 
    request_time time, 
    ip           inet 
)
LOCATION ('gphdfs://<NAMENODE_HOST>:<NAMENODE_PORT>/data/weblogs/
weblog_ entries.txt') 
FORMAT 'TEXT' (DELIMITER '\t');

工作原理
Greenplum本地支持并行地将HDFS上的数据加载到数据库中。当一个查询需要访问表weblog_entries.txt时,该文件会被加载为Greenplum的一个临时表,然后执行对该临时表的查询。等到查询结束以后再将该表丢弃。

更多参考
Greenplum也支持对外部表的写操作。这需要在创建表的时候指定写关键字:

CREATE WRITABLE EXTERNAL TABLE weblogs( 
    md5          text, 
    url          text, 
    request_date date, 
    request_time time, 
    ip           inet 
)
LOCATION ('gphdfs://<NAMENODE_HOST>:<NAMENODE_PORT>/data/weblogs/
weblog_ entries.txt') 
FORMAT 'TEXT' (DELIMITER '\t');

更多的信息可以查看Greenplum管理员手册,见http://media.gpadmin.me/wp-content/uploads/2011/05/GP-4100-AdminGuide.pdf

上一篇:大数据在媒体行业的应用——《企业大数据实践路线》之二


下一篇:《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一第一部分 批 处 理 层