面试题

面试题:

1.hive和HBase有什么区别?
Hive的定位是数据仓库,虽然也有增删改查,但其删改查对应的是整张表而不是单行数据,查询的延迟较高。其本质是更加方便的使用mr的威力来进行离线分析的一个数据分析工具。
HBase的定位是hadoop的数据库,是一个典型的Nosql,所以HBase是用来在大量数据中进行低延迟的随机查询的。

2.hive 特点?
(1).可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务
(2).延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
(3).容错:良好的容错性,节点出现问题SQL仍可完成执行

3.简述hive及其优点?
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

4.hive常用的文件格式有哪些
Avro,ORC,Parquet,textfile,json等

5.数据仓库的建模理论有哪些;请简单介绍一下
ER(EntityRelation)实体模型
维度建模
dataVault模型
anchor

6.hbase中在namespace为test的下面创建一张名字为:test_table的名,键和属性自己定义
create test:test_table, ‘cf’
put test:test_table, ‘key01’,‘cf:name’,‘test’
put test:test_table, ‘key01’,'cf:age,20

7.请画出hive多用户版本的架构图
在这里插入图片描述

8.请画出hbase的架构图
在这里插入图片描述
9.请介绍一下kafka,什么情况下要使用消息队列?
火车站买过票,为啥要排队?
因为买的人多了
因为人少的时候就不用排队
售票人员卖票的速度快;
要想满足排队的条件:
人超级多
卖票的速度超级慢;
排队:先到者先买票;
处理的速度如果失败,重新排队;

10.Kafka都包含哪些组件,作用分别是什么?
kafka的服务
生产者
消费者
主题

11.Hive内部表和外部表的区别?
我们再创建外部表的时候要加个关键字 external
内部表 : 当我们在hive中使用命令删除hive表时 hive所对应的hdfs的目录
也会被删除 元数据库中的数据 也被删除
外部表 : 在hive中删除了外部表 而外部表所对应的hdfs目录不会被删除 元数据库被删除。

12.hive将a表的数据全部挪到b表里面有几种方法?
Create tables as select 语句
Create tables like +insert into select语句

13.以 start-hbase.sh 为起点,Hbase 启动的流程是什么?
以 start-hbase.sh 为起点,Hbase 启动的流程是什么?
start-hbase.sh 的流程如下:
一.运行 hbase-config.sh
hbase-config.sh的作用:
1、装载相关配置,如HBASE_HOME目录,conf目录,regionserver机器列表,JAVA_HOME 目录等,它会调用$HBASE_HOME/conf/hbase-env.sh .
2、解析参数(0.96 版本及以后才可以带唯一参数 autorestart,作用就是重启)
3、调用 hbase-daemon.sh 来启动 master.
4、调用 hbase-daemons.sh 来启动 regionserver zookeeper master-backup.

二.hbase-env.sh 的作用:
主要是配置 JVM 及其 GC 参数,还可以配置 log 目录及参数,配置是否需要 hbase 管理 ZK,配置进程 id 目录等.

三.hbase-daemons.sh 的作用:根据需要启动的进程,
如 zookeeper,则调用 zookeepers.sh
如 regionserver,则调用 regionservers.sh
如 master-backup,则调用 master-backup.sh

四.zookeepers.sh 的作用:
如果 hbase-env.sh 中的 HBASE_MANAGES_ZK"=“true”,那么通过ZKServerTool这个类解析xml配置文件,
获取 ZK 节点列表,然后通过 SSH 向这些节点发送远程命令执行。

五.regionservers.sh 的作用:
与 zookeepers.sh 类似,通过配置文件,获取 regionserver 机器列表,然后 SSH 向这些机器发送远程命令:

六.master-backup.sh 的作用:
通过 backup-masters 这个配置文件,获取 backup-masters 机器列表,然后 SSH 向这些机器发送远程命令。

14.hbase内部机制是什么
Hbase是一个能适应联机业务的数据库系统
物理存储:hbase的持久化数据是存放在hdfs上
存储管理:一个表是划分为很多region的,这些region分布式地存放在很多regionserver上
Region内部还可以划分为store,store内部有memstore和storefile
版本管理:hbase中的数据更新本质上是不断追加新的版本,通过compact操作来做版本间的文件合并
Region的split
集群管理:zookeeper + hmaster(职责) + hregionserver(职责)

15.描述Hbase中scan和get的功能以及实现的异同?
HBase的查询实现只提供两种方式:
1、按指定RowKey 获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)Get 的方法处理分两种 : 设置了ClosestRowBefore 和没有设置的rowlock . 主要是用来保证行的事务性,即每个get 是以一个row 来标记的.一个row中可以有很多family 和column.
2、按指定的条件获取一批记录,scan方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能使用的就是scan 方式.
1)scan 可以通过setCaching 与setBatch 方法提高速度(以空间换时间);
2)scan 可以通过setStartRow 与setEndRow 来限定范围([start,end)start 是闭区间,end 是开区间)。范围越小,性能越高。
3)、scan 可以通过setFilter 方法添加过滤器,这也是分页、多条件查询的基础。

16.什么是大合并,小合并?
小合并:把多个hfile合并生成一个大hfile,然后新hfile标记为权威数据,删除老hfile,设计出发点是轻微影响hbase的性能。
大合并:同时处理一个列族的全部hfile,将处理给定region的一个列族的所有hfile,合并为一个文件,大合并是唯一直接删除数据的机会。

