Hive学习笔记(1)——概念
Hadoop
- Hadoop:一种由Java语言编写的分布式数据存储解决方案,其核心是HDFS和MapReduce。HDFS提供了存储,MapReduce提供了计算。
- HDFS:Hadoop应用的最主要的分布式文件系统。一个HDFS集群主要由一个NameNode和多个Datanode组成,NameNode管理文件系统的元数据,Datanode存储了实际的数据。
- MapReduce:一个计算框架,将计算任务分割成多个处理单元分散集群内的服务器里执行,从而降低成本。
- HBase:使用HDFS持久化存储数据,主要存储非结构化和半结构化的松散数据,支持行级别的更新、快速查询、支持事务。
- Yarn:Hadoop资源管理框架。
- Hive:基于Hadoop的一种数据仓库工具,可将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
HDFS
Hadoop分布式文件系统(Hadoop Distributed File System),将一份大文件分成若干块存储在不同的服务器节点上,实现多机分享文件和存储空间。
特点:
- 保存多个副本(默认3个),提供容错机制;
- 适合保存大数据,不适合保存小文件。
NameNode
NameNode是HDFS的Master节点,管理数据块的映射、处理客户端的读写请求、配置副本粗略、管理HDFS的名称空间。
NameNode包含fsimage
和edits
文件,保存目录与数据块之间的关系。
fsimage
存储目录树信息,即某一数据块保存在哪些数据节点上的信息,NameNode启动时首先读取这个文件,将目录树信息加载到内存中;edits
存储日志信息,NameNode启动后对目录树的增删改信息记录到日志中;- NameNode启动时,先加载
fsimage
,再加载edits
,把新的目录树信息添加到fsimage
文件中,然后启用新的edits
文件。这个过程称为检查点(Checkpoint
)。
Secondary NameNode
如果edits
文件过大,加载fsimage
和edits
的时间就会变长,导致NameNode启动时间过长,因此采用Secondary NameNode定时拉取NameNode上的文件进行合并,并拷贝到NameNode,防止edits
文件过大。
Standby NameNode
Hadoop 2.0提出了NameNode高可用解决方案,即两个NameNode互为主备,一台处于Active状态,一台处于Standby状态。
只有Active状态的NameNode对外提供服务,Standby NameNode在Active NameNode不可用时切换为Active状态。
DataNode
DataNode在HDFS是负责读写和存储数据的节点,按照block为单位存储数据。
DataNode定时向NameNode报告节点状态,如果NameNode超过一定时间没有收到DataNode的心跳,认为该节点不可用。
Hive
特点:
- 适应Hadoop环境,提升磁盘性能;
- 语法接近SQL,避免写MapReduce,减少学习成本;
- 适合超大数据集的计算和存储,集群扩展容易;
- 支持用户自定义函数;
- 不支持行级插入、更新、删除操作,不支持事务;
- 执行延迟比较高,常用于数据分析等对实时性要求不高的场合。