在本練習中,您將學習如何使用 Amazon Kinesis 流式傳輸數據到 Elasticsearch 並進行分析,這是兩項徹底託管的基於雲的服務,用於實時傳輸大型分佈式數據流和查詢,分析等。linux
爲了使練習更加貼近實際業務場景,咱們將模擬從 EC2 的應用程序中生成交易訂單事件。redis
在此教程中,您將完成如下三個組件的實驗:json
• 建立Amazon Kinesis Data Stream
• 建立Amazon Kinesis Data Firehose
• 部署Amazon Elasticsearch緩存
本實驗的架構圖以下:安全
由於 Elasticsearch 最多隻支持 2 個表的 Join 查詢,而咱們的表有 4 個,因此爲了更好的在 Elasticsearch 裏面使用,咱們經過腳本對數據進行了必定的處理,作成了寬表的模式。bash
登陸以前部署的 EC2 客戶端,上傳這三個文件,放到一個專門的目錄下,例如/home/ec2-user/csv
下架構
https://imgs.wzlinux.com/aws/tbl_address.csvapp
https://imgs.wzlinux.com/aws/tbl_customer.csv分佈式
https://imgs.wzlinux.com/aws/tbl_product.csvide
[ec2-user@ip-172-31-77-126 csv]$ ll total 176 -rw-rw-r-- 1 ec2-user ec2-user 91306 Oct 30 09:53 tbl_address.csv -rw-rw-r-- 1 ec2-user ec2-user 75857 Oct 30 09:53 tbl_customer.csv -rw-rw-r-- 1 ec2-user ec2-user 6552 Oct 30 09:53 tbl_product.csv
登陸以前部署的 EC2 客戶端,上傳這三個文件,跟上一步的三個 csv 文件放到一個目錄下
https://imgs.wzlinux.com/aws/rds_address.sh
https://imgs.wzlinux.com/aws/rds_customer.sh
https://imgs.wzlinux.com/aws/rds_product.sh
啓動 redis 服務,安裝 unix2dos 工具
sudo amazon-linux-extras install redis4.0 -y sudo systemctl enable redis sudo systemctl start redis sudo yum install dos2unix -y
執行以下腳本導入數據到 Redis(確保導入腳本和 csv 文件在同一個目錄下)
[ec2-user@ip-172-31-77-126 csv]$ sh rds_address.sh unix2dos: converting file ./tbl_address.rds to DOS format ... All data transferred. Waiting for the last reply... Last reply received from server. errors: 0, replies: 3252 [ec2-user@ip-172-31-77-126 csv]$ sh rds_customer.sh unix2dos: converting file ./tbl_customer.rds to DOS format ... All data transferred. Waiting for the last reply... Last reply received from server. errors: 0, replies: 4336 [ec2-user@ip-172-31-77-126 csv]$ sh rds_product.sh unix2dos: converting file ./tbl_product.rds to DOS format ... All data transferred. Waiting for the last reply... Last reply received from server. errors: 0, replies: 500
登陸以前部署的 EC2 客戶端,上傳這個可執行文件(例如放到根目錄下),若是是其餘區域,請修改一下腳本。
https://imgs.wzlinux.com/aws/lab4.sh
執行腳本開始灌數據
sh lab4.sh kds-lab4 2021-03-19 &
lab4.sh 會往 kds 流裏面灌數據,格式爲
以下僅供參考
{ "tid": "D123", "tno": "DwGi20200904131249", "tdate": "2021-03-19", "uno": "U1030", "pno": "P1002", "tnum": 10, "uname": "張三", "umobile": "13800138000", "ano": "A1001", "acity": "深圳", "aname": "福田區**地址", "pclass": "MOBILE", "pname": "OPPO-Reno4", "pprice": 4999, "total": 4999, "tuptime": "2021-03-19T13:15:48Z" }
檢查 lab4 開頭的日誌文件輸出,看是否運行正常,出現以下所示截圖表示正常 表構建完畢後以下圖所示
寬表構建完畢,能夠開始在Elasticsearch裏面開始接受數據並進行實時檢索和可視化了。
本實驗演示經過 Kinesis Firehose 把流數據經過管道注入 Elasticsearch 實時檢索和可視化的過程。
登陸並打開 Elasticsearch 控制檯,確保 ES 集羣狀態是有效。
打開 Kinesis Firehose 控制檯,選擇建立傳輸流,設置傳輸流名字「lab4-kfh」,並選擇「kds-lab4」爲源
下一步不對記錄進行任何處理(選默認值),在下一步的目標裏面選擇將數據送到 Elasticsearch,並選擇咱們部署的 ES 集羣,以及數據的索引名(此處爲 lab4),以下圖所示
須要配置 S3 轉存儲一份(或保留髮送失敗的記錄),配置對應桶和路徑便可
接下來的緩衝區設置爲 1M 或者 60 秒便可(其餘所有默認)
而後選擇審覈並建立傳送流便可,可是此時 KDF 的數據流尚未權限寫入 ES,由於 ES 開啓了精細訪問控制,咱們須要登錄到 Kibana 爲 KDF 的 Role 加上對 ES 的訪問權限。
在咱們這裏,Kibana 地址爲以下,輸入咱們建立集羣時添加的 master 帳戶認證便可。
https://search-lab-es-lr5h4xkkutqsb4y6d4nvig5j2a.us-east-1.es.amazonaws.com/_plugin/kibana/
登陸 Elasticsearch 集羣后,打開安全-角色,咱們就選擇這個最高權限。
點擊 all_access,進入 Mapped users
建立角色映射,咱們把 KDF 的角色寫入到 Backend roles 裏面
點擊映射保存
點擊主菜單進入 Discover,選擇 Create index pattern
系統已經發現了 Index 爲 lab4 的相關數據,咱們直接輸入 lab4 便可(注意:若是此處看不到數據,請略微等待,若是長時間等待依然沒有數據,請確認 Kinesis Firehose 的配置是否準確)
接下來選擇tuptime
爲時間戳便可
經過選擇對應字段,咱們便可看到對應數據
接下來咱們來建立第一個可視化圖表(按時間維度查看銷售額),首先建立一個視圖
類型選擇 Vertical Bar
類型選擇 數據源
在 Y-axis 界面,aggregation下拉框選擇 sum,field 選擇 total,並備註爲總銷售額
在 Buckets 界面,點擊 add,選擇 X-axis,Aggregation 選擇 Date Histogram,Field 選擇 tuptime,Minimum 選擇默認值 Auto(由於咱們輸入數據時間較短,因此難以造成例如以天爲單位的彙總數據)
點擊更新後得到以下圖表,選擇左上角的保存
設置保存名稱:time_revenue。注意:圖表的時間線,能夠根據要求在右上角位置進行修改。
這一次咱們選擇表格的方式(取銷售額排名前10的城市,選擇表格的形式)
配置指標數據爲 total 列的和
再點擊 add,建立 split rows,Sub-aggregation 選擇 terms,fields 選擇 acity.keyword,單擊更新按鈕
得到的 Top 10 城市銷售金額表(注意:由於流數據一直在注入,因此數據會變),以下圖所示
而後點擊左上角的「save」按鈕進行保存,輸入圖表的名稱 time_city
咱們選擇用餅圖的方式來按產品維度查看
配置指標數據爲 total 列的和
結合產品分類
而且配置顯示標籤(若是未顯示標籤就只有圖,選中了標籤之後會顯示對應的備註和數據)
得到以下圖所示的餅圖(顯示Top銷量的產品分類,以及其餘的彙總),保存成:time_pclass
在上述章節的實驗過程當中,咱們建立了 3 個可視化報表
這個章節,咱們把剛纔建立的圖表作成儀表盤。點擊左側按鈕,建立 Dashboard,點擊「create new dashboard」,點擊 add 按鈕,把剛纔的三個圖表添加進來
添加已經建立好的各個圖表(並保存儀表盤,此處爲 MyLab4),效果以下
能夠根據選擇右上角不一樣的時間區間得到不一樣的實時統計結果,各位熟悉 Elasticsearch 的學員能夠按照本身喜歡的方式在 ES 裏面構建各類圖表。