hive客户端
第一代客户端直接使用hive指令连接,连接的就是metastore服务,并且只要连接成功就可以操作hive数据库
第一代客户端的启动和使用
第一代客户端,直接启动metastore服务即可
前台启动(当终端任务结束后,立刻结束服务)
前台启动,可以方便查看日志信息
hive--service metastore
后台启动(不影响终端的使用,在哪个目录下启动该服务,就会在哪个目录下生成一个nohuo.out记录日志信息)
nuhoop hive -- service metastore &
使用第一代客户端
hive
第一代客户端存在的问题
1、meta store即负责元数据的管理,又负责客户端的连接保持(峰值性能不强)
2、没有身份识别,只要能连接metastore就可以操作hive安全性不强
3、无法连接第三行服务(jdbc)
第二代客户端
创建了一个单独额hiveserver2服务
1、专门处理客户端的连接请求,以保持客户端的连接
2、hiveserver2会对客户端的身份进行校验,如果不满足将无法使用hive服务,提高安全性
3、使用jdbc协议连接,可以无缝连接第三方服务
metastore和hiveserver2的启动
前台启动会占用终端窗口,如果前台启动,使用ctrl+c结束终端占用,服务也会跟着关闭
#前台启动
hive --service metastore
hiver --service hiveserver2
#后台启动
nohup hive --service metastore &
nohup hive --service hiveserver2 &
注意:hiveserver服务启动后也会产生一个runjar进程,hiveserver2启动服务后1-2分钟后才可以使用,如果不放心可以使用 lost-i:10000去查询,如果有进程使用了该端口号则hiveserver2服务就可以使用
datagrip连接hive服务本质上是连接的hiveserver2
数据库和数据仓库
OLTP:联机事务处理,保存我们日常生活中的各种用户行为产生记录的数据平台
特点:服务于业务,需要少量数据的频繁增删改查,要保证响应速度,保证数据安全,保证时效性
OLAP:联机分析处理,数据分析时所使用的海量数据存放的数据平台,一般会将多个业务数据库或各种数据源中的数据提取出来,统一存在OLAP服务中
特点:服务于分析,要能应对海量数据的存储和数据计算,对于响应速度要求不高没我们很少修改数据,所以也不需要对数据的一致性,安全性进行考虑。
思考:数据仓库是大型数据库吗?不是
数据库主要是为了企业的业务发展记录数据
数据库主要是为了企业的业务发展记录数据
数据仓库主要是为了对于企业的历史数据进行分析
数据库和数据仓库并不能互相取代,企业中可以没有数据仓库但是不能没有数据库
我们现在学过的数据库有mysql(sql server),数据仓库有hive
数据库和数据仓库的区别
本质上时OLTP和OLAP系统的区别
数据库更偏重于事务处理,要求其支持事务,要求增删改查效率比较高
事务:最小的业务单元,执行过程中,要么全部成功,要么全部失败
事例:小明给小刘转账1000元,银行系统要给小明减少1000元,给小刘增加1000元,要么同时成功,要么同时失败。
数据仓库更偏重于数据吞吐量和稳定,不要求支持事务,不要求搞得响应效率,所以必须处理海量的数据或文件
OLTP
transcation 事务 面向事务支持事务
oltp系统更注重的是安全、完整、相应效率、通常指的就是关系型数据库
注意 不是nosql数据库 没有事务支持 redis hbase
OLAP
analytical分析 面向分析支持分析
olap更注重的是数据吞吐量
主要指的是数据仓库、数据集市(小型数据仓库):apche hive
注意:在某些场合下,说oracle也是olap系统,如何理解?
如果关系型数据库只要从事数据分析工作,就可以看作是olap系统,但是hive不可以做为oltp使用,因为不具备事务功能
数据仓库的核心特征
1、面向主题性
主题:是一个抽象的概念,数据综合体,一个分析的主题可以对应多个数据源,在数仓的开展分析中,首先确定分析的主题,然后基于主题寻找,采集跟主题相关的数据
2、集成性
数仓不是生成数据的平台其数据来自各个不同的数据源
当我们确定主题后,就需要把和主题相关的数据从各个数据源集成过来
因为同一个主题的数据可能来自不同的数据源他们之间会存在差异(异构数据):字段名同名不统一,单位不统一,编码不统一。
因此在继承的过程中需要进行ELT(抽取 转换 加载)
3、不可更新性
数仓上面的数据几乎没有修改操作,都是分析的操作
数据仓库是分析规律的平台不是创造数据规律的平台
注意:改指的是数据之间的规律不能修改
当下所学的侧重于离线数据 分析的都是历史数据
4、实变性
数仓是一个持续维护建设的东西
站在时间角度,数仓的数据成批或批次变化更新,一天一分析,一周一分析
数仓分层
ODS:源数据层、数据操作层,主要就是将各个数据园中的数据集中到指定的平台中,几乎不对数据做任何处理,只是临时存放等待后续处理
DW:数据仓库层,对于数据进行数据清洗,数据处理,数据转换等,使其满足数据分析的需要
DA/APP层:数据应用层,根据业务部门的需求,进行数据分析处理获取的数据可以直接用于前端展示或者制作报表。
思考:为什么进行数据分层?
1、数据分层便于我们进行过程检查,方便协同开发
2、方便过程数据的复用,能缩短开发周期
3、如果出现数据错误,便于追根溯源
分层的好处?
1·、解耦合(相互依赖),方便协同开发
2、可以追根溯源,可以更快的对于问题进行解决和修复
3、空间换时间提高最终应用层使用数据的效率
每一个公司数仓的分层策略都不同,所以我们只需要记住三层架构即可,在公司中通常对dw层和da层细化
ETL和ELT
E:extact数据抽取,将数据从不同的数据源中抽取出来
T:transform数据转换,将数据通过清洗,处理,转换为满足数据分析要求的数据
L:load数据加载,将数据加载到数据仓库中
ETL:传统的数仓处理模式,将数据抽取出来存放到临时数据库,进行转换后加载到数据仓库
ELT:将数据抽取后直接加载到数据仓库中,在数据仓库中进行反复处理(分层处理)
数据库操作
1、创建数据库
createdatabaseifnotexists myhive;
2、使用数据库
use myhive
3、查看当前使用的数据库
selet current_database();4、查看数据库的详细信息
descdatabase myhive;5、创建数据库时指定数据存放位置
createdatabaseifnotexists test_1 location 'hdfs://node1:8020/tmp/db_1';#8020是namenode的监听端口号,默认情况下hdfs的namenode使用端口8020进行通信,但是这个端口号可以根据实际的hadoop集群配置进行修改6、创建数据库时制订注释信息
createdatabaseifnotexists test_2 comment'this is a test'7、删除数据库
dropdatabase myhive;#如果是空数据库可以直接删除,如果内部创建了表,则不能随意删除
如果说要强制删除非空数据库,可以使用cascade进行修饰
dropdatabase myhive cascade;
版权归原作者 隔壁老K~ 所有, 如有侵权,请联系我们删除。