1. 程式人生 > >如何在1個小時之內輕鬆構建一個Serverless 實時資料分析平臺

如何在1個小時之內輕鬆構建一個Serverless 實時資料分析平臺

資料分析平臺,特別是實時資料分析,正在被越來越廣泛的應用於各個行業。 舉例來說,遊戲公司在釋出新遊戲之後,需要實時定位使用者的留存、增長等情況;快銷公司需要精確地記錄每一筆訂單的情詳情,並結合社交媒體,實時分析促銷活動引起的使用者購買行為與銷量等等。基於這些需求, AWS提供了一整套成熟的解決方案與服務,並且得到了廣泛的應用。

圖1 AWS大資料參考架構示例

上圖中,Amazon Kinesis 是實時的流式分析服務,而Amazon S3是AWS的海量資料儲存服務。利用Kinesis與S3,我們可以十分方便的構建一個實時流式資訊資料的採集與儲存。 值得注意的是,作為Serverless計算服務的代表 , 使用者只需要編寫實現對應的ETL邏輯,Amazon Lambda就可以非常方便地對Kinesis流式資料進行抽取與分析而不需要部署任何伺服器。另外,使用者也可以使用Kinesis Firehose(Kinsis服務之一)實現原始資料的直接注入與收集。

隨著Amazon Athena在AWS re:Invent 2016的重磅釋出,AWS的大資料平臺又增添了重要的一員!Amazon Athena 是一種互動式查詢服務,使用者可以使用標準SQL 分析 Amazon S3 中的資料。因為Athena底層是基於Serverless(無伺服器)架構,使用者不需要運維底層的伺服器,並且查詢處理能力會隨著使用者的資料將進行自適應與擴充套件,實現秒級別的資料查詢與處理。

閒話少說,我們將利用AWS提供的三個重要服務——Amazon Kinesis Firehose,、Lambda和Athena在1個小時之內實現一套實時分析的Serverless資料分析平臺!

準備好了嗎?Let’s rock

1.資料來源。作為測試,我們將對AWS VPC Flow Logs進行分析。您可以使用Kinesis Agent/Flume/Fluentd或者Amazon Kinesis SDK對前端的實時日誌進行分析。Amazon VPC Flow Logs將實時記錄VPC監控的網路埠的流量與通訊日誌,並將日誌釋出於AWS CloudWatch Logs。詳細的配置請參見 https://aws.amazon.com/cn/blogs/aws/vpc-flow-logs-log-and-view-network-traffic-flows/

2.資料ETL。VPC Flow Logs進入CloudWatch Logs之後,可以利用Lambda對實時日誌進行訂閱處理。訂閱之後,Lambda會在CloudWatch Logs更新之後,自動呼叫執行,進行資料ETL。

首先,在控制檯建立一個Lambda函式(利用Python實現).為了確保Lambda有對應的執行許可權,需要賦予Lambda函式相應的Permission Role.在這個示例中,我們只需要服務Lambda對應的CloudWatch Logs以及Kinesis Firehose的許可權即可。

其次,Lambda 程式碼會對進入的CloudWatch日誌的第一個Base64編碼的轉碼並進行gzip解壓(因為Cloudwatch Logs會對送往Lambda首先進行Base64編碼並進行gzip壓縮)。之後,Lambda會對具體的日誌進行匯聚,以batch的方式傳送給Kinesis Firehose。具體的程式碼如下:

程式碼中,利用環境變數 DELIVER_STREAM_NAME 傳遞Kinesis Firehose Stream,詳見步驟3)。

最後,利用AWS CloudWatch logs的訂閱功能,就可以實時地把日誌釋出到Lambda函式中了。

aws logs put-subscription-filter \

    --log-group-name myLogGroup \

    --filter-name demo \

    --filter-pattern "" \

    --destination-arn arn:aws:lambda:us-east-1:123456789123:function:helloworld\

3.建立Kinesis Fireshose實現到S3的資料自動儲存與匯聚。Kinesis Firehose提供了自動對資料進行匯聚,目前支援S3和Redshift, ElastiSearh。這裡,我們利用控制檯,十分簡單地建立瞭如下一個Firehose Stream:

圖2 Kinesis Firehose 配置過程

4.利用Amazon Athena進行資料查詢。因為Athena底層是基於Hive Catalog對S3資料進行管理,上層基於Presto的方式進行SQL查詢。因此我們首先需要使用Hive對S3的VPC Flow Logs進行外表DDL操作。具體程式碼如下:

