当我们运行 Hive 查询时,我试图了解各种 ID 之间的关系。 我正在考虑以下场景,建议用于真实集群。
ClientMachine
---connects/ssh--> GatewayNode
(比如 user1, serverA) ---> HiveServer2( ServerB
-- -> Driver
--> Remote MetaData Service (serverC)
--> MySql (serverD)
实际数据存储在 HDFS
中,它可以有自己的一组用户。
现在,我的疑问是,我们每一层都有不同的用户,例如 MySQL DB、HDFS、HiveServer2 等;因此,如果我以 user1 身份登录到 GatewayNode,并且该用户 ID 不在 HDFS 或 MySql 中,这种情况如何工作?
任何人都可以帮助理解这一点吗?
最佳答案
HDFS/Hive 应配置为共享用户帐户。理想情况下,不要与后端数据库具有相同的用户/密码信息。例如。您使用 Metastore 用户和密码配置配置单元站点,但这不是 Hive 用户的 Hadoop 用户。
这可以由外部系统通过可插入身份验证模块 (PAM) 或 KERBEROS(例如 Active Directory)或 LDAP 启用。推荐后两者。
默认情况下,Hive 和 Hadoop 没有身份验证,用户名按字面意思作为字符串。
有关详细信息,请参阅 Hive wiki on Authentication
如果您想要一个安全的 Hadoop 集群,您需要设置一个基于 Kerberos 的环境,在每个 JVM 环境上设置 Java keystore ,最好使用 Apache Ranger 或 Sentry 等工具来锁定访问和审计您的集群
关于hadoop - beeline 执行命令的用户 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49834127/