
R是GNU的一個開源工具,具有S語言血統,擅長統計計算和統計制圖。由Revolution Analytics發起的一個開源項目RHadoop將R語言與Hadoop結合在一起,很好發揮了R語言特長。廣大R語言愛好者借助強大工具RHadoop,可以在大數據領域大展拳腳,這對R語言程序員來說無疑是個喜訊。作者從一個程序員的角度對R語言和Hadoop做了一次詳細的講解。
以下為原文:
前言
寫過幾篇關于RHadoop的技術性文章,都是從統計的角度,介紹如何讓R語言利用Hadoop處理大數據。今天決定反過來,從計算機開發人員的角度,介紹如何讓Hadoop結合R語言,能做統計分析的事情。
目錄
R語言介紹
Hadoop介紹
R和Hadoop在實際中的案例
1. R語言介紹
起源
R語言,一種自由軟件編程語言與操作環境,主要用于統計分析、繪圖、數據挖掘。R本來是由來自新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發(也因此稱為R),現在由“R開發核心團隊”負責開發。R是基于S語言的一個GNU計劃項目,所以也可以當作S語言的一種實現。R的語法是來自Scheme。
跨平臺,許可證
R的源代碼可自由下載使用,GNU通用公共許可證,可在多種平臺下運行,包括UNIX,Linux,Windows和MacOS。R主要是以命令行操作為主,同時支持GUI的圖形用戶界面。
R的數字基因
R內建多種統計學及數字分析功能。因為S的血緣,R比其他統計學或數學專用的編程語言有更強的物件導向功能。
R的另一強項是繪圖功能,制圖具有印刷的素質,也可加入數學符號。
雖然R主要用于統計分析或者開發統計相關的軟體,但也有人用作矩陣計算。其分析速度可媲美GNU Octave甚至商業軟件MATLAB。
代碼庫
CRAN為Comprehensive R Archive Network的簡稱。它除了收藏了R的執行檔下載版、源代碼和說明文件,也收錄了各種用戶撰寫的軟件包。全球有超過一百個CRAN鏡像站,上萬個第三方的軟件包。
R的行業應用
統計分析,應用數學,計量經濟,金融分析,財經分析,人文科學,數據挖掘,人工智能,生物信息學,生物制藥,全球地理科學,數據可視化。
商業競爭對手
SAS:(Statistical Analysis System)是SAS公司推出的一款用于數據分析和和決策支持的大型集成式模塊化軟件系統。
SPSS:(Statistical Product and Service Solutions)是IBM公司推出的一系列用于統計學分析運算、數據挖掘、預測分析和決策支持任務的軟件產品及相關服務的總稱。
Matlab:(MATrix LABoratory),是MathWorks公司出品的一款商業數學軟件。MATLAB是一種用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境。
2. Hadoop介紹
Hadoop對于計算機的人,都是耳熟能說的技術了。
Hadoop是一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的家族成員:Hive, HBase, Zookeeper, Avro, Pig, Ambari, Sqoop, Mahout, Chukwa
Hive: 是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
Pig: 是一個基于Hadoop的大規模數據分析工具,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換為一系列經過優化處理的MapReduce運算。
HBase: 是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
Sqoop: 是一個用來將Hadoop和關系型數據庫中的數據相互轉移的工具,可以將一個關系型數據庫(MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。
Zookeeper:是一個為分布式應用所設計的分布的、開源的協調服務,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,簡化分布式應用協調及其管理的難度,提供高性能的分布式服務
Mahout:是基于Hadoop的機器學習和數據挖掘的一個分布式框架。Mahout用MapReduce實現了部分數據挖掘算法,解決了并行挖掘的問題。
Avro: 是一個數據序列化系統,設計用于支持數據密集型,大批量數據交換的應用。Avro是新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制
Ambari: 是一種基于Web的工具,支持Hadoop集群的供應、管理和監控。
Chukwa: 是一個開源的用于監控大型分布式系統的數據收集系統,它可以將各種各樣類型的數據收集成適合 Hadoop 處理的文件保存在 HDFS 中供 Hadoop 進行各種 MapReduce 操作。
自2006年,Hadoop以MapReduce和HDFS獨立發展開始,到今年2013年不過7年時間,Hadoop的家族已經孵化出多個Apache的頂級項目。特別是最近1-2年,發展速度越來越快,又融入了很多新技術(YARN, Hcatalog, Oozie, Cassandra),都有點讓我們都學不過來了。
前面兩章,R語言介紹和Hadoop介紹,讓我們體會到了,兩種技術在各自領域的強大。很多開發人員在計算機的角度,都會提出下面2個問題。
問題1: Hadoop的家族如此之強大,為什么還要結合R語言?
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什么?
下面我嘗試著做一個解答:
問題1: Hadoop的家族如此之強大,為什么還要結合R語言?
a. Hadoop家族的強大之處,在于對大數據的處理,讓原來的不可能(TB,PB數據量計算),成為了可能。
b. R語言的強大之處,在于統計分析,在沒有Hadoop之前,我們對于大數據的處理,要取樣本,假設檢驗,做回歸,長久以來R語言都是統計學家專屬的工具。
c. 從a和b兩點,我們可以看出,hadoop重點是全量數據分析,而R語言重點是樣本數據分析。 兩種技術放在一起,剛好是最長補短!
d. 模擬場景:對1PB的新聞網站訪問日志做分析,預測未來流量變化
d1:用R語言,通過分析少量數據,對業務目標建回歸建模,并定義指標
d2:用Hadoop從海量日志數據中,提取指標數據
d3:用R語言模型,對指標數據進行測試和調優
這個場景中,R和Hadoop分別都起著非常重要的作用。以計算機開發人員的思路,所有有事情都用Hadoop去做,沒有數據建模和證明,”預測的結果”一定是有問題的。以統計人員的思路,所有的事情都用R去做,以抽樣方式,得到的“預測的結果”也一定是有問題的。
所以讓二者結合,是產界業的必然的導向,也是產界業和學術界的交集,同時也為交叉學科的人才提供了無限廣闊的想象空間。
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什么?
a. Mahout是基于Hadoop的數據挖掘和機器學習的算法框架,Mahout的重點同樣是解決大數據的計算的問題。
b. Mahout目前已支持的算法包括,協同過濾,推薦算法,聚類算法,分類算法,LDA, 樸素bayes,隨機森林。上面的算法中,大部分都是距離的算法,可以通過矩陣分解后,充分利用MapReduce的并行計算框架,高效地完成計算任務。
c. Mahout的空白點,還有很多的數據挖掘算法,很難實現MapReduce并行化。Mahout的現有模型,都是通用模型,直接用到的項目中,計算結果只會比隨機結果好一點點。Mahout二次開發,要求有深厚的JAVA和Hadoop的技術基礎,最好兼有 “線性代數”,“概率統計”,“算法導論” 等的基礎知識。所以想玩轉Mahout真的不是一件容易的事情。
d. R語言同樣提供了Mahout支持的約大多數算法(除專有算法),并且還支持大量的Mahout不支持的算法,算法的增長速度比mahout快N倍。并且開發簡單,參數配置靈活,對小型數據集運算速度非???。
雖然,Mahout同樣可以做數據挖掘和機器學習,但是和R語言的擅長領域并不重合。集百家之長,在適合的領域選擇合適的技術,才能真正地“保質保量”做軟件。
從上一節我們看到,Hadoop和R語言是可以互補的,但所介紹的場景都是Hadoop和R語言的分別處理各自的數據。
一旦市場有需求,自然會有商家填補這個空白。
1). RHadoop
RHadoop是一款Hadoop和R語言的結合的產品,由RevolutionAnalytics公司開發,并將代碼開源到github社區上面。RHadoop包含三個R包 (rmr,rhdfs,rhbase),分別是對應Hadoop系統架構中的,MapReduce, HDFS, HBase 三個部分。
2). RHive
RHive是一款通過R語言直接訪問Hive的工具包,是由NexR一個韓國公司研發的。
3). 重寫Mahout
用R語言重寫Mahout的實現也是一種結合的思路,我也做過相關的嘗試。
4).Hadoop調用R
上面說的都是R如何調用Hadoop,當然我們也可以反相操作,打通JAVA和R的連接通道,讓Hadoop調用R的函數。但是,這部分還沒有商家做出成形的產品。
5. R和Hadoop在實際中的案例
R和Hadoop的結合,技術門檻還是有點高的。對于一個人來說,不僅要掌握Linux, Java, Hadoop, R的技術,還要具備 軟件開發,算法,概率統計,線性代數,數據可視化,行業背景 的一些基本素質。
在公司部署這套環境,同樣需要多個部門,多種人才的的配合。Hadoop運維,Hadoop算法研發,R語言建模,R語言MapReduce化,軟件開發,測試等等。。。
所以,這樣的案例并不太多。
展位未來
對于R和Hadoop的結合,在近幾年,肯定會生成爆發式的增長的。但由于跨學科會造成技術壁壘,人才會遠遠跟不上市場的需求。
所以,肯定會有更多的大數據工具,被發明!機會就在我們的手中,也許明天你的創新,就是我們追逐的方向!加油!!
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25