17.什么是zk?zk作用?应用场景?
zookeeper是一个分布式的,开源码的分布式应用程序协调服务,他包含一个简单原码集,分布式程序可以基于它实现同步服务。
典型应用场景:Zookeeper是一个高可用的分布式数据管理和协调框架,并能很好的保证分布式环境中数据的一致性。
作用:
1.数据发布与订阅
2.命名服务
3.master选举
4.分布式锁
5.分布式队列

18.hregionserver 挂掉之后怎么处理?
当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

19.Kafka消息的分发策略?
1)kafka集群中的任何一个broker都可以向producer提供metadata信息,这些metadata中包含"集群中存活的servers列表"/“partitions leader列表"等信息;
2)当producer获取到metadata信息之后, producer将会和Topic下所有partition leader保持socket连接;
3)消息由producer直接通过socket发送到broker,中间不会经过任何"路由层”,事实上,消息被aa路由到哪个partition上由producer客户端决定;
比如可以采用"random"“key-hash”"轮询"等,如果一个topic中有多个partitions,那么在producer端实现"消息均衡分发"是必要的。
4)在producer端的配置文件中,开发者可以指定partition路由的方式。

20.请解释一下hive中的分区
hive内部管理海量数据的处理方式;
一个分区是一个目录;多个分区是由多个父子目录
分区的信息只能通过hive的sql语句创建
分区使用的时候当成一列来使用(查询)

21.hive中的cube和rollup分别指的是什么?
Cubes:(立方体)
a,b,c这三个元素列出所有的组合情况;
GROUP BY a, b, c WITH CUBE
GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (b, c), (a, c), (a), (b), ©, ( )).

Group by (a,b,c)
Union
Group by (a,b)
Union
Group by (b,c)
Union
Group by (a,c)
Union
Group by (a)
Union
Group by (b)
Union
Group by ©
Union
Group by ()
统计:
C3,3

✦Rollups:(筒)
依次少一个
GROUP BY a, b, c with ROLLUP
GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (a), ( ))
Group by (a, b, c)
Union
Group by (a, b)
Union
Group by (a)
Union
Group by ()

22.什么是beeline
让开发人员可以用java程序连接hive;(jdbc)
先启动服务器端
nohup bin/hiveserver2 &

再启动客户端
bin/beeline
连接客户端:
Jdbc的url;
木有跟上数据库,一定要切换数据库(use 数据库的名字);默认是default;
!connect jdbc:hive2://node7-4:10000 root 123456
!connect jdbc:hive2://node7-4:10000/mydata root 123456
23.请介绍一下hive的客户端,列出一些常见的命令和用法
Bin/hive;
敲sql语句以外
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Commands
Set 命令,原来在hive-site.xml配置项所有的键和值都可以使用set命令设置;
set临时的,当bin/hive停止的时候,下次启动的时候无效;
hive-site.xml永久有效,不管启动多少次都生效;
!shell命令;linux命令
可以临时执行一个linux命令;
Dfs hdfs中的命令;
dfs -cat /hw/psn_1/data/data.txt;
Source sql文件的路径
bin/hive -f ‘/root/demo.sql’
Demo.sql:中的内容:
use mydata ;
select * from a_dynasty ;
-S:不把sql语句执行的结果输出出来;
bin/hive -S -e ‘select * from mydata.a_dynasty’ > /log.txt

24.请创建一张复杂的表(包含基本类型的属性,集合,map,存储为文本文件)
create table psn_9
(
id int ,
name string,
age smallint,
scroe double,
– 地址;容器,泛型
address array,
– map爱好;容器,泛型
hobby map<string,string>,
createTime string
)
– 记录行的分隔符
row format delimited
– 列的分隔符
fields terminated by ‘,’
– 数组的拆分
collection items terminated by ‘-’
– map
map keys terminated by ‘:’
– 存储文件的格式;textfile是默认的,写与不写都是一样的
stored as textfile ;

25.请画出flume高可用的架构图
在这里插入图片描述

26.Flume常用的三个组件是什么,并画出来
在这里插入图片描述
27.什么是azkaban
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

28.Hbase都包含哪几部分?
Rowkey:键
列族,列:值
时间戳:版本
按照rowkey字典(ASCII)顺序存储,基于rowkey的高效检索,同时继承hdfs的吞吐能力;

29.如何解决hbase的数据热点问题
rowkey散列
由于数据是被按照rowkey的字典顺序存储的,若rowkey顺序性较强,会减弱hbase分布式存储的特点,千万数据热点,在高并发数据读写时,会千万部分region过载,严重时会千万节点失陪,影响其它数据的访问(其中的一个小弟忙的要死,另外一个闲的要死)
散列的方案:
Hash:可以让数据均衡分配,可重构,可以使用get等方式快速访问数据
加随机数 数据均衡分配,不可重构,失去get快速定位数据等能力
反转:普通使用的三列方法,尤其是对于时间序列,手机号类似的rowkey

30.请写出hbase查询表记录并且实现分页的功能;
– 不是扫描全表记录,而是扫描一部分记录(因为hbase中如果有1w条记录),只想列出其中的3条
– limit:往后取多少条,startrow:从第几条开始(参数是rowkey)
– limit 5,1
scan ‘mydata:psn1’,{LIMIT => 2,STARTROW => ‘key01’}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值