1. 程式人生 > >大資料篇:Hive的安裝詳解

大資料篇:Hive的安裝詳解

hive是什麼?

  1. 由facebook開源,用於解決海量結構化日誌的資料統計;
  2. 基於hadoop的一個數據倉庫工具,使用HDFS進行儲存並將結構化資料檔案對映成一張表,並提供類sql查詢的功能,其底層採用MR進行計算;
  3. 本質是將HQL轉化成MR程式。

準備工作

  • Java 1.5以上(我的為jdk1.8)
  • Hadoop 2.0以上(我的為2.8.4)

安裝流程

# 1. 下載解壓安裝包
cd /usr/local
wget http://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
tar -zxvf apache-hive-0.13.1-bin.tar.gz

 

2.配置環境變數

vi /etc/profile
#新增內容:
#Hive
export HIVE_HOME=/usr/local/hive-1.2.1
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

 

# 3.配置檔案
# conf/hive-env.sh

cd conf
cp hive-env.sh.template  hive-env.sh  

vi hive-env.sh
#新增內容:
#Hadoop&&Hive
    HADOOP_HOME=/usr/local/hadoop-2.8.4
    export HIVE_CONF_DIR=/usr/local/hive-1.2.1/conf

 

#4.配置hive-site.xml

[[email protected] conf]# cp hive-default.xml.template hive-default.xml
[[email protected] conf]# vi 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

這裡我們採用MySQL資料庫儲存Hive的元資料,而不是採用Hive自帶的derby來儲存元資料。

1.centos7下mysql的安裝請參考centos7安裝MySQL

##安裝Mysql
cd /usr/local
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-5.5.48-1.linux2.6.x86_64.rpm-bundle.tar
tar -zxvf MySQL-5.5.48-1.linux2.6.x86_64.rpm-bundle.tar
yum install perl
rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
rpm -e [原有資料庫] --nodeps
service mysql start
/usr/bin/mysql-secure-installation

Mysql安裝不成功,我這裡暫時是用MariaDB替代的,目前啟動Hive是沒有問題的,不知道會不會在其他方面遇到問題。

##安裝mariaDB
##centos7內建的MySQL映象已經放棄Oracle公司的MySQL,改用MySQL的分支mariaDB,安裝mariadb:
yum install mariadb

##然後使用命令systemctl start mariadb,提示如下:
Failed to start mariadb.service: Unit mariadb.service failed to load: No such file or directory

##則是找不到mariadb這個服務。之所以找不到,是因為mariadb的安裝本身就沒有完成,執行以下命令,檢視mariadb的依賴情況:
$ sudo yum search mariadb

執行以下,安裝缺少的依賴包:
$ yum install mariadb-embedded mariadb-libs mariadb-bench mariadb mariadb-sever

##然後再啟動mariadb,正常,如果要設定開機自啟動mariadb,使用以下命令:
$ systemctl enable mariadb

##一定要記得,使用yum install命令安裝mysql時,需要多加一個萬用字元"*",使用如下命令:
yum install mariadb*

關於mysql與mariaDB的關係,這還是一個挺有故事的情節:CentOS 7為什麼放棄了MySQL,而改使用MariaDB?

2.下載mysql jdbc 包,下載mysql-connector-java-5.1.46.tar.gz

cd /usr/local
tar -zxvf mysql-connector-java-5.1.46.tar.gz
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar  /usr/local/hive-1.2.1/lib

3. 啟動並登陸mysql shell

mysql -uroot -p
create database hive;
grant all on *.* to [email protected] identified by 'hive';

4. 新建hive資料庫:

mysql -uroot -p
create database hive;

 

5. 配置mysql允許hive接入:

grant all on *.* to [email protected] identified by 'hive';
flush privileges;

 

6. 啟動hive

start-dfs.sh 
start-yarn.sh
hive   

啟動hive之前,請先啟動hadoop叢集。

Hive起來如圖:

參考:

https://www.zhihu.com/question/41832866

https://blog.csdn.net/eclothy/article/details/52733891

https://blog.csdn.net/liyifan687/article/details/80103285