下載所需版本的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
程序員
cp hive-env.sh.template hive-env.sh
修改hive-env.sh
,指定Hadoop的安裝路徑:github
HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2
2. hive-site.xmlsql
新建hive-site.xml 文件,內容以下,主要是配置存放元數據的MySQL的地址、驅動、用戶名和密碼等信息:shell
<?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目錄下我也上傳了一份,有須要的能夠自行下載。數據庫
當使用的 hive 是1.x版本時,能夠不進行初始化操做,Hive會在第一次啓動的時候會自動進行初始化,但不會生成全部的元數據信息表,只會初始化必要的一部分,在以後的使用中用到其他表時會自動建立;apache
當使用的 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 開源項目: 程序員大數據入門指南