Hive-簡介入門

Hive簡介

Hive最初是Facebook為了滿足對海量社交網絡數據的管理和機器學習的需求而產生和發展的。互聯網現在進入了大數據時代,大數據是現在互聯網的趨勢,而hadoop就是大數據時代里的核心技術,但是hadoop的mapreduce操作專業性太強,所以facebook在這些基礎上開發了hive框架,畢竟世界上會sql的人比會java的人多的多,hive可以說是學習hadoop相關技術的一個突破口。那么,hive是什么呢?

一、概述

Hive是建立在 Hadoop 上的數據倉庫基礎構架。

它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。

Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。可以將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。

簡單的說:hive是基于hadoop的數據倉庫。那么為什么說hive是基于Hadoop的呢?

之所以說hive是構建在Hadoop之上的數據倉庫,簡單的說是因為:

  1. 數據存儲在hdfs上
  2. 數據計算用mapreduce

二、Hive常見的應用場景

1、日志分析:大部分互聯網公司使用hive進行日志分析,包括百度、淘寶等。

  • 統計網站一個時間段內的pv、uv
  • 多維度數據分析

2、海量結構化數據離線分析

三、Hive的特點(優缺點)

1、hive的優點

1)、簡單容易上手:提供了類SQL查詢語言HQL

2)、可擴展:為超大數據集設計了計算/擴展能力(MR作為計算引擎,HDFS作為存儲系統)

一般情況下不需要重啟服務Hive可以自由的擴展集群的規模。

3)、提供統一的元數據管理

4)、延展性:Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數

5)、容錯:良好的容錯性,節點出現問題SQL仍可完成執行

2、hive的缺點(局限性)

1)、hive的HQL表達能力有限

  • 迭代式算法無法表達,比如pagerank
  • 數據挖掘方面,比如kmeans

2)、hive的效率比較低

  • hive自動生成的mapreduce作業,通常情況下不夠智能化
  • hive調優比較困難,粒度較粗
  • hive可控性差

四、Hive和數據庫的異同

由于Hive采用了SQL的查詢語言HQL,因此很容易將Hive理解為數據庫。其實從結構上來看,Hive和數據庫除了擁有類似的查詢語言,再無類似之處。數據庫可以用在Online的應用中,但是Hive是為數據倉庫而設計的,清楚這一點,有助于從應用角度理解Hive的特性。

Hive和數據庫的比較如下表:

img

MapReduce 開發人員可以把自己寫的 Mapper 和 Reducer 作為插件支持 Hive 做更復雜的數據分析。 它與關系型數據庫的 SQL 略有不同,但支持了絕大多數的語句(如 DDL、DML)以及常見的聚合函數、連接查詢、條件查詢等操作。

Hive 不適合用于聯機(online) 事務處理,也不提供實時查詢功能。它最適合應用在基于大量不可變數據的批處理作業。Hive的特點是可
伸縮(在Hadoop 的集群上動態的添加設備),可擴展、容錯、輸入格式的松散耦合。Hive 的入口是DRIVER ,執行的SQL
語句首先提交到 DRIVER 驅動,然后調用 COMPILER 解釋驅動, 最終解釋成 MapReduce 任務執行,最后將結果返回。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hive-原理解析

一、Hive 架構 下面是Hive的架構圖。 Hive的體系結構可以分為以下幾部分 1、用戶接口:CLI(hive shell);JDBC(java訪問Hive);WEBUI(瀏覽器訪問Hive) 2、元數據&#x…

linux命令之history命令

在Linux系統上輸入命令并按下Enter后,這個命令就會存放在命令記錄表 ( ~/.bash_history )中,預定的記錄為1000條,這些都定義在環境變量中。列出所有的歷史記錄:#history 只列出最近10條記錄:#history 10 (注,history和…

Hive-配置安裝

一、HDFS安裝 1、解壓到指定位置tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/apps/ 2、改名mv apache-hive-3.1.2-bin/ hive-3.1.2 3、在conf目錄下添加Hadoop安裝路徑mv hive-env.sh.template hive-env.sh # 配置HADOOP_HOME路徑 export HADOOP_HOME/opt/module/…

linux文件系統概念目錄結構

文件系統概念一. 文件與目錄的定義1. 文件系統:它是磁盤上有特定格式的一片區域,操作系統通過文件系統可以方便地查尋和訪問其中所包含的磁盤塊;2. 文件:文件系統中存儲數據的一個命名的對象。3. 目錄:其中包含許多文件…

JDK源碼解析之 java.lang.Class

Java程序在運行時,Java運行時系統一直對所有的對象進行所謂的運行時類型標識。 這項信息紀錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執行,用來保存這些類型信息的類是Class類。Class類封裝一個對象和接口運行時的狀態&#xff…

Linux Vi常用技巧

VI常用技巧VI命令可以說是Unix/Linux世界里最常用的編輯文件的命令了,但是因為它的命令集眾多,很多人都不習慣使用它,其實您只需要掌握基本命令,然后加以靈活運用,就會發現它的優勢,并會逐漸喜歡使用這種方…

