我是新來的配置單元,並嘗試以相對安全的方式爲測試環境設置它。我想使用遠程元數據,因此MR作業可以訪問數據庫。我似乎有事情幾乎工作,但與一個證書的用戶嘗試創建一個數據庫,我得到:使用Kerberos的Hive Remote Metastore
hive> show databases;
OK
default
hive> create database testdb;
FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteException User: hdfs/[email protected] is not allowed to impersonate [email protected])
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
我可以運行「顯示數據庫」 OK。我有一個「hive --service metastore」作爲hdfs以hdfs/[email protected]作爲主體運行。我在同一個盒子上運行配置爲「myuserid」的配置單元。我不知道它是否有關係,但如果我嘗試從另一個系統運行配置單元,我會得到一個GSS啓動錯誤,除非我爲配置單元使用相同的主體(hdfs/[email protected]) .metastore.kerberos.principal。這是預期的嗎?
當我嘗試使用Google搜索時,發現類似的問題,但他們關於不能模擬的消息只顯示單個部件用戶名,對我來說顯示的是領域。我試着玩auth_to_local屬性,但沒有幫助。 Map Reduce和HDFS操作正常。
在覈心的site.xml我:
<property>
<name>hadoop.proxyuser.hdfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hdfs.groups</name>
<value>*</value>
</property>
在蜂房的site.xml我:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore</value>
<description>the URL of the MySQL database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoopserver.sub.dom.com:9083</value>
</property>
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.sasl.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.kerberos.keytab.file</name>
<value>/etc/hadoop/hdfs.keytab</value>
</property>
<property>
<name>hive.metastore.kerberos.principal</name>
<value>hdfs/[email protected]</value>
</property>
<property>
<name>hive.metastore.execute.setugi</name>
<value>true</value>
</property>
任何想法?
這並沒有真正回答這個問題。如果您有不同的問題,可以通過單擊[提問](http://stackoverflow.com/questions/ask)來提問。您還可以[添加賞金](http://stackoverflow.com/help/privileges/set-bounties)在您擁有足夠的[聲譽](http://stackoverflow.com/help/)時吸引更多人關注此問題什麼聲譽)。 – Nalaka526