linux資料分析工具有:1、Hadoop,是一個能夠對大量資料進行分散式處理的軟體框架;2、Storm,可以非常可靠的處理龐大的資料流,用於處理Hadoop的批量資料;3、RapidMiner,用於資料探勘並進行視覺化建模;4、wc等等。
本教學操作環境:linux5.9.8系統、Dell G3電腦。
6個linux大數據處理分析工具
1、Hadoop
Hadoop 是一個能夠對大量資料進行分散式處理的軟體框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。
Hadoop 是可靠的,因為它假設計算元素和儲存會失敗,因此它維護多個工作資料副本,確保能夠針對失敗的節點重新分散處理。
Hadoop 是高效的,因為它以並行的方式工作,透過並行處理加快處理速度。
Hadoop 還是可伸縮的,能夠處理 PB 級資料。此外,Hadoop 依賴社群伺服器,因此它的成本比較低,任何人都可以使用。
Hadoop是一個能讓使用者輕鬆架構和使用的分散式運算平台。使用者可以輕鬆地在Hadoop上開發和運行處理大量資料的應用程式。它主要有以下幾個優點:
高可靠性。 Hadoop按位儲存和處理資料的能力值得人們信賴。
高擴展性。 Hadoop是在可用的電腦集簇間分配資料並完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中。
高效能。 Hadoop能夠在節點之間動態地移動數據,並確保各個節點的動態平衡,因此處理速度非常快。
高容錯性。 Hadoop能夠自動保存資料的多個副本,並且能夠自動將失敗的任務重新分配。
Hadoop帶有用 Java 語言編寫的框架,因此運行在 Linux 生產平台上是非常理想的。 Hadoop 上的應用程式也可以使用其他語言編寫,例如 C 。
2、HPCC
HPCC,High Performance Computing and Communications(高效能運算與通訊)的縮寫。 1993年,由美國科學、工程、技術聯邦協調理事會向國會提交了「重大挑戰項目:高效能運算與通訊」的報告,也就是被稱為HPCC計畫的報告,即美國總統科學戰略項目,其目的是透過加強研究與開發解決一批重要的科學與技術挑戰問題。 HPCC是美國實施資訊高速公路而上實施的計劃,該計劃的實施將耗資百億美元,其主要目標要達到:開發可擴展的計算系統及相關軟體,以支持太位級網絡傳輸性能,開發千兆比特網路技術,擴展研究及教育機構及網路連線能力。
本專案主要由五個部分組成:
高效能電腦系統(HPCS),內容包括今後幾代電腦系統的研究、系統設計工具、先進的典型系統及原有系統的評估等;
先進軟體技術與演算法(ASTA),內容有龐大挑戰問題的軟體支援、新演算法設計、軟體分支與工具、運算計算及高效能運算研究中心等;
國家科研與教育網格(NREN),內容有中接站及10億位級傳輸的研究與開發;
基本研究與人類資源(BRHR),內容有基礎研究、培訓、教育及課程教材,被設計通過獎勵調查者-開始的,長期的調查在可升級的高性能計算中來增加創新意識流,透過提高教育和高效能的計算訓練和通信來加大熟練的和訓練有素的人員的聯營,和來提供必需的基礎架構來支持這些調查和研究活動;
資訊基礎結構技術與應用(IITA ),目的在於確保美國在先進資訊科技開發方面的領先地位。
3、Storm
Storm是自由的開源軟體,一個分散式的、容錯的即時運算系統。 Storm可以非常可靠的處理龐大的資料流,用於處理Hadoop的批量資料。 Storm很簡單,支援許多種程式語言,使用起來非常有趣。 Storm由Twitter開源而來,其它知名的應用企業包括Groupon、淘寶、支付寶、阿里巴巴、樂元素、 Admaster等等。
Storm有許多應用領域:即時分析、線上機器學習、不停頓的計算、分散式RPC(遠過程呼叫協議,一種透過網路從遠端電腦程式上請求服務)、 ETL(Extraction-Transformation-Loading的縮寫,即資料抽取、轉換和載入)等等。 Storm的處理速度驚人:經測 試,每個節點每秒鐘可以處理100萬個資料元組。 Storm是可擴充、容錯,很容易設定和操作。
4、Apache Drill
#為了幫助企業用戶尋找更有效、加速Hadoop資料查詢的方法,Apache軟體基金會近日發起了一項名為「Drill」的開源專案。 Apache Drill 實現了 Google’s Dremel.
根據Hadoop廠商MapR Technologies公司產品經理Tomer Shiran介紹,「Drill」已經作為Apache孵化器專案來運作,將面向全球軟體工程師持續推廣。
該專案將會創建開源版本的GoogleDremel Hadoop工具(Google使用該工具來為Hadoop資料分析工具的網路應用提速)。而「Drill」將有助於Hadoop用戶實現更快查詢海量資料集的目的。
「Drill」專案其實也是從Google的Dremel專案中獲得靈感:該專案幫助Google實現大量資料集的分析處理,包括分析抓取Web文件、追蹤安裝在Android Market上的應用程式數據、分析垃圾郵件、分析Google分散式建置系統上的測試結果等等。
透過開發「Drill」Apache開源項目,組織機構將有望建立Drill所屬的API介面和靈活強大的體系架構,從而幫助支援廣泛的資料來源、資料格式和查詢語言。
5、RapidMiner
#RapidMiner是世界領先的資料探勘解決方案,在一個非常大的程度上有著先進技術。它資料探勘任務涉及範圍廣泛,包括各種資料藝術,能簡化資料探勘過程的設計和評估。
功能與特點
免費提供資料探勘技術與函式庫
100%用Java程式碼(可運作在操作系統)
資料探勘流程簡單,強大和直覺
內XML保證了標準化的格式來表示交換資料探勘過程
可以用簡單腳本語言自動進行大規模進程
多層次的資料視圖,確保有效且透明的資料
#圖形使用者介面的互動原型
命令列(批次模式)自動大規模應用
Java API(應用程式介面)
簡單的外掛程式和推廣機制
#強大的視覺化引擎,許多尖端的高維度資料的視覺化建模
400多個資料探勘業者支援
#耶魯大學已成功地應用在許多不同的應用領域,包括文字探勘,多媒體挖掘,功能設計,資料流挖掘,整合開發的方法和分散式資料探勘。
6、 Pentaho BI
#Pentaho BI 平台不同於傳統的BI 產品,它是一個以流程為中心的,面向解決方案(Solution)的框架。其目的在於將一系列企業級BI產品、開源軟體、API等等元件整合起來,方便商務智慧應用的開發。它的出現,使得一系列的面向商務智慧的獨立產品如Jfree、Quartz等等,能夠整合在一起,構成一項項複雜的、完整的商務智慧解決方案。
Pentaho BI 平台,Pentaho Open BI 套件的核心架構和基礎,是以流程為中心的,因為其中樞控制器是一個工作流程引擎。工作流程引擎使用流程定義來定義在BI 平台上執行的商業智慧流程。流程可以很容易的被定制,也可以添加新的流程。 BI 平台包含元件和報表,用來分析這些流程的效能。目前,Pentaho的主要組成元素包括報表產生、分析、資料探勘和工作流程管理等等。這些元件透過 J2EE、WebService、SOAP、HTTP、Java、JavaScript、Portals等技術整合到Pentaho平台中。 Pentaho的發行,主要以Pentaho SDK的形式進行。
Pentaho SDK共包含五個部分:Pentaho平台、Pentaho範例資料庫、可獨立運作的Pentaho平台、Pentaho解決方案範例和一個預先配製好的 Pentaho網路伺服器。其中Pentaho平台是Pentaho平台最主要的部分,囊括了Pentaho平台原始碼的主體;Pentaho資料庫為Pentaho平台的正常運作提供的資料服務,包括設定資訊、Solution相關的資訊等等,對於Pentaho平台來說它不是必須的,透過配置是可以用其它資料庫服務取代的;可獨立運行的Pentaho平台是Pentaho平台的獨立運行模式的示例,它演示瞭如何使Pentaho平台在沒有應用伺服器支援的情況下獨立運行;Pentaho解決方案範例是一個Eclipse工程,用來示範如何為Pentaho平台開發相關的商業智慧解決方案。
Pentaho BI 平台建構於伺服器,引擎和元件的基礎之上。這些提供了系統的J2EE 伺服器,安全,portal,工作流程,規則引擎,圖表,協作,內容管理,資料集成,分析和建模功能。這些組件的大部分是基於標準的,可使用其他產品替換之。
9個linux資料分析指令列工具
#1、head與tail
##首先,讓我們先從文件處理開始。文件中有什麼內容?其格式如何?大家可以使用cat指令在終端機中顯示文件,但其顯然不適合處理內容較長的文件。 輸入head與tail,二者能夠完整顯示檔案中的指定行數內容。如果大家未指定行數,則預設顯示其中10行。$ tail -n 3 jan2017articles.csv 02 Jan 2017,Article,Scott Nesbitt,3 tips for effectively using wikis for documentation,1,/article/17/1/tips-using-wiki-documentation,"Documentation, Wiki",710 02 Jan 2017,Article,Jen Wike Huger,The Opensource.com preview for January,0,/article/17/1/editorial-preview-january,,358 02 Jan 2017,Poll,Jason Baker,What is your open source New Year's resolution?,1,/poll/17/1/what-your-open-source-new-years-resolution,,186在最後三行中,我能夠找到日期、作者姓名、標題以及其他一些資訊。不過由於缺少列頭,我不清楚各列的具體意義。以下查看各列的具體標題:
$ head -n 1 jan2017articles.csv Post date,Content type,Author,Title,Comment count,Path,Tags,Word count現在一切都非常明確,我們可以看到發布日期、內容類型、作者、標題、提交次數、相關URL、各文章標籤以及字數。
2、wc
但如果需要分析數百甚至上千篇文章,又該如何處理?這裡就要使用wc命令了——其為“字數”一詞的縮寫。 wc能夠對檔案的位元組、字元、單字或行數進行計數。在本範例中,我們希望了解文章中的行數。$ wc -l jan2017articles.csv 93 jan2017articles.csv本文件共有93行,考慮到第一行中包含文件標題,因此可以推測此文件是一份包含92篇文章的清單。
3、grep
下面提出新的問題:其中有多少篇文章與安全話題有關?為了實現目標,我們假定需要的文章會在標題、標籤或其他位置提到安全這一字。這時,grep工具可用於透過特定字元搜尋檔案或實現其他搜尋模式。這是一款極為強大的工具,因為我們甚至能夠利用正規表示式建立極為精確的匹配模式。不過這裡,我們只需要尋找一條簡單的字串。$ grep -i "security" jan2017articles.csv 30 Jan 2017,Article,Tiberius Hefflin,4 ways to improve your security online right now,3,/article/17/1/4-ways-improve-your-online-security,Security and encryption,1242 28 Jan 2017,Article,Subhashish Panigrahi,How communities in India support privacy and software freedom,0,/article/17/1/how-communities-india-support-privacy-software-freedom,Security and encryption,453 27 Jan 2017,Article,Alan Smithee,Data Privacy Day 2017: Solutions for everyday privacy,5,/article/17/1/every-day-privacy,"Big data, Security and encryption",1424 04 Jan 2017,Article,Daniel J Walsh,50 ways to avoid getting hacked in 2017,14,/article/17/1/yearbook-50-ways-avoid-getting-hacked,"Yearbook, 2016 Open Source Yearbook, Security and encryption, Containers, Docker, Linux",2143我們使用的格式為grep加上-i標記(告知grep不區分大小寫),再加我們希望搜尋的模式,最後是我們所搜尋的目標檔案的位置。最後我們找到了4篇安全相關文章。如果搜尋的範圍更具體,我們可以使用pipe——它能夠將grep同wc指令加以結合,用以了解其中有多少行提到了安全內容。
$ grep -i "security" jan2017articles.csv | wc -l 4這樣,wc會提取grep命令的輸出結果並將其作為輸入內容。很明顯,這種結合再加上一點shell腳本,終端將立即變成一個強大的資料分析工具。
4、tr
在多數分析場景下,我們都會面對CSV檔案-但我們該如何將其轉換為其他格式以實現不同應用方式?這裡,我們將其轉換為HTML形式以透過表格進行資料使用。 tr指令可協助大家達成此目標,它可將一類字元轉換為另一類。同樣的,大家也可以配合pipe指令實現輸出/輸入對接。 下面,我們試試另一個多部分範例,即建立一個TSV(即製表符分隔值)文件,其中只包含發表於1月20日的文章。$ grep "20 Jan 2017" jan2017articles.csv | tr ',' '/t' > jan20only.tsv首先,我們利用grep進行日期查詢。我們將此結果pipe至tr指令,並利用後者將全部逗號替換為tab(表示為'/t')。但結果去哪了?這裡我們使用〉字元將結果輸出為新檔案而非螢幕結果。如此一來,我們可以dqywjan20only.tsv檔案中一定包含預期的資料。
$ cat jan20only.tsv 20 Jan 2017 Article Kushal Das 5 ways to expand your project's contributor base 2 /article/17/1/expand-project-contributor-base Getting started 690 20 Jan 2017 Article D Ruth Bavousett How to write web apps in R with Shiny 2 /article/17/1/writing-new-web-apps-shiny Web development 218 20 Jan 2017 Article Jason Baker "Top 5: Shell scripting the Cinnamon Linux desktop environment and more" 0 /article/17/1/top-5-january-20 Top 5 214 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
5、sort
如果我們先找到包含資訊最多的特定列,又該如何操作?假設我們需要了解哪篇文章包含最長的新文章列表,那麼面對先前得出的1月20日文章列表,我們可以使用sort指令對列字數進行排序。在這種情況下,我們並不需要使用中間文件,而可以繼續使用pipe。不過將長命令鏈拆分成較短的部分往往能夠簡化整個操作過程。$ sort -nr -t$'/t' -k8 jan20only.tsv | head -n 1 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
以上是一条长命令,我们尝试进行拆分。首先,我们使用sort命令对字数进行排序。-nr选项告知sort以数字排序,并将结果进行反向排序(由大到小)。此后的-t$'/t'则告知sort其中的分隔符为tab('/t')。其中的$要求此shell为一条需要处理的字符串,并将/n返回为tab。而-k8部分则告知sort命令使用第八列,即本示例中进行字数统计的目标列。
最后,输出结果被pipe至head,处理后在结果中显示此文件中包含最多字数的文章标题。
6、sed
大家可能还需要在文件中选择特定某行。这里可以使用sed。如果希望将全部包含标题的多个文件加以合并,并只为整体文件显示一组标题,即需要清除额外内容; 或者希望只提取特定行范围,同样可以使用sed。另外,sed还能够很好地完成批量查找与替换任务。
下面立足之前的文章列表创建一个不含标题的新文件,用于同其他文件合并(例如我们每月都会定期生成某个文件,现在需要将各个月份的内容进行合并)。
$ sed '1 d' jan2017articles.csv > jan17no_headers.csv
其中的“1 d”选项要求sed删除第一行。
7、cut
了解了如何删除行,那么我们该如何删除列?或者说如何只选定某一列?下面我们尝试为之前生成的列表创建一份新的作者清单。
$ cut -d',' -f3 jan17no_headers.csv > authors.txt
在这里,通过cut与-d相配合代表着我们需要第三列(-f3),并将结果发送至名为authors.txt的新文件。
8、uniq
作者清单已经完成,但我们要如何知悉其中包含多少位不同的作者?每位作者又各自编写了多少篇文章?这里使用unip。下面我们对文件进行sort排序,找到唯一值,而后计算每位作者的文章数量,并用结果替换原本内容。
sort authors.txt | uniq -c > authors.txt
现在已经可以看到每位作者的对应文章数,下面检查最后三行以确保结果正确。
$ tail -n3 authors-sorted.txt 1 Tracy Miranda 1 Veer Muchandi 3 VM (Vicky) Brasseur
9、awk
最后让我们了解最后一款工具,awk。awk是一款出色的替换性工具,当然其功能远不止如此。下面我们重新回归1月12日文章列表TSV文件,利用awk创建新列表以标明各篇文章的作者以及各作者编写的具体字数。
$ awk -F "/t" '{print $3 " " $NF}' jan20only.tsv Kushal Das 690 D Ruth Bavousett 218 Jason Baker 214 Tracy Miranda 1007
其中的-F "/t"用于告知awk目前处理的是由tab分隔的数据。在大括号内,我们为awk提供执行代码。$3代表要求其将输出第三行,而$NF则代表输出最后一行(即‘字段数’的缩写),并在两项结果间添加两个空格以进行明确划分。
虽然这里列举的例子规模较小,看似不必使用上述工具解决,但如果将范围扩大到包含93000行的文件,那么它显然很难利用电子表格程序进行处理。
利用这些简单的工具与小型脚本,大家可以避免使用数据库工具并轻松完成大量数据统计工作。无论您是专业人士还是业余爱好者,它的作用都不容忽视。
相关推荐:《Linux视频教程》
以上是linux資料分析工具有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!