翻譯: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hiveserver2_configure.html
版本: 5.14.2
在使用HiveServer2之前,您必須進行以下配置更改。不這樣做可能會導致不可預知的行為。
警告: HiveServer1在CDH 5.3起不推薦使用,并且將在未來的CDH版本中刪除。HiveServer1的用戶應該盡快升級到HiveServer2。
HiveServer2內存和硬件要求
重要提示:這些數字只是一般性指導,可能會受到諸如列數,分區,復雜聯接和客戶端活動等因素的影響。根據您的預期部署,通過測試進行優化以達到您的環境的最佳值。
有關為HiveServer2配置堆以及Hive Metastore和Hive客戶端的信息,請參閱Hive組件的堆大小和垃圾收集以及以下視頻:
解決HiveServer2服務崩潰問題
當您啟動視頻,請點擊YouTube上在播放器窗口的右下角看它在YouTube上,你可以調整它的大小更清晰的觀看。 (!--)
表鎖管理器(必需)
您必須正確配置并啟用Hive的表鎖管理器。這需要安裝ZooKeeper并設置一個ZooKeeper集合; 請參閱ZooKeeper安裝。
重要提示:如果不這樣做將會阻止HiveServer2處理并發查詢請求,并可能導致數據損壞。
通過設置屬性啟用鎖管理器 /etc/hive/conf/hive-site.xml 如下所示(用實例中的實際ZooKeeper節點名替換):
<property>
<name>hive.support.concurrency</name>
<description>Enable Hive's Table Lock Manager Service</description>
<value>true</value>
</property>
<property>
<name>hive.zookeeper.quorum</name>
<description>Zookeeper quorum used by Hive's Table Lock Manager</description>
<value>zk1.myco.com,zk2.myco.com,zk3.myco.com</value>
</property>
重要提示:啟用表鎖管理器而不指定有效的Zookeeper法定節點列表將導致不可預知的行為。確保兩個屬性都已正確配置。
(如果您仍在使用HiveServer1,還需要上述設置。不推薦使用HiveServer1;盡快遷移到HiveServer2。)
hive.zookeeper.client.port
如果ZooKeeper沒有使用ClientPort默認值,你需要設置 hive.zookeeper.client.port 與ZooKeeper使用的值相同。檢查/etc/zookeeper/conf/zoo.cfg 以找到ClientPort值。如果ClientPort 設置為除2181(默認值)以外的任何值,設置hive.zookeeper.client.port 。例如,如果ClientPort 設置為2222,設置 hive.zookeeper.client.port 也是2222:
<property>
<name>hive.zookeeper.client.port</name>
<value>2222</value>
<description>
The port at which the clients will connect.
</description>
</property>
JDBC驅動程序
HiveServer2和HiveServer1的連接URL格式和驅動程序類別不同:
HiveServer版本 | 連接網址 | 驅動程序類 |
---|---|---|
HiveServer2 | jdbc:hive2://<host>:<port> | org.apache.hive.jdbc.HiveDriver |
HiveServer1 | jdbc:hive://<host>:<port> | org.apache.hadoop.hive.jdbc.HiveDriver |
認證 Authentication
HiveServer2可以配置為驗證所有連接; 默認情況下,它允許任何客戶端連接。HiveServer2支持Kerberos或LDAP 身份驗證; 配置屬性為hive.server2.authentication 。您還可以配置可插入身份驗證,它允許您為HiveServer2使用自定義身份驗證提供程序; 和HiveServer2 Impersonation,它允許用戶以連接用戶的身份執行查詢和訪問HDFS文件,而不是啟動HiveServer2守護進程的超級用戶。有關更多信息,請參閱Hive安全配置。
同時運行HiveServer2和HiveServer
警告:由于并發和安全問題,HiveServer1和Hive CLI在CDH 5中不推薦使用,并且將在未來版本中刪除。Cloudera建議您盡快遷移到Beeline和HiveServer2。如果您使用HiveServer2的Beeline,則不需要Hive CLI。
HiveServer2和HiveServer1可以在同一個系統上并發運行,共享相同的數據集。這允許您運行HiveServer1以支持使用本機HiveServer1 Thrift綁定的Perl或Python腳本。
默認情況下,HiveServer2和HiveServer1都綁定到端口10000,所以至少其中一個必須配置為使用不同的端口。您可以通過hive -site.xml中的hive.server2.thrift.port 設置HiveServer2的端口屬性。例如:
<property>
<name>hive.server2.thrift.port</name>
<value>10001</value>
<description>TCP port number to listen on, default 10000</description>
</property>
您也可以通過設置這些環境變量來指定端口(以及HiveServer2的主機IP地址):
HiveServer版本 | Port | 主機地址 |
---|---|---|
HiveServer2 | HIVE_SERVER2_THRIFT_PORT | HIVE_SERVER2_THRIFT_BIND_HOST |
HiveServer1 | HIVE_PORT | < 主機綁定不能被指定 > |
總結:
- 使用 HiveServer2 和 Beeline , 不推薦使用 HiveServer1 和 Hive CLI 。
- 為了支持并發, 需要使用zk 。
- HiveServer2的連接url和driver class 與1不同。