数分岗之Hadoop和Hive常见面试题分享

Hadoop

一、简述hadoop技术栈的组成

hadoop技术栈由MapReduce、HDFS、YARN三个组件组成。
1.HDFS(Hadoop分布式文件系统):解决海量数据的存储,包括元数据。
Client(客户端):客户端向HDFS的NameNode发送读/写数据请求,NameNode响应处理后Client将文件切块存入DataNode中或读取DataNode中的数据。
NameNode(主节点):负责数据存储的管理,管理从节点,存储数据相关的元数据,响应客户端请求,主节点也可以被设置为从节点存储真实数据。
DataNode(从节点):负责海量真实数据的存储,为客户端提供读写数据的功能,定向向主节点汇报块的位置信息。
SecondaryNameNode(辅助节点):辅助主节点实现数据管理,为主节点整合元数据并发送给主节点,紧急情况下可以帮助恢复部分数据,但不能作为主节点的热备使用。
2.MapReduce:解决海量数据计算,其所需数据和计算结果都存储于HDFS中。
Map阶段:负责分解计算任务。
Reduce阶段:将Map阶段的各个计算的结果进行合并。
3.YARN:解决资源任务调度,为MR和HDFS提供所需资源的调度。
ResourceManager:接受用户的计算请求任务,负责集群资源管理和分配。
NodeManager:负责执行资源的分配和调度工作(给MR的计算程序提供资源),同时向RM汇报资源使用的情况。
关系:MR计算的数据和产生的结果需要HDFS来存储,MR运行需要由Yarn提供资源调度。

二、分布式和集群的区别

1.集群和分布式,都是描述的一组计算机。集群的所有节点跑的是同样的任务,集群本质是多台服务器联合起来独立做相同的任务(多个服务器分担客户端发来的请求) 。而分布式系统的节点跑的是分解后的任务,分布式本质是多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务)
2. 以修手机为例:维修手机要分为检测、维修、测试三个环节,当多部手机都需要维修的时候,为了提高效率,雇了10位工程师。如果每个工程师维修时,对每台手机进行检测、维修和测试,这就是集群的工作方式。如果2位工程师负责检测,5位工程师负责维修,剩下的3位工程师负责测试,这就是分布式的工作方式。

Hive

一、Hive内部表和外部表的区别

1.建表语法不同:创建内部表无需加external关键词,创建外部表要加external关键词。
2.删表结果不同:drop删表时,内部表会同时删除mysql元数据和hdfs中的业务数据。外部表只会删除mysql元数据,不会删除hdfs中的业务数据。
3.适用情形不同: 内部表适用于不需要保存原始数据的情况,外部表适用于需要保存原始数据且数据共享的情况。
4.对数据的权限不同: 程序员对内部表数据有绝对控制权,但对外部表数据没有控制权。因此truncate清空表数据的操作可以用于内部表而不能用于外部表,create table 表名 as 查询语句的操作可以快速复制内部表但不能用于外部表。
5.类型不同:内部表是MANAGED_TABLE,外部表是EXTERNAL_TABLE。

二、分区表和分桶表的区别

1.本质不同:分区表是移动文件到分区目录下,分桶表是把文件拆分成各个分桶文件。
2.关键字不同:分区表用partitioned by,分桶表用clustered by。分区表要指定新字段及其类型,不能和其他字段重名。分桶表要指定一个已存在的字段。

三、hive中4个by的区别

1.作用不同:cluster by 字段名:按同一个字段分桶且排序,只能正序排序,相对不灵活。distribute by 字段名 sort by 字段名:distribute负责分桶,sort by负责排序,可以指定不同字段分桶和排序,且可以指定排序顺序,两者一般配合使用,相对灵活。order by 字段名:全局排序。
2.cluster by、distribute by、sort by三者都受当前设置的reduces数量影响,order by不受设置的reduces数量影响,它永远是全局排序,不受reduces数量影响,每次只用一个reduce。

四、hive函数三大标准

1.UDF:普通函数,一进一出,输入一行数据输出一行数据。举例:split
2.UDAF:聚合函数,多进一出,输入多行输出一行。 举例:count sum max min avg
3.UDTF:表生成函数,一进多出,输入一行输出多行。 举例:explode

五、Hive元数据服务配置的三种模式

1.内嵌模式
优点:配置简单,hive命令可以直接使用
缺点:derby和metastore服务都嵌入在主Hive Server进程中,一个服务只能被一个客户端连接(多个客户端连接会导致资源浪费),且元数据不能共享
2.本地模式
优点:可以使用外部的数据库(mysql),元数据共享
缺点:相对浪费资源,metastore服务嵌入到hive进程中,每启动一次hive服务,都内置启动了一个metastore
3.远程模式
优点:可以使用外部的数据库(mysql),元数据共享,本地可以连接metastore服务也可以连接hiveserver2服务,增加扩展性
缺点:启动hiveserver2服务前要先启动metastore服务

六、数据库(OLTP)和数据仓库(OLAP)的区别

数据库是面向事务做增删改查,数据仓库面向主题做数据分析,数据库为捕获数据而设计,数据仓库是为分析数据而设计,数据库存储业务数据,数据仓库存储历史数据,数据库设计要避免冗余,数据仓库设计有意引入冗余。

七、数仓经典三层架构

数据仓库是一个面向主题的、集成的、持久的(非易失的)、反映历史变化(随时间变化)
1.源数据层(ODS):数据的临时存储层,此层数据无任何更改,为数据处理做准备。
2.数据仓库层(DW):DW层的数据应该是一致的、准确的、干净的数据,即进行了清洗后的数据。
3.数据应用层(DA):依据分析需求计算生成的数据,可以直接应用到分析的数据源。

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值