day11 hive来了
请介绍一下hadoop
概念
特点/特征
应用场景
代码实现
o 当问:请介绍一下某个组件或是技术的架构设计时,如何作答?
角色名称
角色作用
角色间关联关系
竞品角色或是竞品组件
o 面向分析与面向事务
面向事务强调时效性,发了请求立即得到回复。
面向分析强调吞吐量,发了请求不要求立马给我结果,强化融较大的数据量,得出准确的结构。
o 实时性:响应时间要短
o 吞吐量:单位时间处理的数据量要大。
o 离线和实时处理的分类依据
实时
在线:高实时
秒级实时
分钟级实时
小时级实时
离线
天级,T+1=Today+1
o 关于hive或是hdfs的用户权限管理问题
1、hdfs-hive的用户、组等权限数据,均来源于linux本地用户。
2、在用户级别上,集群中所有的不同主机上的相同用户名称,是共享一个hdfs系统的用户数据权限的。
潜台词:hdfs系统的用户是以用户名来判断权限的。
3、在用户组级别上的权限,是以组的ID作为判断依据的,而不仅仅是靠组名。
o Linux用户权限管理
常规用户权限管理:useradd,usermod,gpasswd等。
遵循的用户、组、其它的三个级别的权限管理。
优点:简单、有效
缺点:不灵活,不能够解决特殊情况下权限管理。
o ACLs:access control list,访问控制列表的方式,
专门来为传统权限管理不能解决的特殊情况服务、补充的。
o Hive的计算引擎
Mapreduce
Tez: hive官方默认的计算引擎
Spark
o Tez与mapreduce的对比分析
相同点
均为分布式计算框架,hive也都进行对等的支持。
都能够基于Hive和yarn调度来使用,共享HDFS存储。
差异点
Tez对DAG数据流图进行了执行优化,大大提升了执行效率。
Tez采用了会话代理机制,提前在yarn端开户一个任务交互的session proxy,为更多的任务提交提高效率。
Tez是属于自动计算优化,并不善长对用户的编程优化。相对于mapreduce而言,编程复杂度和学习难度很大。
o DAG有向无环图
Directed Acyclic graph
所有的数据类处理任务,形成的数据流图,均为DAG图。
o Derby
Java开发的开源的、嵌入式数据库。
o 嵌入式数据库:
你的数据库和你的代码是在一起的,而且一般是在同一个进程当中的。
SQLLite,android开发的默认数据库。
BerkerlyDB:简称BDB。
o Thrift
是一个实现服务跨语言调用的中间件。
比如可以让Java开发的服务或是中间件,可以让python,c,php来调用。
day11 hive进阶
o Web开发发展史
ASP-PHP
JSP
SSH
SSH2-nutz-springside
SSM-SpringMVC
Springboot
Springcloud
o 数据模型
为解决某一个或是某一类具体的应用场景问题,而抽象出来的公共的、共认的、统一的解决方案。
o Hive模型当中为何要进行分区和分桶?
很多问题的解决方法,没有对错之分,只有好坏之别。
主要作用在于提升查询效率
o Varchar和char对比分析
相同点:都是做字符串存储的类型。
差异点
Varhar是变长,char定长。
值本身长度不确定则用varchar,若确定则用char。
对比数据类型是从计算和存储两个维度
Varchar是有利于存储,但不利计算。
Char是有利于计算,但不利于存储。
Varchar是用时间换空间,
Char是用空间换时间。
o 请介绍一下hive的rc数据格式。
概念说明
Rc是row-column的缩写,即行列式文件。
先水平划分数据,再按字段进行存储。
特点特征
综合性能非常高,存储效率和查询效率均比较出色。
应用场景
Hive的表格式绝大部分情况均可以使用rc,现在都建议使用orc。
代码实现
Mr: 引入包之类的。
Hive
直接创建表的时候,设置表的存储格式即可。
o 数据格式当中的可切分性
可切分性即大数据处理理念当中的大而化小,分而治之。
分两个维度来理解。
存储维度
是不是所有的数据均可以进行大而化小、即hadoop里的block形式来存储?
答案是肯定的。因为底层都是二进制。
计算维度
是不是所有的计算均可以进行大而化小、即mapreduce类型的并行计算?
答案是肯定不行,取决于数据的存储格式是否可以被可切分,比如txt,seq,rc等均可以切分,但是gzip,snappy不可切分。
o 请介绍一下视图view
概念
虚表,一个SQL语句构成一个SQL数据抽象,但他本身是不存储数据的。
操作这个虚表就相当操作数据本身。
桥梁和数据抽象的作用。
特点
不存储数据本身,但是存储的是SQL,其实质是存储的复杂关系的抽象。
应用场景
解耦,解编程开发者与复杂关系数据的耦合性。
相当于多个人在开发相同业务的复杂SQL时,不用每个人都搞一遍这个复杂SQL,只要统一抽象这个复杂SQl形成一个视图,即可统一使用,提高了编程效率、降低了业务复杂性。
代码实现
Create view view_name query;
o 请介绍一下索引-index
概念
对数据进行高效检索而额外建立的一个数据结构,能够大幅度提升查询效率。
该数据结构:倒排性质结构,倒排索引。
正排:按照常规传统逻辑,先找大的,再找小的。
倒排:按照反常规逻辑,先找小的即词,再找大的即文章,即存储的是词到文章的关系。
特点
额外数据存储索引,其大小一般是远远小于数据本身,便于查询提升使用。
典型代码是康熙字典。
需要额外维护索引。
索引的优点在于提升查询效率,但也要注意索引的使用。
其缺点额外占用了存储空间,而且在对数据进行增删的时候还需要单独先维护索引。
应用场景
提升数据查询效率的地方均可以。
代码实现
Create index
Navicat界面
o 请介绍一下hive的内外表
概念
内表是元数据和实体数据统一由hive管理。
外表是元数据归hive管理,实体数据归hdfs管理。
特点
内表是一删则全删。
外表是一删只会删除元数据,实体数据继续hdfs管理。
应用场景
内表:表是可以在hive内部进行自生成的。
外表:表数据是由外部的数据通过load命令进来的,不能够自己生成的时候。
代码实现
内部表创建:create table
外部表创建:create external table
o 一次查询多次插入语法的实现
解决的是一张宽表并行高效、一次性读取后,生成多张子表的过程。
o Sort by和order by
前者是单个reduce内部排序,后者是全局排序。
o SQL优化之count(1)代替count(*)
相同点:均可以达到记录统计的目的。
不同点
SQL的是查询两部骤
确定有无:确定有没有
具体数据获取:具体拿出来看,到底是什么
day13 hive进阶
o 求职三个关键阶段及关系
简历
解决让招聘方愿意跟你取得主动联系的问题。
笔试
解决让招聘方愿意安排一个面试官,跟你面对面进行沟通,以线下面试为主,也可以是电话面试。
面试
解决的是完整、真实、客观、专业、全面的进行评估考量,确定求职者是否真的满足岗位需要。
o 答题技巧
能图化的一定不要列表
能列表的一定不要纯文字
能文字的一定不要纯说话
o 数据分析类题目的答题技巧
1、拿到题干:这个题到底问的是什么
2、审题:得到这个题目的考点是什么
3、题目的计算口径
其实就是准确的来描述和表达该题目当中存在可能歧义性的内容,即说明问题的模糊点。
简而言之,即在计算过程当中以什么计算方式为准。
4、确定输入与输出
5、SQL编程
6、测试运行与bug解决
7、正式上线
o SQL数据进行链接分类
左右水平链接:join
上下垂直合并:union
day15 hive进阶
o 外包工作分类
一等:到BAT、互联网大厂
二等:去金融、保险类公司
三等:运营商、科研院所
四等:不知名的、较偏的公司。
o Hive函数分类
系统函数
自定义函数
o Hive自定义函数分类-按照生命周期
临时函数-temporary
全局函数-global
o 关于mapreduce的排序
一次排序
map到reduce的过程中,会有sort排序,使得reduce的输出默认是按key升序排列输出。
特点:key是一个字段。
二次排序:
在map到reduce的过程当中,按照2个字段进行升序排序,当第1个字段的值相同时,按第2个字段排序。
day16 hive进阶
o 生产系统-生产环境
线上的,直接为用户提供正常服务的平台或是应用。
o 关于活跃数说明
DAU:daily active user
MAU: month active user
YAU: year active user
o 关于用户访问数量的统计名词:
Pv: page visit
你访问一个网页就是一个PV
同一个网页被同一个用户访问10次,则PV是10.
衡量访问数量。
Uv: uniq visit
一个人访问一个网页,就是一个UV
同一个网页被同一个用户访问10次,则UV是1.
衡量访问用户。
刷量
各种网络平台,都有刷量,
其中视频平台中的刷量,即为刷UV和PV。
o 数据模型
是对现实生活当中的实体、以及实体之间关系的映射。
最终要反射现实当中的业务中去。
o 阿里是一家数据公司,即数据驱动发展的公司。数字化公司。
o 数据建模的意思
让数据说话
o 维度:人们看待一个事物的角度。
o 数据分析
简而言之,基于给定的大批量的源数据,通过数据统计分析相关的方法,得出有利辅助决策的结果。
o QPS
Query per seconds,每秒请求数,一般作为衡高并发程度的最常用因子。
o 请介绍一下OLTP和 OLAP
概念说明
OLTP: on – line transactional processing,联机事务处理
OLAP:on-line analytical processing,联机分析处理
特点特征
OLTP:强调实时性和事务性。
OLAP:强调高吞吐量、分析性。
应用场景
OLTP:主要是应用线上的应用系统、网络平台的数据库方面。
OLAP:主要是应用于数据仓库的建设,离线数据处理与数据分析挖掘。
代码实现
都可以通SQL来实现。
o 数据分析当中的环比和同比
环比:连续的某个时间范围的比较,比如2月和3月。
同比:连续的两个周期的相同时间范围内的比较,比如2021年3月和2020年3月。
day17 hive进阶
o Hadoop集群的优化工作
第1轮:相关hive、tze、yarn的参数优化
包括container、jvm申请等方面。
第2轮:
硬件资源优化方向
CPU、内存、磁盘都有,只是接收和执行慢的情况。
之前资源有一定的空闲,但是总体资源还是比较弱小的,可能是导致整体集群工作效率低的主要原因。
o Hivesql之关键字比较顺序的问题
order by < select< group by< where < from
o 电商专业术语
曝光:商品被用户在网页当中看到了一次,称为一次曝光
即将商品呈现到用户的终端网页上。
Pv: page visit,一次网页的曝光,即为一个pv
Pvid: 一次曝光的唯一标识。
点击:click,用户用鼠标点进去某个曝光的商品的明细页面。
Uv: uniq visit,独立用户访问,一个用户访问一个网页N多次,但只有一个UV,相当于按用户进行去重统计。
Ctr:click through rate,广告点击率