hive的计算是通过什么实现的
hive是搭建在Hadoop集群上的一个SQL引擎,它将SQL语句转化成了MapReduce程序在Hadoop上运行,所以hive的计算引擎是MapReduce,而hive的底层存储采用的是HDFS
yarn和hive的关系
因为hive的底层实现是MapReduce,所以确切的来说是yarn和MapReduce的关系,yarn可以作为MapReduce计算框架的资源调度系统
NameNode和DataNode的通信原理
客户端向DataNode发出RPC请求后,DataNode会向NameNode请求获取block快,NameNode根据DataNode的块报告和心跳, 会返回给DataNode指令. 通过这种方式NameNode间接地和DataNode进行通信,实际上NameNode作为Server端, 是不会主动去联系DataNode的, 只有作为客户端的DataNode才会去联系NameNode.
内部表与外部表的区别
hive创建表的时候通过external修饰的来创建外部表,没有external的则是内部表,当删除内部表时,存储在HDFS的数据将会被一起删除,而删除外部表时,数据则会保留
数据库事务的概念
事务就是单个逻辑工作单元执行的一系列操作,要么都执行,要么都不执行,要满足事务,就得满足原子性、一致性、隔离性、持久性
谈谈HBASE底层的理解
(1)HBASE主要分为HMaster和HRegionServer,HMaster主要负责表和Region的管理,负责表的增删改查,管理HRagionServer的负载均衡和Region的分布,还负责HRegionServer失效后Region的转移
(2)HRegionServer主要负责存储HRegion,每一个HRegion上有多个Hstore(对应表中的列簇),当写入数据时,Hstore中的memstore会将数据写入缓存,当缓存写满后(默认64M),会出发flush将缓存里的数据flush到磁盘形成storefile文件,storefile文件是Hfile的轻量级包装,Hfile是附带索引格式的文件
flume与kafka的区别
flume适合做日志采集,可以定制多种数据源,减少开发量;而kafka是分布式消息处理的中间件,自带存储功能,适合做日志缓存;flume主要用于将数据往HDFS、HBASE发送;如果涉及多个系统的使用,可以选择用kafka
kafka如何保证数据不丢失、不重复消费
(1)在同步模式下,将ACKS设为-1,也就是将消息写入leader和所有的副本
(2)在异步模式下,如果消息发送出去了还没有收到确认的时候,缓冲池满了,在配置文件中设置成不限时阻塞超时的时间,也就是说让生产一直阻塞下去,这样数据也不会丢
(3)将消息的offset存储起来(如存储到HBASE),每次消息处理时判断是否处理过
如何搭建一个高并发高可用的平台
1.空间换时间
2.并行与分布式计算
3.多维度的可用
4.伸缩
5.优化资源利用 |
|