更新時間:2019-10-16 來源:黑馬程序員 瀏覽量:
目前云平臺逐漸火熱起來,國內(nèi)如:阿里云、騰訊云、華為云等平臺,國外如:AWS、Azure、Google GCP等平臺,都有不少用戶,并在持續(xù)的增加中。
特別是在大數(shù)據(jù)領域,主流的云平臺均提供了相應的解決方案,從分布式存儲到分布式計算,從批處理框架到流式計算,從ETL到數(shù)據(jù)管道,從BI分析到數(shù)據(jù)挖掘等等方面均有對應的產(chǎn)品來解決企業(yè)的需求。
我們有必要對云平臺增加一定的了解,并最好能上手嘗試一番,對我們提升眼界思維有很大幫助。
本篇文章就給大家?guī)碇髁髟破脚_中的AWS平臺的相關介紹。
一、 什么是AWS
官方介紹:
AWS 全稱Amazon web service(亞馬遜網(wǎng)絡服務),是亞馬遜公司旗下云計算服務平臺,為全世界各個國家和地區(qū)的客戶提供一整套基礎設施和云解決方案。
AWS面向用戶提供包括彈性計算、存儲、數(shù)據(jù)庫、物聯(lián)網(wǎng)在內(nèi)的一整套云計算服務,幫助企業(yè)降低IT投入和維護成本,輕松上云
從概念是來看,AWS提供了一系列的托管產(chǎn)品,幫助我們在沒有物理服務器的情況下,照樣可以正常完成軟件開發(fā)中的各種需求,也就是我們常說的云服務。
比如,從存儲來說,AWS提供了S3 作為對象存儲工具,可以幫助我們存儲大量的數(shù)據(jù),并且S3可以被AWS的其他服務所訪問。
從服務器資源來說,AWS提供了EC2作為虛擬化的云服務器,提供各種類型的主機,如計算型、通用型、內(nèi)存計算型、GPU計算型,等等來滿足業(yè)務對服務器的需要。
在數(shù)據(jù)庫方面,AWS提供了如RDS(包含Mysql、MariaDB、Postgresql)作為關系型存儲以及分布式大型關系型數(shù)據(jù)庫Aurora,同時提供了多種Nosql數(shù)據(jù)庫,如DynamoDB等,以及數(shù)倉如RedShift。
AWS在各個方面的業(yè)務需求上,都有對應的產(chǎn)品或者整體的解決方案存在,并且這些產(chǎn)品或者方案都有一個特點,就是全部不需要使用者有任何物理資源,所有的業(yè)務統(tǒng)統(tǒng)在AWS上運行,使用者只需要有一天電腦去登錄AWS去進行管理操作即可,同時也簡化了許多運維的工作量,比如監(jiān)控、報警等方面,AWS自身就已經(jīng)集成了很豐富的監(jiān)控報警功能。
二、AWS上提供的主要功能模塊
如上三個圖,我們可以看出,AWS提供了許許多多的功能模塊以對應各種不同的業(yè)務需求
就以計算來舉例:
在AWS的計算模塊中,除了最常見的EC2(Elastic Compute Cloud),也就是云上的虛擬機,除了EC2外,AWS提供了諸如:
LAMBDA: 用于提供開發(fā)ServerLess Application,支持Java、Python、Go等主流語言
ECR:Amazon Elastic Container Registry,用于管理容器鏡像的服務,類似容器倉庫的概念
ECS:Amazon Elastic Container Service,AWS自身提供的容器編排服務
EKS:Elastic Kubernetes Service,運行在云上的,AWS提供的Kubernetes技術
Lambda:云上運行代碼,無需顧慮服務器。只需要關系業(yè)務邏輯編寫代碼即可,編寫好之后提交給Lambda代碼可以直接運行,不需要服務器,也不需要安裝環(huán)境。
還有一些其他的計算模塊中的服務,就不一一列舉了(國內(nèi)用不了)。
可以看出,AWS在每一個模塊下,都提供了很豐富的產(chǎn)品來供用戶選擇使用。
使用AWS可以做到,不依賴任何任何一臺物理服務器就能支撐起全公司所有的業(yè)務。
AWS是十分強大的,目前在全球云平臺的占有率也是處于No.1的序列,其相當于引領著云平臺的定義。
我們主要挑選一些最常使用的服務來給大家介紹一下。【推薦了解大數(shù)據(jù)培訓課程】
三、AWS中一些常用服務介紹
計算-EC2:
EC2可以說是AWS平臺上最核心、最基礎的服務了,其全稱Elastic Compute Cloud: 彈性云計算。
EC2簡單來說,就是提供了云上的虛擬服務器,用戶可以按照需求選擇如:
1. 內(nèi)存計算型(強調(diào)內(nèi)存性價比)
2. 通用型(均衡性價比)
3. 計算型(強調(diào)CPU性價比)
4. GPU計算型(提供高性能GPU)
5. 存儲優(yōu)化型(強調(diào)存儲性價比)
除了大類型上可以選擇,也可以選擇小類型(CPU、內(nèi)存配置),如下圖:
提供了多種類型的CPU和內(nèi)存的組合供我們選擇,最高可以選擇到128vCPU核心,4TB內(nèi)存的級別。除了性能配置外,EC2同時支持選擇多種操作系統(tǒng)來部署,如:
同時,EC2也可以搭配如VPC(虛擬網(wǎng)絡),AMI(鏡像),快照,安全組(防火墻),負載均衡器等各種服務搭配使用
總的來說,EC2 就相當于一個云上的虛擬機軟件,可以幫我們創(chuàng)建服務器,部署操作系統(tǒng),管理網(wǎng)絡,拍攝快照,配置防火墻等等工作。
存儲-S3
S3:Amazon Simple Storage Service,是一種云上的簡單存儲,是一種基于對象的存儲。我們可以把我們的數(shù)據(jù)作為一個個對象存儲在S3中。
并且,S3可以被AWS中其他的服務所訪問,甚至我們部署的Hadoop、Spark等程序都可以正常的訪問S3的數(shù)據(jù)。
S3作為存儲,和服務器進行了隔離,原本我們做分布式存儲如HDFS,都是依賴具體的服務器硬件的,但是使用S3,就不再需要了,它就相當于AWS提供的一款分布式、超大容量的網(wǎng)盤程序
T1:使用S3,我們可以將存儲的計算資源進行分離,比如我們可以在需要計算的時候,臨時創(chuàng)建幾個EC2,去加載S3數(shù)據(jù),運行程序計算結果,得到結果后,就可以刪除EC2了,最大程度提供資源利用率,不需要計算的時候,讓計算資源不再閑置,或者說,需要計算資源的時候再去創(chuàng)建即可。
數(shù)據(jù)庫
RDS
RDS全稱:Amazon Relational Database
Service,也就是亞馬遜關系型數(shù)據(jù)庫服務。是一種托管的云數(shù)據(jù)庫,可以為我們提供云上的Mysql、Postgresql、MariaDB、Aurora(分布式關系型數(shù)據(jù)庫)等多種關系型數(shù)據(jù)庫。使用RDS,用戶只需要關系去使用它即可,而無需關心如:安裝、部署、維護、監(jiān)控、報警等一系列操作。這些操作AWS全部幫我們自動化完成,我們只需要關心業(yè)務邏輯去操作數(shù)據(jù)庫即可。
DyanmoDB
DynamoDB是一款托管的NoSQL數(shù)據(jù)庫,是Key-Value型的列式數(shù)據(jù)庫,由AWS自行研發(fā),類似HBase。
其提供了多種語言的API幫助客戶開發(fā)程序,同時將性能劃分為一個個容量單位,由預算來決定性能,最大限度節(jié)省預算。
同RDS一樣,使用托管的DynamoDB,客戶同樣只需要關心使用即可,而無需關心如維護、安裝、報警、監(jiān)控、部署等一系列操作。
RedShift
RedShift是AWS提供的一款云上的托管的數(shù)據(jù)倉庫產(chǎn)品。其底層基于Postgresql開發(fā),兼容Postgresql的一些標準,可以使用JDBC連接。
計算-LAMBDA
Lambda是一款神器,目前微服務十分流行,Lambda可以構建復雜的微服務系統(tǒng)架構,同時也可以用來構建ServerLess 類型的Application
Lambda簡單來說就是,編寫好代碼,提交給Lambda即可運行,無需顧慮服務器。
聯(lián)網(wǎng)和內(nèi)容分發(fā)-API Gateway
Amazon API Gateway 可幫助開發(fā)人員創(chuàng)建和管理在 Amazon EC2、AWS Lambda 或任何可公開尋址的 Web 服務上運行的后端系統(tǒng)的 API。利用 Amazon API Gateway,您可以為您的 API 生成自定義客戶端 SDK,以便將后端系統(tǒng)連接到移動、Web 和服務器應用程序或服務
通俗來說,我們可以認為API Gateway就是一款托管在云上的Nignx、Tomcat等中間件。
API Gateway 可以配合上面提到的Lambda,來提供RESTful形式的接口。
分析-EMR
EMR也是一款重磅產(chǎn)品,對我們大數(shù)據(jù)開發(fā)人員意義重大,其可以幫助我們快速的構建起一個大數(shù)據(jù)集群,只需要鼠標點擊幾下即可創(chuàng)建。
EMR提供兩種類型的集群:
1. 步驟運行集群
2. 長久運行集群
對于步驟運行集群,我們可以創(chuàng)建一個特定的集群,分配特定EC2來運行集群,給定一個集群創(chuàng)建成功后的運行步驟。那么在集群創(chuàng)建好之后,EMR會自動運行我們提供的步驟,運行結束后,會自動關閉此集群,刪除對應的EC2資源。
比如:我們可以寫一個Spark任務,從S3讀取數(shù)據(jù),并將結果存放到S3中,那么可以將這個任務提交給EMR步驟運行集群,那么其流程就是:
1. 預配置:比如勾選需要多少個EC2,EC2是什么類型,Spark任務在哪里
2. 預配置完成后,EMR就會創(chuàng)建對應的EC2,然后在對應EC2上部署集群
3. 集群部署完成后,運行我們提交的Spark任務
4. Spark任務運行完成后,EMR關閉集群,刪除EC2
那么假設我們的任務運行了2個小時,提供了10個4核心8GB內(nèi)存的EC2,那么我們消耗的成本就只有這10臺EC2 運行2小時的金額。
而對于以前的機房集群來說,在不運行任務的時候,其也在持續(xù)的消耗成本(房租、電、網(wǎng)、運維等)
同時對于這樣的集群我們還可以動態(tài)拓展其性能,我們勾選了10個EC2 運行了2小時完成,
那么一般來說我們可以勾選20個EC2,來讓任務在1小時完成,那么成本和10個EC2 2小時完成是差不多的
這樣對于企業(yè)來說可以最大限度的節(jié)省資金同時提高性能,
對于機房集群來說,擴容是一個大事情,但是對于EMR來說,就非常輕松。
對于長久運行集群
EMR在創(chuàng)建好集群后,就讓集群一直運行下去,除非我們手動關閉,EMR不會自動關閉集群刪除EC2
適合我們部署長期運行的服務,如HBase等
EMR支持如下的大數(shù)據(jù)組件:
分析-Kinesis
Kinesis是AWS提供的一款流分析工具,可以基于Kinesis來完成相關流計算業(yè)務,同時Kinesis也可以作為一款消息隊列來存在,用于削峰、解耦等。
四、總結
AWS為我們提供了許許多多實用的產(chǎn)品和解決方案,可以讓業(yè)務不依賴任何一臺云服務器。
目前,上云是一句流行語,也是一個大勢,大家可以多了解了解云產(chǎn)品,開拓眼界。