Hive初學習:瞭解及配置

背景:

在使用mapreduce時,表現出了以下兩點不便性:
  • MapReduce is hard to program
          【八股文】格式編程,三大部分
  • No Schema, lack of query lanaguages, eg. SQL
數據分析,針對DBA、SQL語句,如何對數據分析
MapReduce編程成本高
FaceBook 實現並開源Hive

從而產生了Hive

什麼是Hive?:

  • 由Facebook開源用於解決海量結構化日誌的數據統計;
  • Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射 成一張表,並提供類SQL查詢功能;
  • 構建在Hadoop之上的數據倉庫; 
    1. 使用HQL作爲查詢接口; 
    2. 使用HDFS存儲; 
    3. 使用MapReduce計算;
  • 本質是:將HQL轉化成MapReduce程序
  • 靈活性和擴展性比較好:支持UDF,自定義存儲格式等;
  • 適合離線數據處理

Hive在Hadoop生態系統中的位置:


Hive架構:



  • 用戶接口: Client CLI(hive shell)、JDBC/ODBC(java訪問hive),WEBUI(瀏覽器訪問hive)
  • 元數據: Metastore 元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/ 分區字段、表的類型(是否是外部表)、表的數據所在目錄等;默認存儲在自帶的derby數據庫中,推薦使用採用MySQL存儲Metastore;
  • Hadoop 使用HDFS進行存儲,使用MapReduce進行計算;
  • 驅動器: Driver 包含:解析器、編譯器、優化器、執行器;
    1. 解析器:將SQL字符串轉換成抽象語法樹AST,這一步一般都用第三方工 具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否 存在、SQL語義是否有誤(比如select中被判定爲聚合的字段在group by中是 否有出現);
    2. 編譯器:將AST編譯生成邏輯執行計劃;
    3. 優化器:對邏輯執行計劃進行優化;
    4. 執行器:把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就 是MR/TEZ/Spark;

Hive的優點與使用場景:

  • 操作接口採用類SQL語法,提供快速開發的能力(簡單、容易上手);
  • 避免了去寫MapReduce,減少開發人員的學習成本;
  • 統一的元數據管理,可與impala/spark等共享元數據;
  • 易擴展(HDFS+MapReduce:可以擴展集羣規模;支持自定義函數);
  • 數據的離線處理;比如:日誌分析,海量結構化數據離線分析…
  • Hive的執行延遲比較高,因此hive常用於數據分析的,對實時性要求 不高的場合;
  • Hive優勢在於處理大數據,對於處理小數據沒有優勢,因爲Hive的執 行延遲比較高

相關配置:

2、解壓 tar -zxvf hive-x.y.z.tar.gz
3、將相關目錄配置到環境變量中可以方便輸入命令,這裏我們在hive目錄中運行,就不添加配置了。
4、在hive目錄下的conf中找到hive-env.sh.template文件,將其改名爲hive-env.sh並打開編輯,找到並添加如下配置
hadoop路徑以及hive的conf路徑
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/hadoop-2.6.1

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/hive-1.2.2/conf

5、然後在hdfs文件系統中創建如下文件夾

  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

6、在Hive目錄內輸入以下命令啓動Hive(交互式命令行)

bin/hive





發佈了65 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章