大数据在当今非常火热,已经进入了国家战略,在网上看一些分析报告,动动不动就说通过大数据分析,发现什什么规律。但是很多文章都是借助大数据的热点,背后也许就是很简单的数据分析,数据量就M级别什么G级别都没达到。真正的大数据都是至少T级别的,才会上升到使用大数据技术。为什么要用大数据技术,因为大量的数据,单机是很难快速的计算出来,所以需要使用大数据的分布式技术去快速计算出来。谈到大数据,肯定离不开Hadoop和Hive,Hadoop是大数据的基石,因为存储、调度、计算框架大多都是在Hadoop上。那么为什么又离不开hive呢?因为hive的离线计算最稳定,更重要的是现在绝大部分计算引擎都是基于hive的元数据管理。下面谈谈hive需要掌握哪些知识。
Hive是大数据领域离线执行必不可少的引擎。用户写sql可以在Hadoop集群上分布式执行。执行方式可以选择MR或者Tez。大数据做数据分析必须掌握hive sql,如果做大数据的平台研发,必须掌握Hive的原理,metastore的管理和hiveserver的管理,jvm的优化等
1、Hive 基本概念
Hive是基于Hadoop的一个数据仓库工具,可以将结构化和半结构化的数据文件映射成一张表,并提供类SQL查询功能;
Hive是构建在Hadoop 之上的数据仓库:
使用Hive SQL作为查询接口;
使用HDFS存储;
使用MapReduce计算(现在也可以用Tez);
简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。
2、hive优缺点
优点: 入门简单,避免了去写MapReduce,减少开发人员的学习成本;
统一的元数据管理,可与impala/spark等共享元数据;
灵活性和扩展性比较好:支持UDF,自定义存储格式等;
适合离线数据处理
缺点: Hive的效率比较低,由于hive是基于hadoop,Hadoop本身是一个批处理,高延迟的计算框架
其计算是通过MapReduce来作业,具有高延迟性
Hive适合对非实时的、离线的、对响应及时性要求不高的海量数据批量计算,即查询,统计分析
3、Hive架构
Hive整体架构图(比较老)
Hive模块架构图
Metastore是使用关系型数据库管理元数据的,可以和其他引擎共享元数据
Client:hive命令行模式、beeline模式或者hiveserver2的调用客户端
Driver:sql解析,生成逻辑计划,逻辑计划优化,生成物理计划,物理计划优化,提交到Yarn执行
hive作为一个sql引擎,使用hive那必须掌握sql的写法,但是hive又有一些和传统sql写法不一样的地方:1、建表:hive建表又有外部表和内部表之分,存储格式有TextFile、ORC、Parquet、Avro等,用户可以指定字段之间的拆分方式;2、sql排序有order by ,sort by ,distribute by 和 cluster by;3、元数据有单独的metastore管理;4、有客户端和hiveserver服务端等等。
hive知识我们以后一点点分享从入门到精通,欢迎持续关注。