hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,可以將sql語句轉換爲MapReduce任務進行運行。 其優點是可以通過類SQL語句快速實現簡單的MapReduce統計。
安裝hive
1. 下載並解壓hive源程序
Hive下載地址
$ sudo tar -zxvf ~/Downloads/apache-hive-1.2.2-bin.tar.gz -C /usr/local # 解壓到/usr/local中
$ cd /usr/local/
$ sudo mv apache-hive-1.2.1-bin hive # 將文件夾名改爲hive
$ sudo chown -R hadoop:hadoop hive # 修改文件權限
2. 配置環境變量
把hive命令加入到環境變量中:vim ~/.bashrc
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
使配置生效:source ~/.bashrc
3. 修改/usr/local/hive/conf下的hive-site.xml
$ cd /usr/local/hive/conf
$ mv hive-default.xml.template hive-default.xml
$ vim hive-site.xml
hive-site.xml配置:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
</configuration>
安裝並配置mysql
Hive使用mysql作爲底層的數據庫。默認已經爲Ubuntu系統安裝好了Mysql。
1.安裝mysql-connetctor以連接hive。下載地址中找到previous GA versions中的tar包,下載mysql-connector-java-5.1.47.tar。
tar -zxvf mysql-connector-java-5.1.40.tar.gz #解壓cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib #將mysql-connector-java-5.1.40-bin.jar拷貝到/usr/local/hive/lib目錄下
2.啓動並登陸mysql shell
$ service mysql start #啓動mysql服務 mysql -u root -p #登陸shell界面
3. 新建hive數據庫。
mysql> create database hive; #這個hive數據庫與hive-site.xml中localhost:3306/hive的hive對應,用來保存hive元數據
4. 配置mysql允許hive接入:
mysql> grant all on *.* to hive@localhost identified by 'hive'; #將所有數據庫的所有表的所有權限賦給hive用戶,後面的hive是配置hive-site.xml中配置的連接密碼mysql> flush privileges; #刷新mysql系統權限關係表
啓動hive
啓動hive之前,請先啓動hadoop集羣。
$ start-all.sh #啓動hadoop
$ hive #啓動hive