编程教育资源分享平台

网站首页 > 后端开发 正文

openstack、hadoop、sprak、Mapreduce、HDFS、HIVE等一网打尽

luoriw 2024-04-04 12:50:51 后端开发 15 ℃ 0 评论

小编本来是不想写这篇文章的,因为云计算是分布式、并行计算、网格计算、分布式储存、虚拟化等一系列技术发展的产物,里面的水很深,正所谓“只在此山中,云深不知处”我们在日常工作及学习中经常听说云计算的只言片语,以至于无法识其大貌。但今天我们就干他一下,彻底弄清楚openstack、hadoop、SOA、虚拟化、Mapreduce、HDFS、HIVE、sqoop、spark之间的关系。

首先还是看图说话。

这张图对云计算进行了剖析,按照这样图我们可以总结出各个术语所在的层次。

顶层软件

基于面向服务的SOA架构所开发出来的松耦合应用软件

云计算架构

Hadoop

Hadoop拥有多个组件这些组件都是工具,类似于软件架构中各种工具轮子,这些组件包括: Mapreduce组件(或者更先进的spark); HDFS组件; HIVE组件; Sqoop组件; Pig分析平台;Hbace;Yarn等

云计算操作系统

openstack

虚拟化层

通过VMware等工具实现CPU虚拟化、内存虚拟化、I/O虚拟化

分布式节点机

各种廉价的通过网络连接的服务器与存储

虽然分了五层,但各层之间的关系是什么,请各位观众老爷接着往下看:


一、顶层应用软件为什么要采用SOA架构


SOA与云计算融合的会更好,SOA本身就是一种分布式的软件架构,他的各个子系统都是松耦合并且相对独立的,通过统一的接口连接到“数据总线”上进行通信。

例如SOA(京东)里的各个子模块,如“商品模块”、“订单模块”、“用户管理模块”、“订单管理模块”可以根据计算量需求的大小弹性的部署在数量不同的服务器节点上面。

二、 云计算架构hadoop是什么


他是云计算的一个架构,那架构是啥,软件架构(softwarearchitecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

具体到hadoop呢,hadoop负责接受上层应用的请求,并通过其所拥有的的各种组件工具通过openstack(或者基于openstack的云计算操作系统)调用被虚拟化的底层节点机进行计算。

hadoop在云计算中为上层的应用软件提供各种支持,它拥有很多组件,其中的核心组件是mapreduce和hdfs。

2.1它的Mapreduce组件(或者更先进的spark)

mapreduce是分布式计算框架,MapReduce主要通过“Map(映射)”和“Reduce(合并)”这两个函数分别完成任务的分解与结果的汇总。首先,数据自动分割为M个数据块的集合,MAP被分发到多个节点上执行。数据块在不同的节点上并行处理生成带有键/值对(Key-value)的集合。并且此集合中的数据是经过分区和排序的,分区数量R和函数由用户指定。Reduce调用也被分发到多个节点上执行,首先获取Map阶段产生的中间结果,一边获取一边做Shuffle操作(获取Map数据、合并数据、生成Reduce的输入文件),当Shuffle操作完成之后进行Reduce合并操作,完成任务后,MapReduce的输出存放在R个输出结果文件中。

2.2 它的HDFS组件

Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统(DistributedFile System),HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedata set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streamingaccess)文件系统中的数据。

2.3 它的HIVE组件

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

2.4 它的Sqoop组件

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如: MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

2.5 它的Pig分析平台

是一种数据流语言和运行环境,常用于检索和分析数据量较大的数据集。Pig包括两部分:一是用于描述数据流的语言,称为PigLatin;二是用于运行Pig Latin程序的执行环境。

2.6 Hbace

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

2.7 Yarn组件

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

三、 云操作系统openstack

云操作系统:可以说所有的云操作系统都是基于openstack架构进行开发的,因此这里只介绍openstack。

OpenStack是开源云操作系统,可控制整个数据中心的大型计算,存储和网络资源池。用户能够通过web界面、命令行或API接口配置资源。

3.1 OpenStack和虚拟化、hadoop的关系

OpenStack是虚拟化和hadoop之间的纽带。

虚拟化提供资源,

OpenStack对外提供服务,同时也可以管理下面这些资源。

OpenStack不是虚拟化,OpenStack只是系统的控制面,OpenStack不包括系统的数据面组件,如Hypervisor、存储和网络设备等。

OpenStack和虚拟化有着关键的区别

虚拟化是OpenStack底层的技术实现手段之一,但并非核心关注点。

3.2 OpenStack的服务

分为如下几大类:计算、存储、网络、共用服务、 硬件生命周期、硬件生命周期、编排、工作流、应用程序生命周期、应用程序生命周期、API代理、操作界面。

OpenStack服务组件通过消息队列(Message Queue)相互通信。

OpenStack组件众多,建议重点关注计算、存储和网络服务组件,其他服务可以在实际工作需要时再进行学习。

至于虚拟化和服务器节点机我觉得大家都懂,就没必要赘述了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言