Hadoop框架最核心组件的设计

#Hdoop

一、HDFS

HDFS是分布式计算的存储基石,对于整个集群有单一的命名空间,具有数据一致性,适合一次写入多次读取的模型,客户端在文件没有被成功创建之前是无法看到文件存在的。文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且会根据配置由复制文件块来保证数据的安全性。

HDFS通过三个重要的角色来进行文件系统的管理:NameNode、DataNode和Client。NameNode可以看做是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。

NameNode会将文件系统的Metadata存储在内存中,这些信息主要包括文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode中的信息等。

DataNode是文件存储的基本单元,它将文件块(Block)存储在本地文件系统中,保存了所有Block的Metadata,同时周期性地将所有存在的Block信息发送给NameNode。

Client就是需要获取分布式文件系统文件的应用程序。

二、MapReduce

MapReduce是一个高性能的分布式计算框架,用于对海量数据进行并行分析和处理。与传统数据仓库和分析技术相比,MapReduce适合处理各种类型的数据,包括结构化、半结构化和非结构化数据。数据量在 TB 和 PB 级别,在这个量级上,传统方法通常已经无法处理数据。MapReduce 将分析任务分为大量的并行Map 任务和Reduce汇总任务两类。Map 任务运行在多个服务器上。指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。

三、YARN

Yarn是一个分布式的资源管理系统,用以提高分布式集群环境下内存、IO、网络、磁盘等资源的利用率。严格来说,Yarn只是一个资源管理的框架,并不是一个计算框架,MapReduce计算框架需要运行在Yarn上。

Yarn,最主要的作用是,能够使得各种应用可以互不干扰的运行在同一个Hadoop系统中,共享整个集群资源。

四、HBASE

Hbase是运行在Hadoop上的一种分布式数据库,部署于HDFS之上,克服了HDFS在随机读写方面的缺点。

HBase是一种Key/Value系统,和Hive不一样,Hbase能够在它的数据库上实时运行,而不是运行MapReduce任务。在Hbase中,行是key/value映射的集合,这个映射通过row-key来唯一标识。Hbase利用Hadoop的基础设施,可以利用通用的设备进行水平的扩展。

五、HIVE

Hive是一个构建在Hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。

HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce。虽然Hive提供了SQL查询功能,但是Hive不能够进行交互查询,因为它只能够在Haoop上批量的执行Hadoop。

Hive被分区为表格,表格又被进一步分割为列簇。列簇必须使用schema定义,列簇将某一类型列集合起来(列不要求schema定义)。例如,“message”列簇可能包含:“to”, ”from” “date”, “subject”, 和”body”. 每一个 key/value对在Hbase中被定义为一个cell,每一个key由row-key,列簇、列和时间戳。

Hadoop框架最核心组件的设计_第1张图片

你可能感兴趣的:(hdoop)