在hadoop集羣上的集成Hive

本文章的各項配置均參考cloudera官網,如有版本變化,導致配置無效,出錯,請參考cloudera官網文檔。

cloudera官網:https://www.cloudera.com
輸入網址加載成功,導航條拉到最底部。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
查看日誌文件的命令,防止配置時出錯,有些同學連錯誤都找不到,卻講文檔有錯,好傷心!
//查看日誌目錄
ls /etc/log
cat 相應的日誌內容
//第一步,配置Metastore數據庫
爲hive配置各種數據庫的官方文檔
https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cdh_ig_hive_metastore_configure.html
建議在Metastore所在主機和Hive Server1或者Hive Server2進程分開的主機上
的一個或多個遠程服務器上爲Metastore配置數據庫。
1.爲Hive Metastore配置遠程Mysql數據庫,
1.1如果尚未安裝mysql。可以使用yum方式安裝
如果您尚未安裝並啓動MySQL,請安裝並啓動它
要在RHEL系統上安裝MySQL:
$ sudo yum install mysql-server
要在SLES系統上安裝MySQL:
$ sudo zypper安裝mysql
$ sudo zypper install libmysqlclient_r17
要在Debian / Ubuntu系統上安裝MySQL:
$ sudo apt-get install mysql-server
使用該命令安裝MySQL後,您可能需要響應提示以確認您確實要完成安裝。安裝完成後,啓動MySQL的 守護進程。
在RHEL系統上
$ sudo service mysqld start
在SLES和Debian / Ubuntu系統上
$ sudo服務mysql啓動
配置MySQL服務和連接器
在使用遠程MySQL數據庫運行Hive Metastore之前,必須配置遠程MySQL數據庫的連接器,設置初始數據庫模式,併爲Hive用戶配置MySQL用戶帳戶。
要在RHEL 6系統上安裝MySQL連接器:
在Hive Metastore服務器主機上,安裝 MySQL的連接器的Java 並象徵性地將文件鏈接到 / usr / lib中/蜂巢/ LIB / 目錄。
$ sudo yum install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
要在RHEL 5系統上安裝MySQL連接器:
從http://www.mysql.com/downloads/connector/j/5.1.html下載MySQL JDBC驅動程序。如果您還沒有帳戶,則需要註冊帳戶並登錄,然後才能下載。然後將其複製到/ usr / lib / hive / lib /目錄。例如:
$ sudo cp mysql-connector-java- version / mysql-connector-java- version -bin.jar / usr / lib / hive / lib /
注意:在發佈時,版本是5.1.31,但是當你讀到這個版本時,版本可能已經改變了。如果您使用的是MySQL 5.6版,則必須使用版本5.1.26或更高版本的驅動程序。
要在SLES系統上安裝MySQL連接器:
在Hive Metastore服務器主機上,安裝 MySQL的連接器的Java 並象徵性地將文件鏈接到 / usr / lib中/蜂巢/ LIB / 目錄。
$ sudo zypper install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
要在Debian / Ubuntu系統上安裝MySQL連接器:
在Hive Metastore服務器主機上,安裝 MySQL的連接器的Java 並象徵性地將文件鏈接到 / usr / lib中/蜂巢/ LIB / 目錄。
$ sudo apt-get install libmysql-java
$ ln -s /usr/share/java/libmysql-java.jar /usr/lib/hive/lib/libmysql-java.jar
配置MySQL以使用強密碼並在啓動時啓動。請注意,在以下過程中,您當前根密碼爲空。當系統提示您輸入root密碼時,請按Enter鍵。
設置MySQL root密碼:
$ sudo / usr / bin / mysql_secure_installation
[…]
輸入root的當前密碼(輸入none):
好的,成功使用密碼,繼續…
[…]
設置root密碼?[是/否] y
新密碼:
重新輸入新的密碼:
刪除匿名用戶?[是/否] Y.
[…]
禁止遠程登錄?[是/否] N.
[…]
刪除測試數據庫並訪問它[Y / n] Y.
[…]
現在重新加載權限表?[是/否] Y.
全部完成!
要確保MySQL服務器在啓動時啓動:

