Hive 系列(二)—— Linux 環境下 Hive 的安裝部署

1、安裝Hive

1.1 下載並解壓

下載所需版本的 Hive,這裏我下載版本爲 cdh5.15.2。下載地址:http://archive.cloudera.com/cdh5/cdh/5/html

# 下載後進行解壓
 tar -zxvf hive-1.1.0-cdh5.15.2.tar.gz

1.2 配置環境變量

# vim /etc/profile

添加環境變量:java

export HIVE_HOME=/usr/app/hive-1.1.0-cdh5.15.2
export PATH=$HIVE_HOME/bin:$PATH

使得配置的環境變量當即生效:mysql

# source /etc/profile

1.3 修改配置

1. hive-env.shgit

進入安裝目錄下的 conf/ 目錄,拷貝 Hive 的環境配置模板 flume-env.sh.templategithub

cp hive-env.sh.template hive-env.sh

修改 hive-env.sh,指定 Hadoop 的安裝路徑:sql

HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2

2. hive-site.xmlshell

新建 hive-site.xml 文件,內容以下,主要是配置存放元數據的 MySQL 的地址、驅動、用戶名和密碼等信息:數據庫

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop001:3306/hadoop_hive?createDatabaseIfNotExist=true</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>

</configuration>

1.4 拷貝數據庫驅動

將 MySQL 驅動包拷貝到 Hive 安裝目錄的 lib 目錄下, MySQL 驅動的下載地址爲:https://dev.mysql.com/downloads/connector/j/ , 在本倉庫的resources 目錄下我也上傳了一份,有須要的能夠自行下載。apache

1.5 初始化元數據庫

  • 當使用的 hive 是 1.x 版本時,能夠不進行初始化操做,Hive 會在第一次啓動的時候會自動進行初始化,但不會生成全部的元數據信息表,只會初始化必要的一部分,在以後的使用中用到其他表時會自動建立;編程

  • 當使用的 hive 是 2.x 版本時,必須手動初始化元數據庫。初始化命令:

    # schematool 命令在安裝目錄的 bin 目錄下,因爲上面已經配置過環境變量,在任意位置執行便可
    schematool -dbType mysql -initSchema

這裏我使用的是 CDH 的 hive-1.1.0-cdh5.15.2.tar.gz,對應 Hive 1.1.0 版本,能夠跳過這一步。

1.6 啓動

因爲已經將 Hive 的 bin 目錄配置到環境變量,直接使用如下命令啓動,成功進入交互式命令行後執行 show databases 命令,無異常則表明搭建成功。

# hive

在 Mysql 中也能看到 Hive 建立的庫和存放元數據信息的表

2、HiveServer2/beeline

Hive 內置了 HiveServer 和 HiveServer2 服務,二者都容許客戶端使用多種編程語言進行鏈接,可是 HiveServer 不能處理多個客戶端的併發請求,所以產生了 HiveServer2。HiveServer2(HS2)容許遠程客戶端可使用各類編程語言向 Hive 提交請求並檢索結果,支持多客戶端併發訪問和身份驗證。HS2 是由多個服務組成的單個進程,其包括基於 Thrift 的 Hive 服務(TCP 或 HTTP)和用於 Web UI 的 Jetty Web 服務。

HiveServer2 擁有本身的 CLI 工具——Beeline。Beeline 是一個基於 SQLLine 的 JDBC 客戶端。因爲目前 HiveServer2 是 Hive 開發維護的重點,因此官方更加推薦使用 Beeline 而不是 Hive CLI。如下主要講解 Beeline 的配置方式。

2.1 修改Hadoop配置

修改 hadoop 集羣的 core-site.xml 配置文件,增長以下配置,指定 hadoop 的 root 用戶能夠代理本機上全部的用戶。

<property>
 <name>hadoop.proxyuser.root.hosts</name>
 <value>*</value>
</property>
<property>
 <name>hadoop.proxyuser.root.groups</name>
 <value>*</value>
</property>

之因此要配置這一步,是由於 hadoop 2.0 之後引入了安全假裝機制,使得 hadoop 不容許上層系統(如 hive)直接將實際用戶傳遞到 hadoop 層,而應該將實際用戶傳遞給一個超級代理,由該代理在 hadoop 上執行操做,以免任意客戶端隨意操做 hadoop。若是不配置這一步,在以後的鏈接中可能會拋出 AuthorizationException 異常。

關於 Hadoop 的用戶代理機制,能夠參考:hadoop 的用戶代理機制Superusers Acting On Behalf Of Other Users

2.2 啓動hiveserver2

因爲上面已經配置過環境變量,這裏直接啓動便可:

# nohup hiveserver2 &

2.3 使用beeline

可使用如下命令進入 beeline 交互式命令行,出現 Connected 則表明鏈接成功。

# beeline -u jdbc:hive2://hadoop001:10000 -n root

更多大數據系列文章能夠參見 GitHub 開源項目大數據入門指南

相關文章
相關標籤/搜索