JavaEE鸿蒙应用开发HTML&JS+前端Python+大数据开发人工智能开发AI+设计软件测试新媒体+短视频直播运营产品经理集成电路应用开发(含嵌入式)Linux云计算+运维开发C/C++拍摄剪辑+短视频制作PMP项目管理认证电商运营Go语言与区块链大数据PHP工程师Android+物联网iOS.NET

云计算大数据教程主流云平台介绍之-AWS

来源:黑马程序员

浏览38761人

2019.10.31

前言

目前云平台逐渐火热起来,国内如:阿里云、腾讯云、华为云等平台,国外如:AWS、Azure、Google GCP等平台,都有不少用户,并在持续的增加中。

特别是在大数据领域,主流的云平台均提供了相应的解决方案,从分布式存储到分布式计算,从批处理框架到流式计算,从ETL到数据管道,从BI分析到数据挖掘等等方面均有对应的产品来解决企业的需求。

我们有必要对云平台增加一定的了解,并最好能上手尝试一番,对我们提升眼界思维有很大帮助。

本篇文章就给大家带来主流云平台中的AWS平台的相关介绍。

什么事AWS

官方介绍:

AWS 全称Amazon web service(亚马逊网络服务),是亚马逊公司旗下云计算服务平台,为全世界各个国家和地区的客户提供一整套基础设施和云解决方案。

AWS面向用户提供包括弹性计算、存储、数据库、物联网在内的一整套云计算服务,帮助企业降低IT投入和维护成本,轻松上云

从概念是来看,AWS提供了一系列的托管产品,帮助我们在没有物理服务器的情况下,照样可以正常完成软件开发中的各种需求,也就是我们常说的云服务。

比如,

从存储来说,AWS提供了S3 作为对象存储工具,可以帮助我们存储大量的数据,并且S3可以被AWS的其他服务所访问。

从服务器资源来说,AWS提供了EC2作为虚拟化的云服务器,提供各种类型的主机,如计算型、通用型、内存计算型、GPU计算型,等等来满足业务对服务器的需要

在数据库方面,AWS提供了如RDS(包含Mysql、MariaDB、Postgresql)作为关系型存储以及分布式大型关系型数据库Aurora,同时提供了多种Nosql数据库,如DynamoDB等,以及数仓如RedShift

AWS在各个方面的业务需求上,都有对应的产品或者整体的解决方案存在,并且这些产品或者方案都有一个特点,就是全部不需要使用者有任何物理资源,所有的业务统统在AWS上运行,使用者只需要有一天电脑去登录AWS去进行管理操作即可,同时也简化了许多运维的工作量,比如监控、报警等方面,AWS自身就已经集成了很丰富的监控报警功能。

AWS上提供的主要功能模块

1572489967117024.png

1572489967102407.png

1572489967261332.png

如上三个图,我们可以看出,AWS提供了许许多多的功能模块以对应各种不同的业务需求

就以计算来举例:

在AWS的计算模块中,除了最常见的EC2(Elastic Compute Cloud),也就是云上的虚拟机,除了EC2外,AWS提供了诸如:

LAMBDA: 用于提供开发ServerLess Application,支持Java、Python、Go等主流语言

ECR:Amazon Elastic Container Registry,用于管理容器镜像的服务,类似容器仓库的概念

ECS:Amazon Elastic Container Service,AWS自身提供的容器编排服务

EKS:Elastic Kubernetes Service,运行在云上的,AWS提供的Kubernetes技术

Lambda:云上运行代码,无需顾虑服务器。只需要关系业务逻辑编写代码即可,编写好之后提交给Lambda代码可以直接运行,不需要服务器,也不需要安装环境

还有一些其他的计算模块中的服务,就不一一列举了(国内用不了)。

可以看出,AWS在每一个模块下,都提供了很丰富的产品来供用户选择使用。

使用AWS可以做到,不依赖任何任何一台物理服务器就能支撑起全公司所有的业务。

AWS是十分强大的,目前在全球云平台的占有率也是处于No.1的序列,其相当于引领着云平台的定义。

我们主要挑选一些最常使用的服务来给大家介绍一下

AWS中一些常用服务介绍

计算-EC2:

1572490067200097.png


EC2可以说是AWS平台上最核心、最基础的服务了,其全称Elastic Compute Cloud: 弹性云计算。

EC2简单来说,就是提供了云上的虚拟服务器,用户可以按照需求选择如:

1.内存计算型(强调内存性价比)

2.通用型(均衡性价比)

3.计算型(强调CPU性价比)

4.GPU计算型(提供高性能GPU)

5.存储优化型(强调存储性价比)

5.png

除了大类型上可以选择,也可以选择小类型(CPU、内存配置),如下图:

1572490151320113.png

提供了多种类型的CPU和内存的组合供我们选择

最高可以选择到128vCPU核心,4TB内存的级别

除了性能配置外,EC2同时支持选择多种操作系统来部署,如:

1572490204842131.png

同时,EC2也可以搭配如VPC(虚拟网络),AMI(镜像),快照,安全组(防火墙),负载均衡器等各种服务搭配使用

总的来说,EC2 就相当于一个云上的虚拟机软件,可以帮我们创建服务器,部署操作系统,管理网络,拍摄快照,配置防火墙等等工作。

存储-S3