在RHEL系統上:
$ sudo / sbin / chkconfig mysqld on
$ sudo / sbin / chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
在SLES系統上:
$ sudo chkconfig --add mysql
在Debian / Ubuntu系統上:
$ sudo chkconfig mysql on
創建數據庫和用戶
本節中的說明假定您使用的是遠程模式,並且MySQL數據庫安裝在與Metastore服務不同的主機上,該服務在名爲的主機上運行metastorehost 在示例中。
注意:如果Metastore服務將在安裝了數據庫的主機上運行,​​請替換’metastorehost’ 在裏面 CREATE USER 用例子 ‘localhost’ 的。同樣,值javax.jdo.option.ConnectionURL 在 /etc/hive/conf/hive-site.xml (必須在下一步討論) JDBC:MySQL的://localhost/metastore。有關添加MySQL用戶的更多信息,
請參閱http://dev.mysql.com/doc/refman/5.5/en/adding-users.html。
創建初始數據庫模式。Cloudera建議使用Hive架構工具 來執行此操作。
如果由於某種原因您決定不使用架構工具,則可以使用 hive-schema- nnn mysql.sql而是文件; 該文件位於/ usr / lib目錄/蜂房/腳本/ metastore /升級/ MySQL的/目錄。(nnn是當前的Hive版本,例如1.1.0。)如果您決定使用,請按以下步驟操作hive-schema- nnn mysql.sql。
使用hive-schema- nnn mysql.sql的示例
注意:僅當您未使用Hive架構工具時才執行此操作。
$ mysql -u root -p
輸入密碼:
mysql> CREATE DATABASE metastore;
mysql>使用Metastore;
//n.n.n代表Sql腳本文件的版本號
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-n.n.n.mysql.sql;
您還需要一個用於Hive的MySQL用戶帳戶來訪問Metastore。防止此用戶帳戶在Metastore數據庫模式中創建或更改表非常重要。
重要說明:爲防止用戶在使用較低或較高版本的Hive時無意中破壞Metastore架構,請設置 hive.metastore.schema.verification 財產到真實 /usr/lib/hive/conf/hive-site.xml 在Metastore主機上。

metastorehost:本機ip或者hadoop1
mypassword:密碼
mysql> CREATE USER’hive’@‘metastorehost’ENFENTIFIED BY’mypassword’;

mysql> REVOKE ALL PRIVILEGES,來自’hive’@‘alkororehost’的授權選項;
mysql>在Metastore上授予所有特權。*’‘hive’@‘metastorehost’;
mysql> FLUSH PRIVILEGES;
mysql> quit;
配置Metastore服務以與MySQL數據庫通信
此步驟顯示您需要設置的配置屬性 蜂房的site.xml(/usr/lib/hive/conf/hive-site.xml)配置Metastore服務與MySQL數據庫通信,
並提供樣本設置。雖然你可以使用相同的蜂房的site.xml 在所有主機(客戶端,Metastore,HiveServer)上,
hive.metastore.uris是唯一必須在所有這些上配置的屬性; 其他只用於Metastore主機。

給定運行的MySQL數據庫 爲myhost 和用戶帳戶 蜂巢 用密碼 我的密碼,按如下方式設置配置(覆蓋任何現有值)。

注:該hive.metastore.local不再支持該屬性(從Hive 0.10開始); 設置hive.metastore.uris 足以表明您正在使用遠程Metastore。
<屬性>

javax.jdo.option.ConnectionURL
jdbc:mysql://myhost/metastore
the URL of the MySQL database

javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword mypassword datanucleus.autoCreateSchema false datanucleus.fixedDatastore true datanucleus.autoStartMechanism SchemaTable hive.metastore.uris thrift:// hive.metastore.schema.verification true

在使用HiveServer2之前,必須進行以下配置更改。如果不這樣做可能會導致不可預測的行爲
您必須正確配置和啓用Hive的Table Lock Manager。這需要安裝ZooKeeper並設置ZooKeeper集合; 請參閱ZooKeeper安裝。
重要說明:如果不這樣做,將阻止HiveServer2處理併發查詢請求,並可能導致數據損壞。
通過設置屬性啓用鎖管理器 /etc/hive/conf/hive-site.xml 如下所示(用實際的ZooKeeper節點名替換示例中的那些):

hive.support.concurrency
Enable Hive’s Table Lock Manager Service
true

hive.zookeeper.quorum Zookeeper quorum used by Hive's Table Lock Manager 第一個主機的IP地址,第二個主機的IP地址,第三個主機的IP地址

