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