JDK源碼解析之 java.lang.ClassLoader

Class代表它的作用對象是類&#xff0c;Loader代表它的功能是加載&#xff0c;那么ClassLoader就是把一個以.class結尾的文件以JVM能識別的存儲形式加載到內存中。 一、核心方法 1、loadClass方法 protected Class<?> loadClass(String name, boolean resolve) throws…

Linux Vi的使用

一、插入文本┌──┬────────────┐│命令│描述 │├──┼────────────┤│i │在當前字符前插入文本 │├──┼────────────┤│I │在行首插入文本 │├──┼────────────┤│a │在當前字符后添加文本 │├──┼──…

Hive-beeline服務

Hive客戶端工具后續使用了Beeline 替代HiveCLI &#xff0c;并且后續版本也會廢棄掉HiveCLI 客戶端工具,Beeline是 Hive 0.11版本引入的新命令行客戶端工具,它是基于SQLLine CLI的JDBC客戶端。 Beeline支持嵌入模式(embedded mode)和遠程模式(remote mode)。在嵌入式模式下&am…

用戶賬號管理基本概念

什么是用戶賬號管理用戶賬號一般包括普通用戶賬號、管理賬號和系統賬號。為了鑒別用戶身份以及加強系統安全&#xff0c;系統為每個使用它的人分配了一個賬號&#xff0c;這就是普通用戶賬號。每個人擁有一個獨立的普通用戶賬號&#xff0c;每個賬號有不同的用戶名和密碼。用戶…

JDK源碼解析之 Java.lang.Compiler

Compiler類提供支持Java到本機代碼編譯器和相關服務。在設計上&#xff0c;它作為一個占位符在JIT編譯器實現。 一、源碼部分 public final class Compiler {private Compiler() {} // dont make instancesprivate static native void initialize();private st…

shell的基本概念

Shell就像一個殼層&#xff0c;這個殼層介于用戶和操作系統之間&#xff0c;負責將用戶的命令解釋為操作系統可以接收的低級語言&#xff0c;并將操作系統響應的信息以用戶可以了解的方式來顯示。 從用戶登陸到注銷期間&#xff0c;用戶輸入的每個命令都會經過解譯及…

JDK源碼解析之 java.lang.System

一個和系統環境進行交互的類. System不允許被實例化, 而且是一個final類 一、不能實例化 private System() { }二、成員變量 public final static InputStream in null; //這是“標準”輸入流。 public final static PrintStream out null; //這是“標準”輸出流。 public …

詳解MySQL中DROP,TRUNCATE 和DELETE的區別

注意:這里說的delete是指不帶where子句的delete語句 相同點: truncate和不帶where子句的delete, 以及drop都會刪除表內的數據 不同點: 1. truncate和 delete只刪除數據不刪除表的結構(定義) drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index…

JDK源碼解析之 Java.lang.Package

如果我們在Class對象上調用getPackage方法&#xff0c;就可以得到描述該類所在包的Package對象(Package類是在java.lang中定義的)。我們也可以用包名通過調用靜態方法getPackage或者調用靜態方法getPackages(該方法返回由系統中所有已知包構成的數組)來獲得Package對象。getNam…

Mysql中limit的用法詳解

在我們使用查詢語句的時候&#xff0c;經常要返回前幾條或者中間某幾行數據&#xff0c;這個時候怎么辦呢&#xff1f;不用擔心&#xff0c;mysql已經為我們提供了這樣一個功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于強制 SE…

Docker入門-簡介

獨具魅力的Docker作為一門新技術&#xff0c;它的出現有可能引起其所在領域大范圍的波動甚至是重新洗牌。根據業內專業人士的看法&#xff0c;不論如何&#xff0c;Docker的出現&#xff0c;已經成為云服務市場中一枚極具意義的戰略性棋子。從2013年開始在國內發力&#xff0c;…

Mysql中limit的優化

在一些情況中&#xff0c;當你使用LIMIT row_count而不使用HAVING時&#xff0c;MySQL將以不同方式處理查詢。 如果你用LIMIT只選擇一些行&#xff0c;當MySQL選擇做完整的表掃描時&#xff0c;它將在一些情況下使用索引。 如果你使用LIMIT row_count與ORD…

Docker入門-架構

Docker 包括三個基本概念: 鏡像&#xff08;Image&#xff09;&#xff1a;Docker 鏡像&#xff08;Image&#xff09;&#xff0c;就相當于是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。容器&#xff08;Cont…

MYSQL出錯代碼列表大全(中文)

mysql出錯了,以前往往靠猜.現在有了這張表,一查就出來了. 1005&#xff1a;創建表失敗1006&#xff1a;創建數據庫失敗1007&#xff1a;數據庫已存在&#xff0c;創建數據庫失敗1008&#xff1a;數據庫不存在&#xff0c;刪除數據庫失敗1009&#xff1a;不能刪除數據庫文件導致…