//主機的IP地址項,如果有配置映射,也可以用映射主機名來找到。
在未指定有效Zookeeper仲裁節點列表的情況下啓用表鎖定管理器將導致不可預測的行爲。確保正確配置了這兩個屬性。
hive.zookeeper.client.port
如果ZooKeeper沒有使用默認值 CLIENTPORT,你需要設置 hive.zookeeper.client.port 在 /etc/hive/conf/hive-site.xml與ZooKeeper使用的值相同。校驗/etc/zookeeper/conf/zoo.cfg 找到的價值 CLIENTPORT。如果CLIENTPORT 設置爲2181(默認值)以外的任何值hive.zookeeper.client.port達到相同的價值。例如,如果CLIENTPORT 設置爲2222,設置 hive.zookeeper.client.port 到2222也是:

hive.zookeeper.client.port
2222

The port at which the clients will connect.


Cloudera建議您以“遠程模式”部署Hive Metastore,它將Hive表和分區的元數據存儲起來。在此模式下,Metastore服務在其自己的JVM進程中運行,其他服務(如HiveServer2,HCatalog和Apache Impala)使用Thrift網絡API與Metastore進行通信。
重要:
如果在遠程模式下運行Metastore ,則必須在啓動HiveServer2之前啓動Metastore。
安裝和配置Hive Metastore後,您可以啓動該服務。
要將Metastore作爲守護程序運行,命令爲:
$ sudo您的Hive數據存儲在HDFS中,通常位於 /用戶/蜂巢/倉庫。該/用戶/蜂巢 和 /用戶/蜂巢/倉庫如果目錄尚不存在,則需要創建目錄。確保此位置(或您指定的任何路徑爲hive.metastore.warehouse.dir 在你的 蜂房的site.xml)存在並且可由您希望創建表的用戶寫入。
重要:
Cloudera建議將Hive倉庫目錄的權限設置爲 1777,設置粘滯位,使所有用戶都可以訪問它。這允許用戶創建和訪問他們的表,但是阻止他們刪除他們不擁有的表。
此外,每個提交查詢的用戶都必須擁有HDFS主目錄。 / tmp目錄 (在本地文件系統上)必須是世界可寫的,因爲Hive廣泛使用它。
HiveServer2 Impersonation允許用戶以連接用戶身份執行查詢和訪問HDFS文件。
如果您未啓用模擬,HiveServer2默認執行所有Hive任務作爲啓動Hive服務器的用戶ID; 對於使用Kerberos身份驗證的羣集,這是映射到HiveServer2使用的Kerberos主體的ID 。設置權限1777,如上所述,允許此用戶訪問Hive倉庫目錄。
您可以通過設置更改此默認行爲 hive.metastore.execute.setugi 至 真正 在服務器和客戶端上。此設置使Metastore服務器使用客戶端的用戶和組權限。 service hive-metastore start

在CDH中啓動,停止和使用HiveServer2
HiveServer2是HiveServer的改進版本,支持Kerberos身份驗證和多客戶端併發。您可以使用Beeline客戶端訪問HiveServer2。
警告:
如果在遠程模式下運行Metastore ,則必須在啓動HiveServer2之前啓動Hive Metastore。HiveServer2嘗試與Metastore進行通信,作爲其初始化引導程序的一部分。如果無法執行此操作,則會失敗並顯示錯誤。
要啓動HiveServer2:
$ sudo service hive-server2 start
要停止HiveServer2:
$ sudo service hive-server2 stop
要確認HiveServer2是否正常工作,請啓動 beeline CLI並使用它來執行show tables;
查詢HiveServer2進程:
/usr/lib/hive/bin/beeline
! connectjdbc:hive2://localhost:10000 hive root org.apache.hive.jdbc.HiveDriver
查詢該連接有權限查詢的數據庫和數據表
show databases;
show tables;
注:beeline內默認有權限控制,該套流程所建立的連接中無法做表的load操作
例如:聲明數據庫表
create table movie
(movie_id int,movie_name string,movie_leixing string)
row format delimited fields terminated by ‘^’
stored as textfile
//從本地填充數據進入內部表,這一步在hive 客戶端中不會出錯,在beeline連接中會出錯。
load data local inpath ‘/home/cloudera/Desktop/movie.dat’ into table movie

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章