基于hadoop分析,了解hive的使用
一、Hadoop理论
Hadoop是一个专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。
Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理)
Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。
用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
hadoop使用java编写,版本较为混乱,初学者可从1.2.1开始学习
1.成百上千台服务器组成集群,需要时刻检测服务器是否故障
2.用流读取数据更加高效快速
3.存储节点具有运算功能,省略了服务器之间来回传数据的网络带宽限制
4.一次写入,多次访问,不修改数据
5.多平台

-------------------------------------------------------------------------------------------------------------------------------------
namenode:master
负责总体调度,处理协调请求等(一个集群只能有一个namenode,但是可以多个集群组成一个更大的集群,这时就有多个namenode,这时的namenode有两种状态,一种叫active并且一个大集群只能有一个namenode处于该状态,一种为standby)
namenode两大功能:接受客户端读写服务,存放元数据(DataNode存储的位置等基本信息,fsimage和edits文件)
fsimage是namenode格式化时产生的,edits是用户操作增删改查的时候生成的日志
datanode:slave,存储节点,会备份,一般本地2分,其他服务器一份
机架:多个DataNod节点组成,master通过机架感知技术得知所需数据的位置
数据块:存储单元,一般64M(hadoop2中是128M)

时刻保持心跳通讯,保证每个数据都备份于3个节点上


5的read为第一个数据块读完后,读下一个数据块,如果在读取过程中某一个数据块出问题,则会记录下来并且找其他的备份,并且以后不再读取错误数据块


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DataNode数据节点
- 以数据块为单位储存数据
- 数据保存的目录由hadoop.tmp.dir决定
- Secondary NameNode第二名称节点
- 主要是合并日日志
- 日志合并过程
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
分布式计算Yarn``MapReduce
- ResourceManager(资源管理器)
- 接受客户端的请求:执行任务
- 分配任务资源
- 分配任务
- NodeManager(节点管理器,运行MapReduce任务)
- 从DataNode获取数据,执行任务
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

map负责分批运算,如果要统计1TB数据中my的出线次数,则可以启用100个map,每个map统计0.01TB数据,最终由reduce汇总

作业(Job):运行一个MapReduce所需要用到的所有jar组件
任务(Task):mapTask和ReduceTask
Key相同的结果进行reduce统计合并

作业提交一般提交jar包和配置文件
调度一般来说默认采取FIFO调度,即先考虑优先级,然后先进先出

TaskTracker会不断向JobTracker传达任务信息,如果空闲会主动申请作业

一般的生产环境都是完全分布式模式。
二、Hive的原理以及使用
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析Facebook公司最早完成并开源了hive框架,可以将sql语句直接翻译成MapReduce程序。Hive是基于Hadoop的一个数据仓库工具,可以将结构化数据文件映射成一张表,并提供类似SQL的查询功能。Hive相当于一个客户端。
Hive框架的作用:

(1)可以让不懂java的数据分析人员使用hadoop进行数据分析;
(2)MapReduce开发非常繁琐复杂,使用hive可以提高效率。
(3)统一的元数据管理,可与impala/spark共享元数据。
2. Hive基础:
(1)使用HQL作为查询接口;使用MapReduce进行计算;数据存储在HDFS上;运行在Yarn上。
(2)Hive比较灵活和可扩展性,支持UDF和多种文件格式。
(3)Hive适合离线数据分析(批量处理、延时要求很大)。

Hive 是 SQL解析引擎,它将SQL语句转译成Map/Reduce Job然后在Hadoop执行。Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在Map/Reduce Job里使用这些数据。
Hive的系统结构

由上图可知,HDFS和Mapreduce是Hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件可以分为两大类:服务端组件和客户端组件。
(1)客户端组件:
①CLI:command line interface,命令行接口。
②Thrift客户端:上面的架构图里没有写上Thrift客户端,但是Hive架构的许多客户端接口是建立在Thrift客户端之上,包括JDBC和ODBC接口。
③WEBGUI:Hive客户端提供了一种通过网页的方式访问Hive所提供的服务。这个接口对应Hive的hwi组件(hive web interface),使用前要启动hwi服务。
(2)服务端组件:
①Driver组件:该组件包括Complier、Optimizer和Executor,它的作用是将我们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架。
②Metastore组件:元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,因此hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性。
③Thrift服务:Thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。
(3)底层根基:
—>Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)
Hive的执行流程

基于hadoop分析,了解hive的使用的更多相关文章
- 基于Hadoop的数据仓库Hive
Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理.特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,可通过HQL语句实现简单的MR统计,Hi ...
- Hadoop整理五(基于Hadoop的数据仓库Hive)
数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它是单个数据存储,出于分析性报告和决策支持目的而创建. 为需要业务智能的企业,提供指导业务流程改进.监视时间.成本.质量以及控 ...
- 大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)
什么是Hive? 我来一个短而精悍的总结(面试常问) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark). 2:hive可以使用类sql方言,对存储在hdfs上的数据进 ...
- Hive -- 基于Hadoop的数据仓库分析工具
Hive是一个基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库 ...
- 基于hadoop的数据仓库工具:Hive概述
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类 ...
- Hive和SparkSQL:基于 Hadoop 的数据仓库工具
Hive 前言 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执行. ...
- Hive和SparkSQL: 基于 Hadoop 的数据仓库工具
Hive: 基于 Hadoop 的数据仓库工具 前言 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转 ...
- 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析
转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...
- 基于Hadoop集群搭建Hive安装与配置(yum插件安装MySQL)---linux系统《小白篇》
用到的安装包有: apache-hive-1.2.1-bin.tar.gz mysql-connector-java-5.1.49.tar.gz 百度网盘链接: 链接:https://pan.baid ...
随机推荐
- Servlet底层原理、Servlet实现方式、Servlet生命周期
Servlet简介 Servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序. Servlet的特点 (1)Servlet对像,由Servlet容器 ...
- 使用myeclipse修改项目映射路径
这里主要做下记录,找到myeclipse中对项目路径进行查看以及修改的地址 如图 点击项目右键 实例url:http://localhost:8080/myFirstServlet/one 对应路径中 ...
- JS 实现的年月日三级联动
js文件 SYT="-请选择年份-"; SMT="-请选择月份-"; SDT="-请选择日期-"; BYN=50;//年份范围往前50年 A ...
- 设计模式之责任链模式——Java语言描述
责任链模式为请求创建了一个接受者对象的链.这种模式给予请求的类型,对请求的发送者和接受者进行解耦.这种类型的设计模式属于行为模式.在这种模式下,通常每个接收者都包含对另一个接收者的引用.如果一个对象不 ...
- appium+python搭建自动化测试框架_Tools安装(一)
作者的配置环境和版本: win10 + python3.6 + Appium v1.4.16 1.下载node https://nodejs.org/en/download/, 下载node.j ...
- 在Salesforce成长:需要好奇心
今天的正题,今天谈谈好奇心和技术.这两天北大学霸Cherry分两次问了我两个问题,都触发了很好的结果和思考,让大家都受益. 第一天是她在做Salesforce和Flexible Report集成项目中 ...
- SQL server 存储过程的建立和调用
存储过程的建立和调用 --1.1准备测试需要的数据库:test,数据表:物料表,采购表if not exists (select * from master.dbo.sysdatabases whe ...
- iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单
随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,
- Cocos Creator—最佳构建部署实践
这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...
- 【死磕 Spring】----- IOC 之 获取验证模型
原文出自:http://cmsblogs.com 在上篇博客[死磕Spring]----- IOC 之 加载 Bean 中提到,在核心逻辑方法 doLoadBeanDefinitions()中主要是做 ...