面试提问的相关问题

1.Hive和HBase有什么区别?

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

2.hive 特点?

a.可扩展:Hive可以自由地扩展集群的规模,一般情况下不需要重启服务
b.延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
c.容错:良好的容错性,节点出现问题,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多用户版本的架构图

hive多用户版本的架构图
8.请画出hbase的架构图

hbase体系架构
9.请介绍一下kafka,什么情况下要使用消息队列?

Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式、可划分的、冗余备份的持久性的日志服务,它主要用于处理流式数据。
举例:火车站买过票,为啥要排队?
因为买的人多了
因为人少的时候就不用排队
售票人员卖票的速度快;
要想满足排队的条件:
人超级多
卖票的速度超级慢;
排队:先到者先买票;
处理的速度如果失败,重新排队;

10.Kafka都包含哪些组件,作用分别是什么?

服务器:维护整个kafka所有业务的运行;维护多个消息列队
生产者:专门用来生产数据(发布)
消费者:专门用来消费数据(订阅)
主题:消息根据topic进行归类

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 (c )
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
(
id int ,
name string,
age smallint,
scroe double,
– 地址;容器,泛型
address array< string>,
– 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高可用的架构图

flume高可用的架构图
26.Flume常用的三个组件是什么,并画出来

flume组件

27.什么是azkaban?

Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的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’}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值