最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)分析師擴(kuò)展技能之「ELK」技術(shù)棧

2020-02-13 22:23 作者:愛數(shù)據(jù)分析社區(qū)  | 我要投稿


在頭部互聯(lián)網(wǎng)公司,一般會(huì)有成熟的建模開發(fā)流程和工具:

  1. 打開數(shù)據(jù)集市,選擇要需要的報(bào)表,申請(qǐng)權(quán)限(如果沒有現(xiàn)成的報(bào)表,甚至可以提需求給數(shù)倉團(tuán)隊(duì)進(jìn)行開發(fā))。

  2. 數(shù)據(jù)計(jì)算平臺(tái)上進(jìn)行數(shù)據(jù)的計(jì)算、匯總、分析、建模,根據(jù)需要還可以自己寫一些 UDF(UserDefined Function),拓展數(shù)據(jù)的計(jì)算方法。

  3. 在報(bào)表平臺(tái)上實(shí)現(xiàn)數(shù)據(jù)的日級(jí)更新、展示。

  4. 利用郵件、通訊工具,對(duì)部分報(bào)表內(nèi)容(如告警、業(yè)務(wù)指標(biāo)等)進(jìn)行自動(dòng)推送。

其中,第2步是每天的主要工作,有時(shí)候你會(huì)是 Sql boy,有時(shí)候又變身 TF boy (TensorFlow)。其他步驟都是傻瓜式操作。

但是,在其他大部分公司,比如初創(chuàng)公司或者傳統(tǒng)行業(yè),你可能會(huì)倒在第一步——你負(fù)責(zé)的是一個(gè)新上線不久的業(yè)務(wù),數(shù)據(jù)還處在日志階段,或者運(yùn)氣稍微好點(diǎn),有人幫你扔到了ES中......

雖然你精通前沿算法、復(fù)現(xiàn)過頂會(huì),但此時(shí)拿不到現(xiàn)成數(shù)據(jù),沒有流程化的工具,沒有可展示的面板,只能感嘆心有余而力不足......

本系列將為你推薦一些邊緣但很重要技能,邊緣不是技能本身邊緣,而是相對(duì)算法從業(yè)人員來說不是那么常用,但關(guān)鍵時(shí)候卻非常重要。

本文介紹的是 ELK,掌握ELK,你可以快速把原始的日志數(shù)據(jù)整合起來。如果數(shù)據(jù)還在日志階段,你可以自己搭建一個(gè)日志分析系統(tǒng);如果數(shù)據(jù)已經(jīng)存入ES(大部分公司至少能達(dá)到這個(gè)要求),你可以直接用Python從ES中拿數(shù)據(jù)進(jìn)行分析,然后在Kibana上展示。

1. 什么是ELK


ELK 是 Elasticsearch、Logstash、Kibana的簡(jiǎn)稱,ELK stack可以讓你快速方便的搭建一個(gè)數(shù)據(jù)處理系統(tǒng),如果你是一個(gè)單兵作戰(zhàn)的算法同學(xué),使用ELK快速啟動(dòng)工作,是個(gè)不錯(cuò)的選擇。這三個(gè)工具的功能如下:

  • Logstash:提供日志或者其他源數(shù)據(jù)的匯總、轉(zhuǎn)換、發(fā)送。

  • ElasticSearch:是一個(gè)高擴(kuò)展的分布式全文檢索引擎,近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù),所以也越來越被當(dāng)作數(shù)據(jù)庫來使用。

  • Kibana:是一個(gè)分析和可視化的平臺(tái),對(duì)于存在ES(ElasticSearch)中的數(shù)據(jù),可以用Kibana來進(jìn)行搜索、查看、甚至一些分析計(jì)算。

看完這3個(gè)介紹,一個(gè)數(shù)據(jù)處理的方案就浮現(xiàn)在了腦海中:

Logstash讀取日志數(shù)據(jù),并進(jìn)行加工匯總,發(fā)送到ES中進(jìn)行存儲(chǔ),再用Kibana對(duì)數(shù)據(jù)進(jìn)行加工、分析展示。需要深度分析的,可以用Python對(duì)ES的數(shù)據(jù)進(jìn)行讀取,分析,在Python中再進(jìn)行深度分析。
下面就具體場(chǎng)景,來介紹一下分別如何使用ELK的工具。


