【若泽大数据实战第十六天】Hive的安装部署 + 课程一个月总结

这篇博客回顾了过去一个月的Hadoop相关课程,重点讲解了Hive的安装部署过程和Hive与RDBMS的异同。文章详细介绍了Hive的产生背景、体系架构、与MySQL的对比,以及在Hadoop上的应用。同时,提供了Hive环境搭建的步骤,包括目录创建、文件上传、解压、环境变量设置和配置修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

Hadoop的课程已经告一段落,基本上在零基础课程里不会再出现了,接下来的课程由若总来上,第一讲Have。

复习前一个月的课程内容:
1、Linux
Linux:
	文件(*****)
	权限(*****)
	压缩/解压(*****)
	软件安装: JDK/MySQL/Hadoop/...(*****)
2、MySQL
DDL/DML(GROUP BY/JOIN:是大数据处理中的超级杀手:shuffle) 这两个是重点数据倾斜的案例:必然是 GROUP BY/JOIN导致的,到时候把这两个反复看熟解决shuffle对大数据来说已经掌握了60%

3、Hadoop
hadoop阐述:狭义和广义两个角度去阐述
狭义:   海量数据的一个分布式的存储和计算框架而已 (HDFS MapReduce YARN)广义:    描述的是整个Hadoop生态圈,Hadoop里面的框架是处理某一个场景或者是某一类场景
Hadoop访问方式: 
	shell CLI(*****) 用命令行的方式
	Java API(*****): FileSystem
	Web UI:  HUE(HDFS/RDBMS/Hive/HBase/Solr...)
HDFS/MR/YARN架构:掌握一些基础的就行,明白每个进程的结构和如何使用就行。(面试使用)
		面试前准备:
			架构
			MapReduce 执行流程 (生产不使用,比较low)
			MR/Spark/...提交到YARN的执行流程:1~8步骤,举一反三
4、Hadoop的常用操作
HDFS:mkdir put get rm mv
问题:copy vs mv

MR:mr的执行流程(一定要掌握的)
YARN:mr作业跑在yarn之上,杀死yarn上的作业,提交的时候指定的一些重要的参数。
问题:使用MapReduce实现join、mapjoin的功能?
    ===>非常繁琐
        wordcount
明白:MR是非常麻烦的
5.Hive的产生背景:
1、MR编程不便性
2、传统的RDBMS人员的需求
    HDFS上面的文件就是普通的文件,它并没有schema的概念
    schema:RDBMS中的表结构
        people.txt <== id name age address
    sql  ===>  搞定海量数据的统计分析
===>  产生Hive
6.Hive
Hive 是一个使用SQL来操作分布式存储系统上面的大数据集的读写和管理操作的一个客户端,Hive它不是一个集群。
用JDBC去连接Server的话,不应该是走查询统计分析,而是去拿到统计结果,只拿结果,不做计算。Structure:半  非

分布式系统:HDFS/S3    问题:HDFS存的是近期的数据
        1min:几百G
        冷数据:定期的移走S3 table的location指向S3
FaceBook开源目的是解决海量结构化日志数据的统计文件
Hive构建在Hadoop之上的数据仓库
   Hive的数据就是存在 HDFS之上
    计算时使用MR
    弹性:线性扩展
Hive底层的执行三个引擎:        MapReduce(在Hive1.x的时代MapReduce是默认引擎,在Hive2.x标记MapReduce为过期版本)        Tez        Spark (生产环境正在使用的引擎)
Hive定义一种类似SQL的查询语言:HQL 类SQL
    问题:HQL和SQL的关系?
        什么关系都没有,只是语法类似,Hive抄的MySQL的语法
    很多的SQL on Hadoop的语法都是和RDBMS非常类似的
Hive常用于:离线批处理
SQL ===> MR:我们输入一个SQL通过我们的HIVE工具把SQL语句翻译成MapReduce/Spark/Tez 作业,并提交到YARN上运行
    问题:是否智能、执行计划(sql是如何翻译成mr作业)
高级:UDF

Hive的重点存储格式:1.textfile
textfile为默认格式
存储方式:行存储
磁盘开销大 数据解析开销大
压缩的text文件 hive无法进行合并和拆分
2.sequencefile
二进制文件,以<key,value>的形式序列化到文件中
存储方式:行存储
可分割 压缩
一般选择block压缩
优势是文件和Hadoop api中的mapfile是相互兼容的。

3.rcfile
存储方式:数据按行分块 每块按照列存储
压缩快 快速列存取
读记录尽量涉及到的block最少
读取需要的列只需要读取每个row group 的头部定义。
读取全量数据的操作 性能可能比sequencefile没有明显的优势
 
4.orc
存储方式:数据按行分块 每块按照列存储
压缩快 快速列存取
效率比rcfile高,是rcfile的改良版本
 
5.自定义格式
用户可以通过实现inputformat和 outputformat来自定义输入输出格式。
总结:相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次操作仅针对若干列的情景,列式存储引擎的性价比更高。在互联网大数据应用场景下,大部分情况下,数据量很大且数据字段数目很多,但每次查询数据只针对其中的少数几行,这时候列式存储是极佳的选择     