我們在建立表的過程中,建立了 Year,Month, Day 與Hour的分割槽,是因為我們在實現Firehose的時候自動進行了時間和日期的字首設定。同時,利用分割槽也可以大大提高hive的資料查詢效能。

到這裡,整個Serverless 處理能力自適應的架構已經構建完成,來測試一下Athena的查詢結果吧。 Athena提供了Web Console讓BI使用者可以直接對S3資料湖進行查詢,同時,使用者也可以利用JDBC直接與第三方的BI工具整合實現自動化查詢。查詢結果也可以利用CSV的檔案下載的方式直接分享給其他使用者。

圖3 利用Web Console對Athena進行資料分析

作者介紹:

肖凌

AWS解決方案架構師,負責基於AWS的雲端計算方案架構的諮詢和設計,同時致力於AWS雲服務在國內和全球的應用和推廣,在大規模併發後臺架構、跨境電商應用、社交媒體分享 、Hadoop大資料架構以及資料倉庫等方面有著廣泛的設計和實踐經驗。在加入AWS之前曾長期從事移動端嵌入式系統開發,IBM伺服器開發工程師。並負責IBM亞太地區企業級高階儲存產品支援團隊,對基於企業儲存應用的高可用儲存架構和方案有深入的研究。

相關推薦

如何在1小時之內輕鬆構建一個Serverless 實時資料分析平臺

資料分析平臺,特別是實時資料分析,正在被越來越廣泛的應用於各個行業。 舉例來說,遊戲公司在釋出新遊戲之後,需要實時定位使用者的留存、增長等情況;快銷公司需要精確地記錄每一筆訂單的情詳情,並結合社交媒體,實時分析促銷活動引起的使用者購買行為與銷量等等。基於這些需求, AWS提供了一整套成熟的解

15L的桶和一個3L的水桶怎麽量出4L的水?所帶來的思考

轉換成 一個 clas 重點 這樣的 角度 方式 去年 ava 問題:1個5L的桶和一個3L的水桶怎麽量出4L的水? 答案: 先把3L灌滿 倒進5L的桶裏 此時5L的桶裏有3L水再把3L灌滿 往5L的桶裏倒 5L的滿了以後 此時3L的桶裏還剩1L把5L桶裏的水倒掉 剛才3

如何用1小時學完 JSON?

代碼 color app employees index www. 讀取 數據 字符 W3school ↑↑↑學這個,1個小時夠了。下面是節選: 代碼例子1: 1 <html> 2 <body> 3 <h2>在 JavaSc

找出1小時前更新的文件並進行拷貝

reload etime == oat host system HA usr data 找出1個小時前更新的文件並進行拷貝: 註:1、根據時間戳判斷,非60分鐘2、os.makedirs遞歸創建目錄路徑 vi a1.py #!/usr/bin/python#coding=u

1開發如何撐起一個過億使用者的小程式