2. logstash 做數(shù)據(jù)管道
(1)介紹
Logstash 在 ELK 中主要承擔(dān)數(shù)據(jù)管道的角色,Logstash 包含語句包含三個(gè)部分:input 指定讀取數(shù)據(jù)源,filter 中對(duì)數(shù)據(jù)進(jìn)行處理加工,output 指定發(fā)送目的地。

(2)安裝

無論是windows 還是Linux,官網(wǎng)(https://www.elastic.co/cn/downloads/logstash)下載后直接解壓即可。然后在控制臺(tái)進(jìn)入 /bin 目錄下進(jìn)行命令操作。

(3)使用

在配置文件中,編寫規(guī)則對(duì) input-filter-output 進(jìn)行操作,然后執(zhí)行配置文件。配置文件的結(jié)構(gòu)示例如下:

在filter部分,我們可以用規(guī)則工具來對(duì)數(shù)據(jù)進(jìn)行過濾、清洗等處理工作,常用的有:

  • date:日期解析

  • mute:字段拆分、重命名、刪除、替換等

  • grok:正則解析提取

(4)例子

比如我們有一個(gè)csv文件 login-log.csv 記錄了某APP的登陸日志:

現(xiàn)在想通過 logstash 導(dǎo)入到 ES 中去,但是字段 loginTime 想拆分成2個(gè):date(日期)和 time(時(shí)間),在/bin下面建立配置文件 logstash.conf,代碼如下:

簡(jiǎn)單說明一下:

  • input 中的?start_position=>"beginning"?表示從頭處理;sincedb_path=>"NUL"?表示禁用 sincedb 機(jī)制。sincedb機(jī)制意味著運(yùn)行時(shí)會(huì)記錄 logstash 的處理進(jìn)度進(jìn)行記錄,如果不禁用,下次啟動(dòng)時(shí)不會(huì)再從頭處理。這是windows的禁用寫法,如果是linux則是?sincedb_path=>"/dev/null"

  • filter 的第一個(gè) mute 拆分了 loginTime 字段,并將日期和時(shí)間分別賦給新增的字段 date 和 time;第二個(gè)mute 刪除 loginTime 字段

  • output 將數(shù)據(jù)輸出到 ES 中

在控制臺(tái)中執(zhí)行配置文件:

結(jié)果會(huì)打印到控制臺(tái)上:

數(shù)據(jù)已經(jīng)到 ES 上,下面該 ES 出場(chǎng)了。

3. ES 做數(shù)據(jù)存儲(chǔ)


(1)介紹

是一個(gè)高擴(kuò)展的分布式全文檢索引擎,近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù),所以也越來越被當(dāng)作數(shù)據(jù)庫來使用。ES 可以存儲(chǔ)數(shù)據(jù),可以無縫在 Kibana 上進(jìn)行可視化展示,也可以拉到 Python 中進(jìn)行一些分析加工。


了解一下它的一些基本概念:

  • Index(索引):索引可以簡(jiǎn)單理解為是數(shù)據(jù)的表名

  • Cluster(集群):ES 可以運(yùn)行在多臺(tái)相互協(xié)作的服務(wù)器上,這些服務(wù)器集合叫集群

  • Node(節(jié)點(diǎn)):集群中的每個(gè)服務(wù)器叫節(jié)點(diǎn)

  • shard(分片):一份索引數(shù)據(jù)如果很大,在查詢時(shí)可能無法足夠快的響應(yīng),我們把這份數(shù)據(jù)分成很多數(shù)據(jù)小塊,存儲(chǔ)在集群的不同服務(wù)器中,這個(gè)數(shù)據(jù)小塊就是分片。查詢時(shí),ES會(huì)把查詢發(fā)送給每個(gè)相關(guān)的分片,并將結(jié)果進(jìn)行匯總,大大提高速度。

  • replica(副本):副本是分片的復(fù)制,主分片和副本不會(huì)出現(xiàn)在同一個(gè)節(jié)點(diǎn)上,當(dāng)主分片丟失時(shí),集群將副本提升為新的主分片。

(2)安裝

