Hadoop(5)-Hive

Hadoop的存儲處理方面提供了兩種不同的機制,一種是之前介紹過的Hbase,另外一種就是Hive,有關于Hbase,它是一種nosql數據庫的一種,是一種數據庫,基于分布式的列式存儲,適合海量數據的操作,,底層依賴HDFS,與rdbms的區別和其他的nosql基本類似,例如不支持sql語句對于數據進行操作,具體的關于Hbase的細節可以去參考我的上一篇博客,今天我們會通過hiveHbase的區別對于hive進行相應的講解。

Hive 在其官方網站上的定義說hive是一個數據倉庫(數據倉庫中存儲數量級大且數據結構復雜的數據,是多個其他數據庫的集合)的軟件,通過sql的方式幫助用戶讀寫管理分布式存儲中的數據,展開來說:Apache Hive是一個建立在Hadoop上的數據倉庫基礎架構,它可以使用類似于sql語句的Hql對于存儲在HDFS上的數據進行相應的操作,可以轉化為MapReduce作業,但是,雖然相比于Hbasehive提供了大家所熟悉的sql的功能,但是,對于一般sql的交互式查詢還是沒有被支持,Hive實際上就是只在Hadoop上運行批處理,而HBase操作的是數據庫而不是在mapreduce上實時運行

Hive可以做什么:

1、ETL(把多個關系型數據庫存儲到數據倉庫中的數據遷移過程就是ETLflume/sqoop),包括數據的抽取,轉化,落地,加載等操作)、reporting、數據分析

2、可以把多種數據進行格式化或者結構化管理的工具

3、可以更加簡潔的訪問HDFS或者Hbase

4、可以直接通過sql直接使用訪問Mapreduce等框架

Hive的組件

1、服務端組件:

Driver組件:包括編譯器、優化器、執行器,將我們寫的HQL進行解析,便宜又話,生成執行計劃,然后調用底層的計算框架

Metastore組件:元數據服務組件,負責存儲hive的元數據,存儲在關系型數據庫中

Thrift服務:用來進行可擴展且跨語言的開發服務

Hive集成服務:能讓不同的開發語言調用hive接口

?

2、客戶端組件:

CLI:命令行接口,可以使用命令操作查看

Thrift客戶端:hive的許多客戶端接口是建立在thrift客戶端的基礎之上的,包括JDBC

WEB UI :可以在瀏覽器中訪問hive提供的服務接口

優點及使用場景

操作接口采用類SQL語法,提供快速開發的能力(簡單、容易上手)

避免了去寫MapReduce,減少開發人員的學習成本,可以直接寫sql進行操作;

統一的元數據管理,可與impala/spark等共享元數據;

易擴展(HDFS+MapReduce:可以擴展集群規模;支持自定義函數)

數據的離線處理;比如:日志分析,海量結構化數據離線分析

Hive的執行延遲比較高,因此hive常用于數據分析的,對實時性要求 不高的場合;

Hive優勢在于處理大數據,對于處理小數據沒有優勢,因為Hive的執 行延遲比較高。

而對于Hive的執行流程,我借用某大神的一句神總結:將用戶提交的SQL語句轉換成Hadoop上的MR任務執行,并向用戶返回結果。(Sql傳入之后會提交到編譯器中,編譯器分析sql,然后去元數據中查數據的位置以及查看sql要進行什么操作,然后轉化成mapreduce程序(執行計劃),吧執行計劃交給執行器,然后執行器開始執行并將結果進行返回到客戶端,而優化器的作用就是對整個計算過程進行優化,比如在數據量特別小的時候就直接在內存中申請處理)

?

如需更多的交流可以添加qq群859121793
或添加微信群

轉載于:https://www.cnblogs.com/dsjxb/p/9473552.html

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

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

相關文章

高精——模板

紫書&#xff1a; #include <iostream> #include <string> #include <cstring> #include <cstdio> using namespace std; const int maxn 1000; struct bign{ int d[maxn], len; void clean() { while(len > 1 && !d[len-1]) …

認識及實現MVC

gitee M&#xff1a;Model 數據模型&#xff08;模型層&#xff09;→ 操作數據庫&#xff08;對數據進行增刪改查&#xff09; V&#xff1a;View視圖層 → 顯示視圖或視圖模板 C&#xff1a;Controller 控制器層 → 邏輯層 數據和視圖關聯掛載和基本的邏輯操作 API層 前端請…

算法 --- 翻轉二叉樹

解(C): 1.二叉樹判空 if(root 0) 或 if(root nullptr); 2.二叉樹的左子樹: root->left . 3.使用遞歸,將當前根節點的左右指針指向互換左向右子樹(此時右子樹也進行了翻轉) // C /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode…

float 常見用法與問題--摘抄

float 屬性絕對是眾多切圖仔用的最多的 CSS 屬性之一&#xff0c;它的用法很簡單&#xff0c;常用值就 left、right、none 三個&#xff0c;但是它的特性你真的弄懂了嗎&#xff1f; 我會在這里介紹我對 float 的認識與使用&#xff0c;以及使用過程中遇到的問題。 對 float 的…

javascipt -- find方法和findIndex方法的實現

