1月8日,亞馬遜AWS的產品拓展經理莊富任在主題為“Amazon Kinesis實時資料分析最佳實踐分享”的在線培訓中,為我們講述了如何利用Kinesis 架構實時資料流處理和分析的能力,并透過目前最熱門的手游開發商Supercell客戶案例,來體現Kinesis如何處理和分析海量資料流(例如用戶的點擊,消費,上線等動作)。
為了幫助大家更好的復習本次培訓的相關內容,了解如何在AWS這樣的云平臺進行資料分析。CSDN整理了本次培訓最后的QA,如下:
Q1.目前Strom的社區進展緩慢,很多公司更傾向Spark記憶體計算的框架,AWS對spark有什么考慮的方案?
答: Kinesis是針對Storm的實時分析,Spark記憶體計算的一個框架,Storm和Spark還是有點不一樣的。做實時資料流的處理,如果你想用開源的話當然用Storm;如果你不想自己去做底層的運維或搭建一個類似于Storm這樣一個框架的話,那就用kinesis;如果你想用Spark記憶體計算框架,Spark是用來取代hadoopMapReduce的一個框架。對于AWS而言,EMR是支持Spark的,所以大家如果對Spark感興趣,你可以看AWS EMR的解決方案。因為spark很多實驗和架構都是在AWS云上做開發的,所以我們對Spark的支持其實挺好的。
Q2.按照您的說法,那么EC2就是采集資料?但是我在Web Service上看到,說EC2是計算,麻煩你解答一下,謝謝
答:剛剛在前面,我說EC2是用來采集資料,那這樣為什么還要用Kinesis?其實這兩個是有一樣的地方。一般傳統下如果沒有Kinesis這樣包裝好的服務來講,就需要自己找服務器、搭建服務器,EC2就是一個計算資源,就是一個服務器,你就得自己買這樣一個服務器,去搭建很多的節點做資料采集,你在上面可能會部署工具做資料采集,你可以用EC2,用開源社區的一些工具來做一些搭建,這當然沒有問題,但是,如果你想要省掉自己搭建、自己運維下面的一些平臺,Kinesis是一個更好的解決方案。
Q3.為什么讀的速度比寫的速度快,但記錄數卻少這么多?
答:吞吐量為什么有不同的差異性,我要分兩個方面來解釋:一,每秒可以處理1M的吞吐量,每秒寫入的記錄是一千個,但是讀資料的話,可以看到總量是2M/S的吞吐量,大家覺得奇怪為什么1秒只支持50的吞吐量,其實一般來講,寫的話記錄是很小的一些KB,可能是我的一個記錄是2kb或3kb,這個資料量其實是很大,需要寫入每秒的tbs要很快,我讀出來的話不需要一次讀出很多,但是讀出的總量匯集到很大的量再一次讀出來作為一個分期,不需要那么大的讀的tbs,這就是讀的和寫的一個差別。
Q4. 我想匯集一段時間的資料形成一個時間視窗,在Kinesis里面怎么做?我在記憶體里面快取的資料Kinesis能夠保證不丟失嗎?
答:剛剛有提到,前面的資料進來后能在資料里面形成一個時間視窗,那過一段時間資料累計到一個量,再讀出來。通常正確的做法是,你通常會等到一定的時間視窗,資料量匯總到一定程度,你才會把它讀出來做處理。所以簡單來講你會把kinesis作為一個緩沖,一個buffer。我可以保證,在這個buffer中資料不會丟失。我們是在三個資料中心中作資料備份,所以你不會擔心資料會丟失。唯一你要注意的是,我這個資料的視窗只有24小時的時間,所以你不能等到24小時時間后再去處理,因為我們這個資料視窗只能保留24個小時,這個非常重要!
Q5.Kinesis如果實作實時Join的功能?
答:很多問題問到,我們是怎么實作不同應用程式上的資料處理。其實這都是一個邏輯的問題。我剛才提到,Kinesis在將資料讀出來后,你需要寫應用程式來把收集上來的資料進行處理。寫這樣的應用程式目前我們支持的就是用Java和Python這樣的語言去寫。Java和Python的一些簡單的計算的函式都可以用。所以,如果想做加減乘除或一個資料的聚合、分析,你都可以通過應用程式內部的邏輯來處理。這些都是由寫應用程式的人來控制的。
Q6.相比Storm的框架,Kinesis中每個shard分片,是否類似tuple元組,可由worker/blot來定義好處理格式?
答:也有人說Strom的架構也會做一些分片的設計,但處理格式來講的話,目前其實……我不知道這位朋友問到的“處理格式”是什么。因為處理格式是前端進來的,這6個你要怎么樣去做。你后面要怎么去處理,去定義,都是由我們剛才講的Worker來做,shard只是用來當做資料流的一個buffer。
Q7.使用Redshift,如果要在線擴容,需要在新集群中停止寫資料,現在有什么方法能實作擴容中業務的透明讀寫嗎?另外Redshift中只有一個Leader node做控制節點,是否存在單點故障的可能?
答:很多有興趣的朋友問到,實時的資料用kinesis收集、處理以后放在像Redshift上,是否支持不停機做一個在線擴容。可以支持不停機做一個在線擴容,這是Redshift的一個非常好的服務。傳統的物理服務器,如果是做資料倉庫使用的話,5個節點可能要擴展到10個節點,需要做一個停機,另外買5臺機器再做一個擴容。所以傳統物理機器需要停機做擴容,但是對Redshift來講你不用停機我們可以自動幫你做擴容。
Q8.歸檔的資料Glacier,還可以恢復么?Glacier是否能支持客戶直接將自己的資料盤陣(如NAS)郵寄給AWS,在使用時直接掛接到存盤系統中匯入S3?
答:就匯入到Glacier來講的話,Glacier其實可以被看做一個以前的冷備的服務,可以把它備份在一邊做一個歸檔,也可以從中把歸檔的資料再拿出來,因為是冷備的資料但是拿出來的時間要3-5個小時才能取出來,因此需要一個時間點。
Q9.Kinesis一次能處理多大容量的資料?
答:有人問到說Kinesis最多可以處理多大容量的資料。其實我剛才已經講到,看你的shard有多少個,每個shard,也就是每秒的吞吐量進來的話,就是每秒是1MB的容量。所以你可以根據前端吞吐量的需求,去擴充一個分片、兩個分片或十個分片或一百個分片…就是根據你的處理量(來擴充)。這樣的好處是我們沒有一個太大的局限你要多少個shard。如果你有這樣一個需求,我們就有這么樣一個容量。
Q10.目前Storm和Kinesis可以整合在一起嗎?
答:簡單地說Kinesis包括Storm的功能,所以說,你用Kinesis等于是取代Storm。但如果目前你已經使用Storm搭建一些東西,那也沒問題,Kinesis也可以做前端的實時資料采集,后端的計算也可以交給Storm。所以我們支持Kinesis后面接Storm,這沒有問題。當然Kinesis后面也可以接DynamoDB,我們有個連接器,也就是說很簡單(就能實作),Kinesis處理完的資料可以直接匯入到NOSQL DynamoDB。
認真聽課的同學,不妨自己動手試試,以下這篇動手實驗指南可以作為參考。
推薦文章:動手指南:使用Amazon Kinesis實作地理資料的實時可視化
uj5u.com熱心網友回復:
謝謝了,很有識訓uj5u.com熱心網友回復:
就是來換換呢。。。uj5u.com熱心網友回復:
如何利用Kinesis 架構實時資料流處理和分析的能力uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
學習了,謝謝共享。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/98751.html
標籤:AWS
上一篇:spark計算密集型
下一篇:centos 6.5 2.6內核 # docker -d & docker: relocation error: docker: symbol dm_tas
