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.mzph.cn/news/250938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识及实现MVC

gitee M:Model 数据模型(模型层)→ 操作数据库(对数据进行增删改查) V:View视图层 → 显示视图或视图模板 C: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 属性之一,它的用法很简单,常用值就 left、right、none 三个,但是它的特性你真的弄懂了吗? 我会在这里介绍我对 float 的认识与使用,以及使用过程中遇到的问题。 对 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…

【探讨】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.下载好了后,傻瓜式的安装(我的…

前端面试手写题

深拷贝 // 深拷贝 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

微软认知服务应用秘籍 – 漫画翻译篇

概述 微软认知服务包括了影像、语音、语言、搜索、知识五大领域&#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…

使用FreeCookies 控制浏览器cookies及修改http响应内容

FreeCookies 插件安装 1&#xff1a;您的计算机需要已经安装Fiddler &#xff08;如未安装&#xff0c;请至官网下载安装 http://docs.telerik.com/fiddler/configure-fiddler/tasks/configurefiddler&#xff09; 2&#xff1a;进入Fiddler安装目录下的Scripts目录下&#xff…

node --- 使用node连接mysql

1.确保下载了mysql,且mysql处于打开状态. 2.确保下载了node,并成功安装:https://nodejs.org/en/ (小黑窗 node -v 查看) 3.安装node操作mysql的依赖包: # 命令行 npm install --save -mysql# 注:如果没有package.json 建议先使用 npm init -y 初始化正题 // app.js// 1. 引…

03 渲染元素ReactDOM.render

React与ReactDOM是2个不同的库&#xff0c;根节点内的所有内容&#xff08;和DOM更新、渲染相关&#xff09;由ReactDOM来管理一个React应用只有一个根节点用ReactDOM.render将React元素渲染到根节点 ReactDOM.render 参数1 React元素&#xff08;React.createElement(类组件/…

javascript --- 异步按顺序执行

使用promise可以很优雅的封装一个异步函数,使其按指定顺序执行: // 异步读取文件操作 const fs require("fs"); function promiseReadFile(url) {return new Promise(function (resolve, reject) {fs.readFile(url, function(err, data) {if(err) {reject(err);} e…

web提高:负载均衡

1、集群 1、为什么建议在阿里云购买负载均衡 非常便宜&#xff0c;又好用&#xff0c;有稳定&#xff0c;有简单。自己搭建不了负载均衡&#xff0c;因为共有云不支持组播跑不了vrp协议。你不会集群的概念&#xff0c;你还是蒙蒙的。2、为什么使用集群&#xff1f; 1、小规模 …

node --- 一个很好用的包json-server

这个第三方包,可以将json文件暴露出来,用http获取. (data.json如下) 下载依赖: npm install --g json-server查看是否含有json-server json -sever --version启动json-server 参考:https://www.npmjs.com/package/json-server