S3:Amazon Simple Storage Service,是一种云上的简单存储,是一种基于对象的存储。我们可以把我们的数据作为一个个对象存储在S3中。

并且,S3可以被AWS中其他的服务所访问,甚至我们部署的Hadoop、Spark等程序都可以正常的访问S3的数据。

S3作为存储,和服务器进行了隔离,原本我们做分布式存储如HDFS,都是依赖具体的服务器硬件的,但是使用S3,就不再需要了,它就相当于AWS提供的一款分布式、超大容量的网盘程序

T1:使用S3,我们可以将存储的计算资源进行分离,比如我们可以在需要计算的时候,临时创建几个EC2,去加载S3数据,运行程序计算结果,得到结果后,就可以删除EC2了,最大程度提供资源利用率,不需要计算的时候,让计算资源不再闲置,或者说,需要计算资源的时候再去创建即可。

数据库

RDS

RDS全称:Amazon Relational Database Service,也就是亚马逊关系型数据库服务。是一种托管的云数据库,可以为我们提供云上的Mysql、Postgresql、MariaDB、Aurora(分布式关系型数据库)等多种关系型数据库。使用RDS,用户只需要关系去使用它即可,而无需关心如:安装、部署、维护、监控、报警等一系列操作。这些操作AWS全部帮我们自动化完成,我们只需要关心业务逻辑去操作数据库即可。

1572490265136453.png

DyanmoDB

DynamoDB是一款托管的NoSQL数据库,是Key-Value型的列式数据库,由AWS自行研发,类似HBase。

其提供了多种语言的API帮助客户开发程序,同时将性能划分为一个个容量单位,由预算来决定性能,最大限度节省预算。

同RDS一样,使用托管的DynamoDB,客户同样只需要关心使用即可,而无需关心如维护、安装、报警、监控、部署等一系列操作。

1572490296365856.png

RedShift

RedShift是AWS提供的一款云上的托管的数据仓库产品。其底层基于Postgresql开发,兼容Postgresql的一些标准,可以使用JDBC连接。

1572490347926129.png

计算-LAMBDA

Lambda是一款神器,目前微服务十分流行,Lambda可以构建复杂的微服务系统架构,同时也可以用来构建ServerLess 类型的Application

Lambda简单来说就是,编写好代码,提交给Lambda即可运行,无需顾虑服务器。

1572490376132718.png

联网和内容分发-API Gateway

Amazon API Gateway 可帮助开发人员创建和管理在 Amazon EC2、AWS Lambda 或任何可公开寻址的 Web 服务上运行的后端系统的 API。利用 Amazon API Gateway,您可以为您的 API 生成自定义客户端 SDK,以便将后端系统连接到移动、Web 和服务器应用程序或服务

通俗来说,我们可以认为API Gateway就是一款托管在云上的Nignx、Tomcat等中间件。

API Gateway 可以配合上面提到的Lambda,来提供RESTful形式的接口。

1572490407937877.png

分析-EMR

EMR也是一款重磅产品,对我们大数据开发人员意义重大,其可以帮助我们快速的构建起一个大数据集群,只需要鼠标点击几下即可创建。

1572490439257588.png

EMR提供两种类型的集群:

1.步骤运行集群

2.长久运行集群

对于步骤运行集群,我们可以创建一个特定的集群,分配特定EC2来运行集群,给定一个集群创建成功后的运行步骤。那么在集群创建好之后,EMR会自动运行我们提供的步骤,运行结束后,会自动关闭此集群,删除对应的EC2资源。

比如:我们可以写一个Spark任务,从S3读取数据,并将结果存放到S3中,那么可以将这个任务提交给EMR步骤运行集群,那么其流程就是:

1.预配置:比如勾选需要多少个EC2,EC2是什么类型,Spark任务在哪里

2.预配置完成后,EMR就会创建对应的EC2,然后在对应EC2上部署集群

3.集群部署完成后,运行我们提交的Spark任务

4.Spark任务运行完成后,EMR关闭集群,删除EC2

那么假设我们的任务运行了2个小时,提供了10个4核心8GB内存的EC2,那么我们消耗的成本就只有这10台EC2 运行2小时的金额。

而对于以前的机房集群来说,在不运行任务的时候,其也在持续的消耗成本(房租、电、网、运维等)

同时对于这样的集群我们还可以动态拓展其性能,我们勾选了10个EC2 运行了2小时完成,

那么一般来说我们可以勾选20个EC2,来让任务在1小时完成,那么成本和10个EC2 2小时完成是差不多的

这样对于企业来说可以最大限度的节省资金同时提高性能,

对于机房集群来说,扩容是一个大事情,但是对于EMR来说,就非常轻松。

对于长久运行集群

EMR在创建好集群后,就让集群一直运行下去,除非我们手动关闭,EMR不会自动关闭集群删除EC2

适合我们部署长期运行的服务,如HBase等

EMR支持如下的大数据组件:

1572490498114993.png

分析-Kinesis

Kinesis是AWS提供的一款流分析工具,可以基于Kinesis来完成相关流计算业务,同时Kinesis也可以作为一款消息队列来存在,用于削峰、解耦等

1572490544307763.png

1572490544235771.png

总结

AWS为我们提供了许许多多实用的产品和解决方案,可以让业务不依赖任何一台云服务器。

目前,上云是一句流行语,也是一个大势,大家可以多了解了解云产品,开拓眼界。


相关阅读