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,默认用户模拟是打开的。你不需要执行这个过程。
以管理员用户身份登录GPDB master节点
$ ssh gpadmin@<gpmaster>
重新进入PXF用户配置目录
$PGF_CONF
。用文本编辑器打开配置文件$PXF_CONF/conf/pxf-env.sh
。例如:gpadmin@gpmaster$ vi $PXF_CONF/conf/pxf-env.sh
在
pxf-env.sh
文件中找到PXF_USER_IMPERSONATION
设置。 将该值设置为true可打开PXF用户模拟,或将其设置为false可将其关闭。 例如:PXF_USER_IMPERSONATION="true"
使用
pxf cluster sync
命令拷贝更新的文件pxf-env.sh
文件到Greenplum数据库集群。例如gpadmin@gpmaster$ $GPHOME/pxf/bin/pxf cluster sync
如果先前已启动PXF,请按照Restarting PXF中的说明在每个Greenplum数据库segment主机上重新启动它来使新设置生效。
配置Hadoop代理
启用PXF用户角色(默认设置)后,您必须配置Hadoopcore-site.xml
配置文件以打开用户模拟PXF。 步骤如下:
在你的Hadoop集群中,使用文本编辑器打开
core-site.xml
配置文件,或者使用Ambari添加或编辑此过程中描述的Hadoop属性值。设置属性值
hadoop.proxyuser.<name>.hosts
指定允许代理请求的PXF主机名列表。将PXF代理用户(通常为gpadmin
)替换为,并在用逗号分隔的列表中提供多个PXF主机名。 例如:<property>
<name>hadoop.proxyuser.gpadmin.hosts</name>
<value>pxfhost1,pxfhost2,pxfhost3</value>
</property>
设置属性值
hadoop.proxyuser.<name>.groups
指定能被PXF模拟的HDFS组列表。您应该将此列表限制为仅需要从PXF访问HDFS数据的那些组。 例如:<property>
<name>hadoop.proxyuser.gpadmin.groups</name>
<value>group1,group2</value>
</property>
在修改过
core-site.xml
配置文件之后,你必须重启Hadoop使你的配置生效。将更新后的
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以进行简单的用户访问操作。