PXF使用Greenplum数据库最终用户访问Hadoop服务。默认情况下,PXF尝试使用经过GPDB身份验证的用户身份并且通过PXF连接器配置去访问数据源服务(HDFS, Hive, HBase)。注意,PXF在访问Hadoop服务时仅使用用户的登录身份。例如,如果用户以jane身份登录Greenplum数据库,然后执行SET ROLE或SET SESSION AUTHORIZATION来假定其他用户身份,则所有PXF请求仍将使用jane身份来访问Hadoop服务。

使用默认的PXF配置,您必须显式配置每个Hadoop数据源(HDFS,Hive,HBase)来允许PXF进程所有者(通常为gpadmin)充当模拟用户或组的代理。详情参阅Configuring Hadoop Proxying, Hive User Impersonation, and HBase User Impersonation

或者,您可以禁用PXF用户模拟功能。禁用用户模拟后,PXF将使用PXF进程的所有者(通常为gpadmin)来执行所有Hadoop服务请求。此行为与PXF的早期版本相匹配,但是它没有提供任何方法来控制Hadoop中不同于Greenplum数据库用户对Hadoop服务的访问。它要求gpadmin用户有权访问HDFS中的所有文件和目录,以及在PXF外部表定义中引用的Hive和HBase中的所有表的权限。参照Configuring PXF User Impersonation for information about disabling user impersonation。

配置PXF用户模拟

执行以下流程在你的GPDB集群上打开或者关闭用户模拟功能。如果你第一次配置PXF,默认用户模拟是打开的。你不需要执行这个过程。

  1. 以管理员用户身份登录GPDB master节点

    1. $ ssh gpadmin@<gpmaster>
  2. 重新进入PXF用户配置目录$PGF_CONF。用文本编辑器打开配置文件$PXF_CONF/conf/pxf-env.sh。例如:

    1. gpadmin@gpmaster$ vi $PXF_CONF/conf/pxf-env.sh
  3. pxf-env.sh文件中找到PXF_USER_IMPERSONATION设置。 将该值设置为true可打开PXF用户模拟,或将其设置为false可将其关闭。 例如:

    1. PXF_USER_IMPERSONATION="true"
  4. 使用pxf cluster sync命令拷贝更新的文件pxf-env.sh文件到Greenplum数据库集群。例如

    1. gpadmin@gpmaster$ $GPHOME/pxf/bin/pxf cluster sync
  5. 如果先前已启动PXF,请按照Restarting PXF中的说明在每个Greenplum数据库segment主机上重新启动它来使新设置生效。

配置Hadoop代理

启用PXF用户角色(默认设置)后,您必须配置Hadoopcore-site.xml配置文件以打开用户模拟PXF。 步骤如下:

  1. 在你的Hadoop集群中,使用文本编辑器打开core-site.xml配置文件,或者使用Ambari添加或编辑此过程中描述的Hadoop属性值。

  2. 设置属性值hadoop.proxyuser.<name>.hosts指定允许代理请求的PXF主机名列表。将PXF代理用户(通常为gpadmin)替换为,并在用逗号分隔的列表中提供多个PXF主机名。 例如:

    1. <property>
    2. <name>hadoop.proxyuser.gpadmin.hosts</name>
    3. <value>pxfhost1,pxfhost2,pxfhost3</value>
    4. </property>
  3. 设置属性值hadoop.proxyuser.<name>.groups指定能被PXF模拟的HDFS组列表。您应该将此列表限制为仅需要从PXF访问HDFS数据的那些组。 例如:

    1. <property>
    2. <name>hadoop.proxyuser.gpadmin.groups</name>
    3. <value>group1,group2</value>
    4. </property>
  4. 在修改过core-site.xml配置文件之后,你必须重启Hadoop使你的配置生效。

  5. 将更新后的core-site.xml文件复制到master服务器上的PXF Hadoop服务器配置目录$PXF_CONF/servers/default中,并将配置同步到standby服务器和每个Greenplum数据库segment主机。

Hive用户模拟

PXF Hive连接器使用Hive MetaStore确定Hive表的HDFS位置,然后直接访问基础HDFS文件。Hive不需要特定的模拟配置,因为core-site.xml中的Hadoop代理配置也适用于以这种方式访问的Hive表。

Hbase用户模拟

为了使用户模拟功能能够与HBase一起使用,必须在HBase配置中启用AccessController并重新启动群集。有关hbase-site.xml配置设置,请参阅《Apache HBase参考指南》中的61.3 Server-side Configuration for Simple User Access Operation以进行简单的用户访问操作。