Hive安裝配置要點
阿新 • • 發佈:2017-07-30
操作 ont tex val 自動創建 官網 後來 sql value 官網下載安裝包;
在Profile下面定義HIVE_HOME以及HADOOP_HOME,然後在PATH下面添加HOME/bin目錄,用於在命令行直接敲beeline,hive即可執行命令;
需要在hadoop中創建:
/user/hive/warehouse
/tmp
(記得當前目錄以及子目錄要賦權限777,否則會爆異常,見下面的異常)
Hive有兩種客戶端,一種是HiveCLI已經被拋棄,現在Hive主推Beeline客戶端,在啟動的時候需要指定用戶:
beeline -u jdbc:hive2://localhost:10000
HiveServer2的啟動方式是
bin/hiveserver2
hive日誌存放在/tmp/username/ hive.log
show tables:展示所有的表;
describe tablename:展示指定表的列信息;
hive服務監聽端口:10000
hive網頁的端口:10002
Error executing SQL query "select "DB_ID" from "DBS"".(啟動hiveserver2的時候)
這是因為需要將hive下面的conf裏面的hive-default-site.xml.template變為hive-site.xml
datanucleus.schema.autoCreateAll節點值設為true,自動創建必要的schema
hive.metastore.schema.verification節點設置為false,不驗證schema的完備
java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D(啟動hiveserver2的時候)
system:java.io.tmpdir單獨定義一個properyt名字就叫system:java.io.tmpdir,然後賦值value即可
User: hadoop is not allowed to impersonate anonymous(啟動beeline客戶端的時候)
需要配置hadoop裏面的core-site.xml文件添加如下節點:
<property>
<name>hadoop.proxyuser.hadoop.hosts </name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
粗體替換為執行bin/hiveserver2的用戶即可。這是因為Hadoop的安全機制,讓所有的應用通過指定的代理用戶來和Hadoop交互,而不是外部應用的實際用戶,避免外部應用對於hadoop的高權限訪問(難道是避免外部應用模擬管理員對其進行操作);後來我看了了一下core-default.xml,裏面並沒有hadoop.proxyuser.*的節點,這說明默認情況下是沒有指定代理用戶,這就導致任何外部應用都無法訪問hadoop,只有在外部的core-site.xml中進行手工指定才可以。
org.apache.hadoop.security.AccessControlException Permission denied: user=anonymous, access=WRITE, inode="/user/hive/warehouse":hadoop:supergroup:drwxrwxr-x(在beeline中執行語句的時候)
需要在:
hadoop fs -chmod -R +777 /tmp
hadoop fs -chmod -R +777 /user
java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D (state=,code=0),在執行show tables語句的時候;
需要在hive-site.xml添加如下節點
<property>
<name>system:user.name</name>
<value>hadoop</value>
</property>
Hive安裝配置要點