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的数据将会被一起删除,而删除外部表时,数据则会保留




hadoop心得结尾 hadoop实验心得_hive


数据库事务的概念

事务就是单个逻辑工作单元执行的一系列操作,要么都执行,要么都不执行,要满足事务,就得满足原子性、一致性、隔离性、持久性

谈谈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.空间换时间

多级缓存:用户页面缓存、反向代理缓存、cache机制等

索引:哈希(适用于数据的快速存取)、B+树(适用于查找,避免多次IO)、倒排(适用于搜索领域)

2.并行与分布式计算

切分任务、分而治之(基于数据的分解)

多进程、多线程并行执行(基于问题的分解)

3.多维度的可用

负载均衡、容错、备份

读写分离

依赖关系(能异步处理则异步)

监控模块的运行

4.伸缩

拆分(业务逻辑的分段、对数据的分表分库)

5.优化资源利用

资源的释放