1. 程式人生 > >Apache Hive在CentOS6上的安裝與配置

Apache Hive在CentOS6上的安裝與配置

最近在上Hadoop相關的課程,有一個實驗要用到Hive這一元件,然而參考網路上的各種安裝配置教程卻老是出現問題,經過在網上找各種解決方案,終於配置成功能運行了,於是寫下這篇文章記錄一下,防止以後再踩坑。

首先介紹一下Hive:hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。

我的各軟體版本:

CentOS 6.10
Hadoop 2.6.1
Hive 2.3.3
MySQL 5.1.73

Hive安裝配置當中最重要的是配置Metastore的位置,Metastore是Hive元資料的集中存放地,預設是存放在derby中的,derby是Apache下的一個開源關係型資料庫,這裡我沒有用derby,替換成了MySQL。

首先從官方網站下載Hive的壓縮包,解壓之後配置環境:

vim ~/.bashrc

新增:

export HIVE_HOME=你的hive安裝位置
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=你的hadoop安裝位置

然後安裝mysql,並建立資料庫hive和一個角色hive,密碼hive,把資料庫hive的所有許可權授權給hive。

將 $HIVE_HOME/conf 資料夾中的hive-default.xml.template改名為hive-default.xml

在  $HIVE_HOME/conf 資料夾中新建檔案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>
<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
   <description>
   Enforce metastore schema version consistency.
   True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures proper metastore schema migration. (Default)
   False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
   </description>
</property>
</configuration>

執行 $HIVE_HOME/bin/schematool -dbType mysql -initSchema來完成metastore的初始化。

再執行$HIVE_HOME/bin/hive 就能成功執行hive了!