資料倉儲是一個面向主題的、整合的、隨時間變化,但資訊本身相對穩定的資料集合,相比於傳統型資料庫,它主要用於支援企業或組織的決策分析處理。主要有以下3個特點:
資料倉儲是面向主題的:
資料倉儲中的資料是按照一定的主題域進行組織,大概意思就是說存的資料是一類資料
資料倉儲是隨時間變化的:
其中存的資料是有時序的,會儲存很長一段時間的資料
資料倉儲相對穩定:
資料倉儲主要是用來進行資料的查詢,很少進行修改和刪除
資料倉儲的結構
Hive最初是Facebook開發的一款用來SQL分析的應用,它是建立在Hadoop檔案系統上的資料倉儲,能夠對儲存在HDFS中的資料進行資料提取、轉換和載入(ETL),這是一種可以儲存、查詢、分析儲存在Hadoop中的大規模資料的機制。Hive定義了簡單的類SQL查詢語言,簡稱HQL。但Hive並不是一個資料庫,它只是提供了和資料庫相類似的查詢語言。其實他是用來執行簡化MapReduce操作的,可以解決很多MapReduce解決起來比較麻煩的事。Hive把使用者的HiveQL語句解釋轉換為MapReduce作業提交到Hadoop叢集上,Hadoop監控作業執行過程,然後返回作業執行結果給使用者。
由於Hive依賴於Hadoop,所以要提前安裝Hadoop,參見手把手教你安裝Hadoop叢集
下載並解壓
之前的Hadoop是分散式安裝在3臺機器上的,但Hive只需要安裝在一臺機子即可,我這裡選擇的是hadoop02
下載地址:https://hive.apache.org/downloads.html,(在國內映象網站上也是可以下載的)注意與Hadoop的版本對應,之前安裝的Hadoop是2.x版本,這裡下載安裝Hive 2.3.9。 具體版本對應關係可在下載頁面檢視。
tar zxvf apache-hive-2.3.9-bin.tar.gz
設定環境變數
如何設定Linux環境變數
# ---------Hive----------
export HIVE_HOME=/home/apache-hive-2.3.9-bin
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
修改組態檔
這一步不是必須的,也就是不修改組態檔也是可以啟動的。
Hive預設的設定是使得Derby資料庫進行儲存的,是單使用者的模式,也就是意味著同一時間只能有一個使用者使用Hive。這裡修改的設定主要是使用MySQL來儲存後設資料。在Hive設定中原本有hive-default.xml.template,對這個檔案進行復制修改
cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
修改如下內容,可根據name屬性進行搜尋,可能並不連續
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.83.1:3307/hive?createDatabaseIfNotExist=true</value>
<description>
Mysql連線地址
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>mysql密碼</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>JDBC驅動</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>mysql使用者名稱</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive/querylog</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/data/hive/scratchdir</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/data/hive/resourcesdir</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/data/hive/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
將Mysql的JDBC連線連線驅動放進hive的lib目錄下,注意下載與Mysql對應的版本
在Mysql中建立hive資料庫,並在hive的bin下執行如下命令,初始化Mysql中後設資料的儲存schema
./schematool -initSchema -dbType mysql
啟動Hive
由於已經設定了環境變數,所以直接執行hive即可啟動