find: 根據傳入的條件函數,返回符合條件的第一項 var arr [{id: 1, name: zs, age: 18},{id: 2, name: zs, age: 17},{id: 3, name: ls, age: 16},{id: 4, name: ls, age: 15}]Array.prototype._find_ function(cb){for(var i0; i< this.length; i){if(cb(this[i],i)){ret…

bzoj 2179 FFT快速傅立葉 FFT

題面 題目傳送門 解法 題如其名…… 不妨將多項式的\(x^i\)變成\(10^i\)&#xff0c;然后就是一個比較簡單的FFT了 md讀進來的是一個字符串&#xff0c;并且要倒序 最后注意進位問題 時間復雜度&#xff1a;\(O(n\ log\ n)\) 代碼 #include <bits/stdc.h> #define N 1 &l…

【探討】javascript事件機制底層實現原理

前言 又到了扯淡時間了&#xff0c;我最近在思考javascript事件機制底層的實現&#xff0c;但是暫時沒有勇氣去看chrome源碼&#xff0c;所以今天我來猜測一把 我們今天來猜一猜&#xff0c;探討探討&#xff0c;javascript底層事件機制是如何實現的 博客里面關于事件綁定與執行…

node --- 在node中使用mongoosemongoDB的安裝

*首先確保,你的電腦安裝了mongodb,網址: mongodb官網 *使用npm安裝 mongoose: mongoose官網 ps:mongoose是Node中操作mongoDB的第三方插件.用于提高數據庫操作效率(相當于在mongoDB上封裝了一次,暴露出更友好的API) MongoDB的安裝 1.下載地址 2.下載好了后,傻瓜式的安裝(我的…

websocket demo

git node.js創建websocket 的服務 Nodejs Websocket包 ws.createServer([options], [callback]) The callback is a function which is automatically added to the “connection” event. 前端代碼 1. 創建實例、打開連接 this.websocket new WebSocket(ws://127.0.0.1:80…

shell常用命令總結總結

打rpm包&#xff1a; rpmbuild -bb SPECS/smplayer.spec --define "_topdir pwd" 安裝rpm包&#xff1a; rpm -ivh [rpm包文件] 如果安裝不上 rpm -ivh [rpm包文件] --force #強制安裝 打包的時候可能需要一些依賴&#xff1a; dnf install 【依賴文件名】 sed -i常用…

Filter

一、簡介 Filter也稱之為過濾器&#xff0c;它是Servlet技術中最激動人心的技術&#xff0c;WEB開發人員通過Filter技術&#xff0c;對web服務器管理的所有web資源&#xff1a;例如Jsp&#xff0c;Servlet&#xff0c;靜態圖片文件或靜態html文件進行攔截&#xff0c;從而實現一…

前端面試手寫題

深拷貝 // 深拷貝 function deepClone(ori) {let tar;if (typeof ori object && ori ! null) {tar Array.isArray(ori) ? [] : {}for (let k in ori) {if (ori.hasOwnProperty(k)) {tar[k] deepClone(ori[k])}}} else {tar ori}return tar}繼承 // 圣杯模式實現…

node --- 使用express.Router與body-parser

express框架提供了一個Router方法,用于監聽路由 // 命令行(windows*64) npm install express --save// router.js const express require("express"); // 定義路由 const router express.Router();// 處理http://host:port/students/ 路由(GET方法) router.get…

python基礎1 第一天

TEST 1 阿斯蒂芬 day1test1 while 1&#xff1a;print&#xff08;333&#xff09; import randomprint轉載于:https://www.cnblogs.com/shuangzhu/p/9243853.html

【數據庫】《SQL必知必會 4th》部分筆記

9.匯總數據 count(*) 包括空 count(name) 不包括空 10.分組數據 group by 分組 having 過濾分組 where 過濾行 11.子查詢 select .. from .. where in (select ...) 由內向外處理 A.子查詢過濾 作為子查詢的語句只能查詢單個列。 B.作為計算字段使用子查詢 select cust_name, …

微軟認知服務應用秘籍 – 漫畫翻譯篇

概述 微軟認知服務包括了影像、語音、語言、搜索、知識五大領域&#xff0c;通過對這些認知服務的獨立或者組合使用&#xff0c;可以解決很多現實世界中的問題。作為AI小白&#xff0c;我們可以選擇艱難地攀登崇山峻嶺&#xff0c;也可以選擇像牛頓一樣站在巨人的肩膀上。本章節…

01 React初步認知、React元素、渲染、工程化

定義 react&#xff1a;用于構建用戶界面的 JavaScript 庫 &#xff08;僅負責View層渲染、應在視圖上體現交互邏輯&#xff09;vue&#xff1a;漸進式JavaScript 框架&#xff08;MVVM&#xff09; 使用 引入CDN腳本添加根容器 div #app創建React組件 ReactDOM.render Re…

node --- 在express中配置使用模板引擎(art-template)

下載依賴: npm install --save art-template express-art-template配置: // app.js const express require("express"); const app express(); app.engine("html", require("express-art-template"));使用: 例如處理瀏覽器GET請求 /students…

PAM認證機制

一、PAM簡介 Sun公司1995年開發的一種與認證相關的通用框架機制&#xff0c;PAM只關注如何為服務驗證用戶的API&#xff0c;通過提供一些動態鏈接庫和一套統一的API&#xff0c;將系統提供的服務和該服務的認證方式分開&#xff1b;PAM只是一個框架而已&#xff0c;自身不做認證…

02 JSX學習

使用vite處理jsx vite引入的腳本必須是ESM的 npm init -y yarn add vite package.json 添加vite命令 index.html引入jsxJSX是什么 一種標簽語法&#xff0c;在JS基礎上進行的語法擴展不是字符串、也不是HTML是描述UI呈現與交互的直觀的表現形式JSX被編譯后會生成React元素 &am…