Hadoop生態系統—數據倉庫Hive的安裝

一、數據倉庫數據倉庫是一個面向主題的、集成的、隨時間變化 , 但信息本身相對穩定的數據集合,相比于傳統型數據庫,它主要用于支持企業或組織的決策分析處理 。主要有以下3個特點:

  • 數據倉庫是面向主題的:
    數據倉庫中的數據是按照一定的主題域進行組織,大概意思就是說存的數據是一類數據
  • 數據倉庫是隨時間變化的:
    其中存的數據是有時序的,會保存很長一段時間的數據
  • 數據倉庫相對穩定:
    數據倉庫主要是用來進行數據的查詢,很少進行修改和刪除
數據倉庫的結構二、Hive簡介
2.1 Hive簡介Hive最初是Facebook開發的一款用來SQL分析的應用,它是建立在Hadoop文件系統上的數據倉庫,能夠對存儲在HDFS中的數據進行數據提取、轉換和加載(ETL),這是一種可以存儲、查詢、分析存儲在Hadoop中的大規模數據的機制 。Hive定義了簡單的類SQL查詢語言,簡稱HQL 。但Hive并不是一個數據庫,它只是提供了和數據庫相類似的查詢語言 。其實他是用來執行簡化MapReduce操作的,可以解決很多MapReduce解決起來比較麻煩的事 。Hive把用戶的HiveQL語句解釋轉換為MapReduce作業提交到Hadoop集群上 , Hadoop監控作業執行過程,然后返回作業執行結果給用戶 。
2.2 Hive系統架構用戶接口:主要分為3個,分別是CLI(命令行)、JDBC/ODBC(由Java實現的用來連接數據庫)、和WebUI(瀏覽器) 。
  • 跨語言服務(Thrift Server):Thrift是Facebook開發的一個軟件框架,用來進行可擴展且跨語言的服務,Hive集成該服務 , 可以讓不同的編程語言調用Hive的接口
  • 底層的驅動引擎:主要包含編譯器(Compile)/優化器(Optimizer)/執行器(Executor)
  • 元數據存儲系統(Metastore):Hive的元數據包括表名、列、分區及其相關屬性 , 表數據所在目錄的位置信息,Metastore默認存在自帶的Derby數據庫中(這是一個嵌入式數據庫,更多有關嵌入式數據庫資料查看這里在Spring中使用嵌入式數據庫-H2) 。
三、Hive實踐3.1 Hive安裝
由于Hive依賴于Hadoop,所以要提前安裝Hadoop,參見手把手教你安裝Hadoop集群
  • 下載并解壓
    之前的Hadoop是分布式安裝在3臺機器上的 , 但Hive只需要安裝在一臺機子即可,我這里選擇的是hadoop02
    下載地址:https://hive.apache.org/downloads.html,(在國內鏡像網站上也是可以下載的)注意與Hadoop的版本對應,之前安裝的Hadoop是2.x版本 , 這里下載安裝Hive 2.3.9 。具體版本對應關系可在下載頁面查看 。
【Hadoop生態系統—數據倉庫Hive的安裝】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/confcp 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>

推薦閱讀