中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Apache Spark 實(shí)現(xiàn)可擴(kuò)展日志分析,挖掘系統(tǒng)最大潛力

2019-05-06    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

幾乎每個(gè)大大小小的組織都有多個(gè)系統(tǒng)和基礎(chǔ)設(shè)施日復(fù)一日地運(yùn)行。為了有效地保持業(yè)務(wù)運(yùn)行,組織需要知道他們的基礎(chǔ)設(shè)施是否發(fā)揮了最大潛力。這包括分析系統(tǒng)和應(yīng)用程序日志,甚至可能對(duì)日志數(shù)據(jù)應(yīng)用預(yù)測(cè)分析。

 

 

引言

現(xiàn)如今,在利用分析的案例中,日志分析是最流行、最有效的企業(yè)案例之一。幾乎每個(gè)大大小小的組織都有多個(gè)系統(tǒng)和基礎(chǔ)設(shè)施日復(fù)一日地運(yùn)行。為了有效地保持業(yè)務(wù)運(yùn)行,組織需要知道他們的基礎(chǔ)設(shè)施是否發(fā)揮了最大潛力。這包括分析系統(tǒng)和應(yīng)用程序日志,甚至可能對(duì)日志數(shù)據(jù)應(yīng)用預(yù)測(cè)分析。根據(jù)運(yùn)行在上面的組織基礎(chǔ)設(shè)施和應(yīng)用程序的類型,日志數(shù)據(jù)的數(shù)量通常是巨大的。以前,由于計(jì)算資源限制,我們只能在一臺(tái)機(jī)器上分析數(shù)據(jù)樣本,這種日子已經(jīng)一去不復(fù)返了。

 

 

在大數(shù)據(jù)、更好的分布式計(jì)算、大數(shù)據(jù)處理和 Spark 等開源分析框架的支持下,我們每天可以對(duì)潛在的數(shù)百萬乃至數(shù)十億條日志消息執(zhí)行可擴(kuò)展的日志分析。本教程面向案例研究,目的是采用一種實(shí)際操作的方法,展示如何利用 Spark 在半結(jié)構(gòu)化日志數(shù)據(jù)上執(zhí)行大規(guī)模日志分析。如果你對(duì)使用 Spark 的可擴(kuò)展 SQL 感興趣,請(qǐng)查閱Spark 上的大規(guī)模 SQL。

本文將主要探討以下幾個(gè)主題。

主要目標(biāo)——NASA 日志分析

設(shè)置依賴項(xiàng)

加載和查看 NASA 日志

數(shù)據(jù)清理

Web 日志數(shù)據(jù)分析

盡管有很多優(yōu)秀的開源框架和工具可以用于日志分析,包括 ElasticSearch,但本教程的目的是展示如何利用 Spark 對(duì)日志進(jìn)行大規(guī)模分析。在現(xiàn)實(shí)世界中,你可以在分析日志數(shù)據(jù)時(shí)自由選擇你的工具箱。讓我們開始吧!

主要目標(biāo)——NASA 日志分析

正如我們前面提到的,Apache Spark 是一個(gè)優(yōu)秀的、理想的開源框架,用于結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)清理、分析和建模——大規(guī)模的!在本教程中,我們的主要目標(biāo)是關(guān)注業(yè)界最流行的案例研究之一——日志分析。通常,服務(wù)器日志是企業(yè)中非常常見的數(shù)據(jù)源,是常常包含可操作見解和信息的金礦。企業(yè)中的日志數(shù)據(jù)有許多來源,比如 Web、客戶端和計(jì)算服務(wù)器、應(yīng)用程序、用戶生成的內(nèi)容、平面文件。它們可以用于監(jiān)視服務(wù)器、改進(jìn)業(yè)務(wù)和客戶智能、構(gòu)建推薦系統(tǒng)、欺詐檢測(cè)等等。

 

 

Spark 讓你能以很低的成本將日志轉(zhuǎn)儲(chǔ)并存儲(chǔ)在磁盤上的文件中,同時(shí)提供豐富的 API 來執(zhí)行大規(guī)模的數(shù)據(jù)分析。這個(gè)實(shí)踐案例研究將向你展示如何在 NASA 的實(shí)際生產(chǎn)日志上使用 Apache Spark,并學(xué)習(xí)數(shù)據(jù)清理和探索性數(shù)據(jù)分析中基本但強(qiáng)大的技術(shù)。在本案例研究中,我們將分析來自佛羅里達(dá)州 NASA 肯尼迪航天中心 Web 服務(wù)器的日志數(shù)據(jù)集。完整的數(shù)據(jù)集可以在這里免費(fèi)下載。

這兩個(gè)數(shù)據(jù)集包含了佛羅里達(dá)州 NASA 肯尼迪航天中心 WWW 服務(wù)器上兩個(gè)月內(nèi)的所有 HTTP 請(qǐng)求。你可以到網(wǎng)站下載以下文件(或直接點(diǎn)擊以下鏈接)。

7 月 1 日到 7 月 31 日,ASCII 格式,gzip 壓縮 20.7MB,未壓縮 205.2MB:ftp://ita.ee.lbl.gov/traces/NASA_access_log_Jul95.gz

