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包含fsimageedits文件,保存目录与数据块之间的关系。

  • fsimage存储目录树信息,即某一数据块保存在哪些数据节点上的信息,NameNode启动时首先读取这个文件,将目录树信息加载到内存中;
  • edits存储日志信息,NameNode启动后对目录树的增删改信息记录到日志中;
  • NameNode启动时,先加载fsimage,再加载edits,把新的目录树信息添加到fsimage文件中,然后启用新的edits文件。这个过程称为检查点(Checkpoint)。

Secondary NameNode

如果edits文件过大,加载fsimageedits的时间就会变长,导致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,减少学习成本;
  • 适合超大数据集的计算和存储,集群扩展容易;
  • 支持用户自定义函数;
  • 不支持行级插入、更新、删除操作,不支持事务;
  • 执行延迟比较高,常用于数据分析等对实时性要求不高的场合。