
R是GNU的一個開源工具,具有S語言血統(tǒng),擅長統(tǒng)計計算和統(tǒng)計制圖。由Revolution Analytics發(fā)起的一個開源項目RHadoop將R語言與Hadoop結合在一起,很好發(fā)揮了R語言特長。廣大R語言愛好者借助強大工具RHadoop,可以在大數據領域大展拳腳,這對R語言程序員來說無疑是個喜訊。作者從一個程序員的角度對R語言和Hadoop做了一次詳細的講解。
以下為原文:
前言
寫過幾篇關于RHadoop的技術性文章,都是從統(tǒng)計的角度,介紹如何讓R語言利用Hadoop處理大數據。今天決定反過來,從計算機開發(fā)人員的角度,介紹如何讓Hadoop結合R語言,能做統(tǒng)計分析的事情。
目錄
R語言介紹
Hadoop介紹
R和Hadoop在實際中的案例
1. R語言介紹
起源
R語言,一種自由軟件編程語言與操作環(huán)境,主要用于統(tǒng)計分析、繪圖、數據挖掘。R本來是由來自新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發(fā)(也因此稱為R),現(xiàn)在由“R開發(fā)核心團隊”負責開發(fā)。R是基于S語言的一個GNU計劃項目,所以也可以當作S語言的一種實現(xiàn)。R的語法是來自Scheme。
跨平臺,許可證
R的源代碼可自由下載使用,GNU通用公共許可證,可在多種平臺下運行,包括UNIX,Linux,Windows和MacOS。R主要是以命令行操作為主,同時支持GUI的圖形用戶界面。
R的數字基因
R內建多種統(tǒng)計學及數字分析功能。因為S的血緣,R比其他統(tǒng)計學或數學專用的編程語言有更強的物件導向功能。
R的另一強項是繪圖功能,制圖具有印刷的素質,也可加入數學符號。
雖然R主要用于統(tǒng)計分析或者開發(fā)統(tǒng)計相關的軟體,但也有人用作矩陣計算。其分析速度可媲美GNU Octave甚至商業(yè)軟件MATLAB。
代碼庫
CRAN為Comprehensive R Archive Network的簡稱。它除了收藏了R的執(zhí)行檔下載版、源代碼和說明文件,也收錄了各種用戶撰寫的軟件包。全球有超過一百個CRAN鏡像站,上萬個第三方的軟件包。
R的行業(yè)應用
統(tǒng)計分析,應用數學,計量經濟,金融分析,財經分析,人文科學,數據挖掘,人工智能,生物信息學,生物制藥,全球地理科學,數據可視化。
商業(yè)競爭對手
SAS:(Statistical Analysis System)是SAS公司推出的一款用于數據分析和和決策支持的大型集成式模塊化軟件系統(tǒng)。
SPSS:(Statistical Product and Service Solutions)是IBM公司推出的一系列用于統(tǒng)計學分析運算、數據挖掘、預測分析和決策支持任務的軟件產品及相關服務的總稱。
Matlab:(MATrix LABoratory),是MathWorks公司出品的一款商業(yè)數學軟件。MATLAB是一種用于算法開發(fā)、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環(huán)境。
2. Hadoop介紹
Hadoop對于計算機的人,都是耳熟能說的技術了。
Hadoop是一個分布式系統(tǒng)基礎架構,由Apache基金會開發(fā)。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運算和存儲。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(streaming access)文件系統(tǒng)中的數據。
Hadoop的家族成員:Hive, HBase, Zookeeper, Avro, Pig, Ambari, Sqoop, Mahout, Chukwa
Hive: 是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應用,十分適合數據倉庫的統(tǒng)計分析。
Pig: 是一個基于Hadoop的大規(guī)模數據分析工具,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換為一系列經過優(yōu)化處理的MapReduce運算。
HBase: 是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Server上搭建起大規(guī)模結構化存儲集群。
Sqoop: 是一個用來將Hadoop和關系型數據庫中的數據相互轉移的工具,可以將一個關系型數據庫(MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。
Zookeeper:是一個為分布式應用所設計的分布的、開源的協(xié)調服務,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,簡化分布式應用協(xié)調及其管理的難度,提供高性能的分布式服務
Mahout:是基于Hadoop的機器學習和數據挖掘的一個分布式框架。Mahout用MapReduce實現(xiàn)了部分數據挖掘算法,解決了并行挖掘的問題。
Avro: 是一個數據序列化系統(tǒng),設計用于支持數據密集型,大批量數據交換的應用。Avro是新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制
Ambari: 是一種基于Web的工具,支持Hadoop集群的供應、管理和監(jiān)控。
Chukwa: 是一個開源的用于監(jiān)控大型分布式系統(tǒng)的數據收集系統(tǒng),它可以將各種各樣類型的數據收集成適合 Hadoop 處理的文件保存在 HDFS 中供 Hadoop 進行各種 MapReduce 操作。
自2006年,Hadoop以MapReduce和HDFS獨立發(fā)展開始,到今年2013年不過7年時間,Hadoop的家族已經孵化出多個Apache的頂級項目。特別是最近1-2年,發(fā)展速度越來越快,又融入了很多新技術(YARN, Hcatalog, Oozie, Cassandra),都有點讓我們都學不過來了。
前面兩章,R語言介紹和Hadoop介紹,讓我們體會到了,兩種技術在各自領域的強大。很多開發(fā)人員在計算機的角度,都會提出下面2個問題。
問題1: Hadoop的家族如此之強大,為什么還要結合R語言?
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區(qū)別是什么?
下面我嘗試著做一個解答:
問題1: Hadoop的家族如此之強大,為什么還要結合R語言?
a. Hadoop家族的強大之處,在于對大數據的處理,讓原來的不可能(TB,PB數據量計算),成為了可能。
b. R語言的強大之處,在于統(tǒng)計分析,在沒有Hadoop之前,我們對于大數據的處理,要取樣本,假設檢驗,做回歸,長久以來R語言都是統(tǒng)計學家專屬的工具。
c. 從a和b兩點,我們可以看出,hadoop重點是全量數據分析,而R語言重點是樣本數據分析。 兩種技術放在一起,剛好是最長補短!
d. 模擬場景:對1PB的新聞網站訪問日志做分析,預測未來流量變化
d1:用R語言,通過分析少量數據,對業(yè)務目標建回歸建模,并定義指標
d2:用Hadoop從海量日志數據中,提取指標數據
d3:用R語言模型,對指標數據進行測試和調優(yōu)
這個場景中,R和Hadoop分別都起著非常重要的作用。以計算機開發(fā)人員的思路,所有有事情都用Hadoop去做,沒有數據建模和證明,”預測的結果”一定是有問題的。以統(tǒng)計人員的思路,所有的事情都用R去做,以抽樣方式,得到的“預測的結果”也一定是有問題的。
所以讓二者結合,是產界業(yè)的必然的導向,也是產界業(yè)和學術界的交集,同時也為交叉學科的人才提供了無限廣闊的想象空間。
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區(qū)別是什么?
a. Mahout是基于Hadoop的數據挖掘和機器學習的算法框架,Mahout的重點同樣是解決大數據的計算的問題。
b. Mahout目前已支持的算法包括,協(xié)同過濾,推薦算法,聚類算法,分類算法,LDA, 樸素bayes,隨機森林。上面的算法中,大部分都是距離的算法,可以通過矩陣分解后,充分利用MapReduce的并行計算框架,高效地完成計算任務。
c. Mahout的空白點,還有很多的數據挖掘算法,很難實現(xiàn)MapReduce并行化。Mahout的現(xiàn)有模型,都是通用模型,直接用到的項目中,計算結果只會比隨機結果好一點點。Mahout二次開發(fā),要求有深厚的JAVA和Hadoop的技術基礎,最好兼有 “線性代數”,“概率統(tǒng)計”,“算法導論” 等的基礎知識。所以想玩轉Mahout真的不是一件容易的事情。
d. R語言同樣提供了Mahout支持的約大多數算法(除專有算法),并且還支持大量的Mahout不支持的算法,算法的增長速度比mahout快N倍。并且開發(fā)簡單,參數配置靈活,對小型數據集運算速度非???。
雖然,Mahout同樣可以做數據挖掘和機器學習,但是和R語言的擅長領域并不重合。集百家之長,在適合的領域選擇合適的技術,才能真正地“保質保量”做軟件。
從上一節(jié)我們看到,Hadoop和R語言是可以互補的,但所介紹的場景都是Hadoop和R語言的分別處理各自的數據。
一旦市場有需求,自然會有商家填補這個空白。
1). RHadoop
RHadoop是一款Hadoop和R語言的結合的產品,由RevolutionAnalytics公司開發(fā),并將代碼開源到github社區(qū)上面。RHadoop包含三個R包 (rmr,rhdfs,rhbase),分別是對應Hadoop系統(tǒng)架構中的,MapReduce, HDFS, HBase 三個部分。
2). RHive
RHive是一款通過R語言直接訪問Hive的工具包,是由NexR一個韓國公司研發(fā)的。
3). 重寫Mahout
用R語言重寫Mahout的實現(xiàn)也是一種結合的思路,我也做過相關的嘗試。
4).Hadoop調用R
上面說的都是R如何調用Hadoop,當然我們也可以反相操作,打通JAVA和R的連接通道,讓Hadoop調用R的函數。但是,這部分還沒有商家做出成形的產品。
5. R和Hadoop在實際中的案例
R和Hadoop的結合,技術門檻還是有點高的。對于一個人來說,不僅要掌握Linux, Java, Hadoop, R的技術,還要具備 軟件開發(fā),算法,概率統(tǒng)計,線性代數,數據可視化,行業(yè)背景 的一些基本素質。
在公司部署這套環(huán)境,同樣需要多個部門,多種人才的的配合。Hadoop運維,Hadoop算法研發(fā),R語言建模,R語言MapReduce化,軟件開發(fā),測試等等。。。
所以,這樣的案例并不太多。
展位未來
對于R和Hadoop的結合,在近幾年,肯定會生成爆發(fā)式的增長的。但由于跨學科會造成技術壁壘,人才會遠遠跟不上市場的需求。
所以,肯定會有更多的大數據工具,被發(fā)明!機會就在我們的手中,也許明天你的創(chuàng)新,就是我們追逐的方向!加油!!
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經網絡(RNN)家族中,長短期記憶網絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數據分析師報考條件詳解與準備指南? ? 在數據驅動決策的時代浪潮下,CDA 數據分析師認證愈發(fā)受到矚目,成為眾多有志投身數 ...
2025-07-11數據透視表中兩列相乘合計的實用指南? 在數據分析的日常工作中,數據透視表憑借其強大的數據匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數據分析師:連接數據與業(yè)務的價值轉化者? ? 在大數據與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數據查詢到趨勢預判? ? 在數據驅動決策的時代,預測分析作為挖掘數據潛在價值的核心手段,正被廣泛 ...
2025-07-10數據查詢結束后:分析師的收尾工作與價值深化? ? 在數據分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數 ...
2025-07-10CDA 數據分析師考試:從報考到取證的全攻略? 在數字經濟蓬勃發(fā)展的今天,數據分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數據背后的時間軌跡? 在數據分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數據類型:時間維度的精準切片? ? 在數據的世界里,時間是最不可或缺的維度之一,而year_month數據類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數據分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數據分析師認證考試中,Python 作為數據處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數據趨勢與突變分析的有力工具? ? ? 在數據分析的廣袤領域中,準確捕捉數據的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數據分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數據分析師認證作為國內權威的數據分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網絡(LSTM)作為循環(huán)神經網絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調研數據中的深度應用? 市場調研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調研數 ...
2025-07-07CDA數據分析師證書考試全攻略? 在數字化浪潮席卷全球的當下,數據已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數據分析師也因此成為 ...
2025-07-07剖析 CDA 數據分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數據分析師考試作為衡量數據專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數據處理的關鍵技能? 在數據處理與分析工作中,數據格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數據分析師視角:從數據迷霧中探尋商業(yè)真相? 在數字化浪潮席卷全球的今天,數據已成為企業(yè)決策的核心驅動力,CDA(Certifie ...
2025-07-04CDA 數據分析師:開啟數據職業(yè)發(fā)展新征程? ? 在數據成為核心生產要素的今天,數據分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03