8 月 4 日到 8 月 31 日,ASCII 格式,gzip 壓縮 21.8MB,未壓縮 167.8MB:ftp://ita.ee.lbl.gov/traces/NASA_access_log_Aug95.gz

請(qǐng)確保這兩個(gè)文件與包含教程的筆記本在同一個(gè)目錄中,該教程可以從我的 GitHub上找到。

設(shè)置依賴項(xiàng)

第一步是確保你能夠訪問 Spark 會(huì)話和集群。為此,你可以使用自己的本地設(shè)置或基于云的設(shè)置。通常,現(xiàn)在大多數(shù)云平臺(tái)都會(huì)提供一個(gè) Spark 集群,你還可以選擇免費(fèi)的Databricks 社區(qū)版。本教程假設(shè)你已經(jīng)安裝了 Spark,因此我們不會(huì)花費(fèi)額外的時(shí)間從頭配置或設(shè)置 Spark。

通常,在啟動(dòng)你的 jupyter 筆記本服務(wù)器時(shí),預(yù)配置的 Spark 設(shè)置已經(jīng)預(yù)先加載了必要的環(huán)境變量或依賴項(xiàng)。在我的例子中,我可以在筆記本中使用以下命令來檢查它們。

spark

 

 

這說明我的集群目前正在運(yùn)行 Spark 2.4.0。我們還可以使用以下代碼檢查sqlContext是否存在。

sqlContext
#Output:


現(xiàn)在,如果你沒有預(yù)先配置這些變量并得到一個(gè)錯(cuò)誤,你可以加載它們并使用以下代碼配置它們。除此之外,我們還加載了一些用于處理數(shù)據(jù)流和正則表達(dá)式的其他庫。

# configure spark variables
from pyspark.context import SparkContext
from pyspark.sql.context import SQLContext
from pyspark.sql.session import SparkSession

sc = SparkContext()
sqlContext = SQLContext(sc)
spark = SparkSession(sc)

# load up other dependencies
import re
import pandas as pd

使用正則表達(dá)式將是解析日志文件的主要方面之一。正則表達(dá)式是一種非常強(qiáng)大的模式匹配技術(shù),可以用于提取和發(fā)現(xiàn)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)中的模式。

 

 

正則表達(dá)式非常有效、非常強(qiáng)大,但有時(shí)也會(huì)讓人不知所措或感到困惑。不過不用擔(dān)心,通過更多的練習(xí),你可以真正充分地利用它的潛力。下面的示例展示了在 Python 中使用正則表達(dá)式的一種方法。

m = re.finditer(r'.*?(spark).*?', "I'm searching for a spark in PySpark", re.I)
for match in m:
print(match, match.start(), match.end())

<_sre.SRE_Match object; span=(0, 25), match=“I’m searching for a spark”> 0 25
<_sre.SRE_Match object; span=(25, 36), match=’ in PySpark’> 25 36

讓我們進(jìn)入下一部分的分析。

加載和查看 NASA 日志數(shù)據(jù)集

假設(shè)我們的數(shù)據(jù)存儲(chǔ)在下面提到的路徑中(以平面文件的形式),讓我們將其加載到一個(gè) DataFrame 中。我們將分步驟來做。下面的代碼獲取磁盤中的日志數(shù)據(jù)文件名。

import glob

raw_data_files = glob.glob('*.gz')
raw_data_files

[‘NASA_access_log_Jul95.gz’, ‘NASA_access_log_Aug95.gz’]

現(xiàn)在,我們將使用sqlContext.read.text()或spark.read.text()來讀取文本文件。這將生成一個(gè) DataFrame,其中只有一個(gè)名為value的字符串列。

base_df = spark.read.text(raw_data_files)
base_df.printSchema()

root
|-- value: string (nullable = true)

這使我們能夠看到日志數(shù)據(jù)的模式,它看起來很像我們將很快要檢查的文本數(shù)據(jù)。你可以使用以下代碼查看保存日志數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型。

type(base_df)

#Output:
pyspark.sql.dataframe.DataFrame

我們將在整個(gè)教程中使用 Spark DataFrame。但是,如果需要,還可以將數(shù)據(jù) DataFrame 轉(zhuǎn)換為 RDD,即 Spark 的原始數(shù)據(jù)結(jié)構(gòu)(彈性分布式數(shù)據(jù)集)。

復(fù)制代碼base_df_rdd = base_df.rddtype(base_df_rdd)

#Output

pyspark.rdd.RDD

現(xiàn)在讓我們看一下 DataFrame 中實(shí)際的日志數(shù)據(jù)。

base_df.show(10, truncate=False)

 

 

這看起來絕對(duì)像標(biāo)準(zhǔn)的服務(wù)器日志數(shù)據(jù),它是半結(jié)構(gòu)化的,在使用它們之前,我們肯定需要做一些數(shù)據(jù)處理和清理。請(qǐng)記住,從 RDD 訪問數(shù)據(jù)略有不同,如下所示。

base_df_rdd.take(10)

 

 

現(xiàn)在我們已經(jīng)加載并查看了日志數(shù)據(jù),讓我們對(duì)其進(jìn)行處理和清理。

標(biāo)簽: [db:TAGG]

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:如何全面解析數(shù)據(jù)并創(chuàng)造數(shù)據(jù)故事

下一篇:GitHub遭黑客攻擊:竊取數(shù)百源碼并勒索比特幣