压缩格式:
       可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split
Hive阶段版本
Stinger plan:(阶段版本)	
        08/2007: facebook	05/2013: 0.11.0  Stinger Phase1  ORC HiveServer2
	10/2013: 0.12.0  Stinger Phase2  ORC improvement
	04/2014: 0.13.0  Stinger Phase3  Vectorized query engine  Tez(0.13版本后才能用)
	11/2014: 0.14.0  Stinger.next Phase 1  Cost-based optimizer(CBO基于成本的优化,代价的优化) 
	01/2015: 1.0.0 (里程碑点)

Stinger:不是一个项目或产品,而是一种提议,旨在将Hive性能提升100倍(仅仅是个参考),包括Hive的改进和Tez项目两个部分。

为什么要使用Hive
    1)、简单易用
    2)、扩展性好:hdfs空间不够加磁盘加机器,存储不是问题。底层MapReduce或者Spark计算处理不过来就加CPU加内存就行。
    3)、统一的元数据管理如果存放在hdfs上就仅仅就是一个文件而已,如果要进行计算,肯定要告诉这个文件meta信息,哪个文件哪个列,列的数据类型是什么Hive不是集群,Hdoop是集群,Hive仅仅是一个客户端,没有进程,不会挂掉,提交在YARN上执行。
元数据信息                   database、table、clumn:name type、hdfs存储位置:location元数据存放在哪里呢?
                 元数据信息,全部配置在MySQL里面元数据统一管理的好处: /ruozedata/hadoop/a.txt 将hdfs上的数据用 Hive可以处理,Sprk也可以计算处理,不需要做任何的改进。
 Hive/Pig/Impala/Spark SQL/Presto:共享元数据的信息是最大的好处,Hive里面创建了一张表,可以直接用Spark SQL进行访问
问题:Hive的数据存放在哪里?
    HDFS + metadata

Vectorized query engine(向量化查询引擎):
      传统方式中,对数据的处理是以行为单位,依次处理的。Hive也采用了这种方案。这种方案带来的问题是,针对每一行数据,都要进行数据解析,条件判断,方法调用等操作,从而导致了低效的CPU利用。
      向量化特性,通过每次处理1024行数据,列方式处理,从而减少了方法调用,降低了CPU消耗,提高了CPU利用率。结合JDK1.8对SIMD的支持,获得了极高的性能提升。通过以下参数启用向量化查询引擎:
相关参考:
https://cwiki.apache.org/confluence/display/Hive/Vectorized+Query+Execution
Hive体系架构
测试环境部署架构:
    客户端(client、web、idbc)发送HQL语句到Hive(可以存放数据在MySQL或者Derby)上,最后作业提交到Hadoop集群上。
问题:Hive需要集群吗?
        Hive不需要集群,可以理解Hive为一个客户端。
问题:测试环境存在什么缺陷?
        一个MySQL在生产中可能存在单点故障,所以需要准备两个MySQL,一个是active一个是standby,一台机器出现问题,另外一台机器运行。                
Hive部署架构
Hive VS RDBMS 关系和区别 异同点

1、Hive关注的是大数据的数据库仓库的统计和分析,跑一个Hive作业跑个7~8个小时是正常的,关注点不同,处理的场景不一样

2、关系型数据库,节点数量是有限制的,Hive是构建在Hadoop之上的,可以支持成千上万的节点的,而且是分布式计算的

3、关系型数据库里面是有事物的 insert/update  Hive是没有事物的,都批次执行的,都是离线导入一个批次的数据。

总结:

Hive适用于离线计算,所以它的延迟性和实时性差别很大。MySQL讲究实时性和事物,一个insert或者一个update就要commit,更新数据,Hive处理的数据都是这些数据已经和业务没有直接关联的,停机的数据,进行离线批量的操作。


Hive环境的搭建
若泽数据-J哥:hadoop-2.8.1 Apache Hadoop
生产环境建议使用: CDH HDP (兼容性非常好)大数据平台里面会用到非常非常多的组件,也会遇到非常多的兼容性的问题,Jar包冲突,所以不介意很多组合使用Apache版本,建议使用 CDH HDP
[若泽大数据机器结构]
机器目录结构相关: hadoop/hadoop  
	hadoop000(192.168.199.151)
	hadoop001
	hadoop002
	.........
	
/home/hadoop/
	software  存放安装软件
	       hadoop-2.6.0-cdh5.7.0.tar.gz
		   hive-1.1.0-cdh5.7.0.tar.gz
	data 存放测试数据
	source 存放源代码
            hadoop-2.6.0-cdh5.7.0-src.tar.gz	
	lib  存放相关开发的jar
	            commons-lang3-3.5.jar
				hive-1.0.jarhive-train.jar
				scala-train-1.0jar
				spark-2.2.0-bin-2.6.0-cdh5.7.0tgz
				spark-train-1.0.jar
				train-scala-1.0.jar
				train-scala-1.0-jar-with-dependencies.jar				
	app  软件安装目录
	            apache-flume-1.6.0-cdh5.7.0-bin
				apache-maven-3.3.9
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值