下載所需版本的 Hive,這裏我下載版本爲 cdh5.15.2
。下載地址:http://archive.cloudera.com/cdh5/cdh/5/html
# 下載後進行解壓 tar -zxvf hive-1.1.0-cdh5.15.2.tar.gz
# 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. hive-env.shgit
進入安裝目錄下的 conf/
目錄,拷貝 Hive 的環境配置模板 flume-env.sh.template
github
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>
將 MySQL 驅動包拷貝到 Hive 安裝目錄的 lib
目錄下, MySQL 驅動的下載地址爲:https://dev.mysql.com/downloads/connector/j/ , 在本倉庫的resources 目錄下我也上傳了一份,有須要的能夠自行下載。apache
當使用的 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
版本,能夠跳過這一步。
因爲已經將 Hive 的 bin 目錄配置到環境變量,直接使用如下命令啓動,成功進入交互式命令行後執行 show databases
命令,無異常則表明搭建成功。
# hive
在 Mysql 中也能看到 Hive 建立的庫和存放元數據信息的表
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 的配置方式。
修改 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
因爲上面已經配置過環境變量,這裏直接啓動便可:
# nohup hiveserver2 &
可使用如下命令進入 beeline 交互式命令行,出現 Connected
則表明鏈接成功。
# beeline -u jdbc:hive2://hadoop001:10000 -n root
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南