2018年12月,騰訊相簿累計使用者量突破1億,月活1200萬,阿拉丁指數排行 Top 30,已經成為小程式生態的重量級玩家。 三個多月來,騰訊相簿圍繞【在微信分享相簿照片】這一核心場景,快速優化和新增一系列社交化功能,配合適當的運營,實現累計使用者量突破1億,大大超過預期。 (騰訊相簿使用者量

統計指定介面指定的時間點1小時內的呼叫次數

sed -n '/01\/Oct\/2018:00/, /01\/Oct\/2018:00/p' 211_10.log | grep '/api/ctrip/nowWeather' | wc -l 日誌檔案211_10.log    統計介面/api/ctrip/nowWeather

12球有1重量不同,給你一個沒法碼的天秤,只能稱3次把它找出來

先將球分三組,每組四個,記為A,B,C。 將A,B放在天平兩端(第一次)。有兩種結果: 一、結果一,平衡,那異常的在C組。 1、取A組的三個放在一端,C組的三個C1C2C3放在一端(第二次)。 2、平衡:C4異常,把C4和A組的一個稱一次就知道C4是輕還是重了。 3、不平衡:已經確定C1C2C3中的一個是異常

一道演算法題:12黑球和1白球圍成一個

問題: 桌上有12個黑球和1個白球圍成一個圓,按順時針方向順序數到13就拿走對應的一個球, 如果要求最後拿走的是白球,請問該從哪個球開始數數。 分析: 從最後一輪開始考慮,按輪次倒推。可以用遞迴法

輕鬆構建基於 Serverless 架構的彈性高可用音視訊處理系統

前言 隨著計算機技術和 Internet 的日新月異,視訊點播技術因其良好的人機互動性和流媒體傳輸技術倍受教育、娛樂等行業青睞,而在當前, 雲端計算平臺廠商的產品線不斷成熟完善, 如果想要搭建視訊點播類應用,告別刀耕火種, 直接上雲會掃清硬體採購、 技術等各種障礙,以阿里云為例: 這是一個非常典型的解決方

一個按鈕提交兩form表單,分別提交到兩action裡,第一個form的資料丟失

--背景 在一個iframe開啟的窗口裡,有兩個需要提交的form,而且需要提交到不同的兩個action裡,正常操作下丟失第一個form的資料 --解決方法 在這兩個form下新增一個新的iframe標籤<iframe id = "這個id要與這個視窗的iframe的id不同"&g

小時建立資料分析平臺

今天教大家如何搭建一套資料分析平臺。 它可能是最簡單的搭建教程,有一點Python基礎都能完成。比起動輒研發數月的成熟系統,藉助開源工具,整個時間能壓縮在一小時內完成。 優秀的資料分析平臺,首先要滿足資料查詢、統計、多維分析、資料報表等功能。可惜很多分析師,工作的第一年,都是埋葬在SQL語句中,以SQL+Ex

DataPipeline丨構建實時資料整合平臺時,在技術選型上的考量點

文 | 陳肅 DataPipeline  CTO 隨著企業應用複雜性的上升和微服務架構的流行,資料正變得越來越以應用為中心。   服務之間僅在必要時以介面或者訊息佇列方式進行資料互動,從而避免了構建單一資料庫叢集來支撐不斷增長的業務需要。以應用為中心的資料持久化架構,在帶來可伸縮性好

基於分散式關係型資料庫,實現輕鬆應對百億級資料分析場景解決方案

MyCat是什麼? 從定義和分類來看,它是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作

如何構建批流一體資料融合平臺的一致性語義保證?

本文根據陳肅老師在 Apache Kafka x Flink Meetup 深圳站的分享整理而成,文章首先將從資料融合角度,談一下 DataPipeline 對批流一體架構的看法,以及如何設計和使用一個基礎框架。其次,資料的一致性是進行資料融合時最基礎的問題。如果資料無法實現一致,即使同步再快,支援的功能

4小時實現一個HTML5音樂播放器

同時 status parseint [0 ads 發布 大致 了解 mps 技術點:ES6+Webpack+HTML5 Audio+Sass 這裏,我們將一步步的學到如何從零去實現一個H5音樂播放器。 首先來看一下最終的實現效果:Demo鏈接 接下來就步入正題: 要

java程序中如何為一個while(true)循環計時,超過一定時間比如10小時就退出循環?

blog true public color sys ava work log 如何 public void execute(int hour){ long t1 = System.currentTimeMillis(); while

100線程同時向一個銀行賬戶中存入1元錢

事情 調整 ice r12 同步機制 狀況 private nta tst 下面的例子演示了100個線程同時向一個銀行賬戶中存入1元錢,在沒有使用同步機制和使用同步機制情況下的執行情況。 銀行賬戶類: 1 2 3 4 5 6 7 8 9 10 11 12 1

1分鐘學會4PPT高效小技巧,3小時才能完成的工作5分鐘搞定~

製作PPT總是要花費巨長的時間?看過來~用1分鐘學會4個PPT高效小技巧,3個小時才能完成的工作5分鐘搞定,效率就是這麼高~   1.一秒去動畫 操作:幻燈片放映—設定幻燈片放映—放映時不加動畫   2.摳圖去背景 操作:選中圖片—圖片格式—刪

Java:寫2執行緒,其中一個執行緒列印1-52,另一個執行緒列印A-Z,列印順序應該是12A34B56C...5152Z。

寫2個執行緒,其中一個執行緒列印1-52,另一個執行緒列印A-Z,列印順序應該是12A34B56C...5152Z   多執行緒程式設計:使用Runnable介面例項建立執行緒。使用執行緒等待方法wait(); package com.java瘋狂講義; public

[Hadoop 1] 構建一個單節點叢集

目的 能夠快速的在一單個節點上構建和配置 Hadoop,使用 MapReduce 和 Hadoop Distributed File System(HDFS)來執行簡單的操作。 準備 支援平臺 建議使用 GNU/Linux 作為開發和執行平臺。 所需軟體 Linux