無論是windows 還是Linux,官網(wǎng)(https://www.elastic.co/cn/downloads/elasticsearch)下載后直接解壓即可。然后在控制臺(tái)進(jìn)入 /bin 目錄下進(jìn)行命令操作。啟動(dòng) elasticsearch 集群:

如果是在本地解壓,解壓完在瀏覽器輸入 http://localhost:9200/ 查看ES情況:

集群已經(jīng)啟動(dòng)。

(3)例子前面 logstash 部分,已經(jīng)將數(shù)據(jù)輸出到了 ES 中,當(dāng)時(shí)設(shè)置的 index 名字是 login-log,打開 http://localhost:9200/_cat/indices?v 看一下目前 ES 中的index:


數(shù)據(jù)已經(jīng)存進(jìn)去了,至于數(shù)據(jù)長(zhǎng)什么樣,怎么查看,以及修改,我們?cè)?Kibana 中介紹。


4. Kibana?做數(shù)據(jù)展示(變身 Sql?Boy)


(1)介紹

Kibana 是為 Elasticsearch 設(shè)計(jì)的分析和可視化平臺(tái)。


(2)安裝

無論是windows 還是Linux,官網(wǎng)(https://www.elastic.co/cn/downloads/kibana)下載后直接解壓即可。然后在控制臺(tái)進(jìn)入 /bin 目錄下進(jìn)行命令操作。啟動(dòng) Kibana:

輸入 http://localhost:5601/?打開 kibana:


之前 login-log 的數(shù)據(jù)已經(jīng)導(dǎo)入到 ES 中去了,所以直接選擇 explore on my own:

下面就進(jìn)入了 Kibana,結(jié)合之前導(dǎo)入的 login-log 數(shù)據(jù),看一下 Kibana 的基本展示功能。


(3)例子

  • create?index pattern

進(jìn)入 Kibana 之后,要先進(jìn)入 management - Kibana - Index patterns,把ES 里的數(shù)據(jù) create 到 Kibana 上,按提示操作即可:


  • discover

discover 中可以查看數(shù)據(jù)?case

  • Visualize

Visualize 中可以做一些可視化圖表

  • Dashboard

Dashboard 將 Visualize 中的圖表合成一個(gè)報(bào)表。不過比較丑,就不展示了。


  • Canvas

Canvas 實(shí)際也是一個(gè) Dashboard,不同的是可以自由的進(jìn)行畫圖,像 PPT 一樣,數(shù)據(jù)是通過類似 SQL 語句進(jìn)行查詢展示:

5. Python讀取ES數(shù)據(jù)分析(變身 TF Boy)


通過 Python 的 elasticsearch 庫,我們可以將 ES 里的數(shù)據(jù)拖到 Python 中進(jìn)行修改、分析、建模等處理,處理好的數(shù)據(jù)可以再存入 ES 中。下面介紹一下基本操作語句:


  • 讀取 ES 中的 index 數(shù)據(jù)

es.search()?讀取 ES 數(shù)據(jù),注意每次最多只能讀取1W條,另外通過body語句可以篩選讀取。

以 login-log 這個(gè) index 為例拉取后的數(shù)據(jù)如下:


  • 將讀取的數(shù)據(jù)轉(zhuǎn)化成 pandas 的 Dataframe

拉取的數(shù)據(jù)在 rawData['hits']['hits'] 中的_source字段里面,我們轉(zhuǎn)化為 Dataframe:

  • 數(shù)據(jù)寫入 ES

數(shù)據(jù)在 Python 中分析完之后,需要轉(zhuǎn)成 json 格式,再寫入 ES 中。我們寫入一個(gè)新的 index new-index 中。

es 中寫入了新的index:

end.

作者:數(shù)說君.

想了解更多數(shù)據(jù)分析內(nèi)容請(qǐng)掃描下方二維碼


數(shù)據(jù)分析師擴(kuò)展技能之「ELK」技術(shù)棧的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
将乐县| 航空| 黑河市| 罗田县| 莱阳市| 高台县| 安吉县| 光山县| 沐川县| 沈阳市| 喜德县| 清涧县| 天祝| 芷江| 金秀| 象山县| 唐河县| 吴川市| 丹寨县| 定西市| 临夏县| 竹山县| 德江县| 涿州市| 乌鲁木齐市| 突泉县| 磐安县| 石台县| 巨鹿县| 衡南县| 休宁县| 正蓝旗| 大埔县| 云和县| 安岳县| 黄山市| 收藏| 独山县| 绩溪县| 阳谷县| 镇远县|