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多用户版本的架构图
8.请画出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高可用的架构图
26.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’}