1. 程式人生 > >【轉】用通俗易懂的話說下hadoop是什麼,能做什麼

【轉】用通俗易懂的話說下hadoop是什麼,能做什麼

轉自http://blog.csdn.net/houbin0912/article/details/72967178

hadoop是什麼?
(1)Hadoop是一個開源的框架,可編寫和執行分散式應用處理大規模資料,是專為離線和大規模資料分析而設計的,並不適合那種對幾個記錄隨機讀寫的線上事務處理模式。Hadoop=HDFS(檔案系統,資料儲存技術相關)+ Mapreduce(資料處理),Hadoop的資料來源可以是任何形式,在處理半結構化和非結構化資料上與關係型資料庫相比有更好的效能,具有更靈活的處理能力,不管任何資料形式最終會轉化為key/value,key/value是基本資料單元。用函式式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用指令碼和程式碼,而對於適用於關係型資料庫,習慣SQL的Hadoop有開源工具hive代替。


(2)Hadoop就是一個分散式計算的解決方案.

hadoop能做什麼?

 hadoop擅長日誌分析,facebook就用Hive來進行日誌分析,2009年時facebook就有非程式設計人員的30%的人使用HiveQL進行資料分析;淘寶搜尋中    的 自定義篩選也使用的Hive;利用Pig還可以做高階的資料處理,包括Twitter、LinkedIn 上用於發現您可能認識的人,可以實現類似Amazon.com的協同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop作業是用pig執行的,包括垃圾郵件的識別和過濾,還有使用者特徵建模。(2012年8月25新更新,天貓的推薦系統是hive,少量嘗試mahout!)



     下面舉例說明:

設想一下這樣的應用場景. 我有一個100M 的資料庫備份的sql 檔案.我現在想在不匯入到資料庫的情況下直接用grep操作通過正則過濾出我想要的內容。例如:某個表中 含有相同關鍵字的記錄那麼有幾種方式,一種是直接用Linux的命令 grep 還有一種就是通過程式設計來讀取檔案,然後對每行資料進行正則匹配得到結果好了 現在是100M 的資料庫備份.上述兩種方法都可以輕鬆應對.
那麼如果是1G , 1T 甚至 1PB 的資料呢 ,上面2種方法還能行得通嗎? 答案是不能.畢竟單臺伺服器的效能總有其上限.那麼對於這種 超大資料檔案怎麼得到我們想要的結果呢?
有種方法 就是分散式計算, 分散式計算的核心就在於 利用分散式
演算法
 把執行在單臺機器上的程式擴充套件到多臺機器上並行執行.從而使資料處理能力成倍增加.但是這種分散式計算一般對程式設計人員要求很高,而且對伺服器也有要求.導致了成本變得非常高.

Haddop 就是為了解決這個問題誕生的.Haddop 可以很輕易的把 很多linux的廉價pc 組成 分散式結點,然後程式設計人員也不需要知道分散式演算法之類,只需要根據mapreduce的規則定義好介面方法,剩下的就交給Haddop. 它會自動把相關的計算分佈到各個結點上去,然後得出結果.
例如上述的例子 : Hadoop 要做的事 首先把 1PB的資料檔案匯入到 HDFS中, 然後程式設計人員定義好 map和reduce, 也就是把檔案的行定義為key,每行的內容定義為value , 然後進行正則匹配,匹配成功則把結果 通過reduce聚合起來返回.Hadoop 就會把這個程式分佈到N 個結點去並行的操作.
那麼原本可能需要計算好幾天,在有了足夠多的結點之後就可以把時間縮小到幾小時之內.

這也就是所謂的 大資料 雲端計算了.如果還是不懂的話再舉個簡單的例子
比如  1億個  1 相加 得出計算結果, 我們很輕易知道結果是 1億.但是計算機不知道.那麼單臺計算機處理的方式做一個一億次的迴圈每次結果+1
那麼分散式的處理方式則變成 我用 1萬臺 計算機,每個計算機只需要計算 1萬個 1 相加 然後再有一臺計算機把 1萬臺計算機得到的結果再相加
從而得到最後的結果.
理論上講, 計算速度就提高了 1萬倍. 當然上面可能是一個不恰當的例子.但所謂分散式,大資料,雲端計算 大抵也就是這麼回事了.


hadoop能為我司做什麼?
零資料基礎,零資料平臺,一切起點都是0。

  • 日誌處理
  • 使用者細分特徵建模
  • 個性化廣告推薦
  • 智慧儀器推薦
  •    一切以增加企業的商業價值為核心目的、最終目的
怎麼用hadoop
  • hadoop的應用的在我司還屬於研發型專案,擬用日誌的分析來走通一次流程,因為此階段目前來說還不需要資料探勘的專業人員,在資料分析階段即可,而系統有資料庫工程師,Mapreduce有java開發工程師,而分析由我本人介入,而視覺化暫時可由前端JS實現,本來我的調研方案,針對大資料的解決方案是hadoop+R的,但是對於R我們是完全不懂,在公司還沒有大量投入人員的情況下,只有日誌分析目前看來是最容易出成果的,也是可以通過較少人員能出一定成果的,所以選取了這個方向作為試點。

相關推薦

通俗易懂的話說hadoop是什麼,什麼

轉自http://blog.csdn.net/houbin0912/article/details/72967178hadoop是什麼?(1)Hadoop是一個開源的框架,可編寫和執行分散式應用處理大規模資料,是專為離線和大規模資料分析而設計的,並不適合那種對幾個記錄隨機讀寫

opencv使攝像頭在30fps捕獲1080p的數據

idt apt 壓縮 .com ont blog 設置 幀率 rop 原文:http://blog.sina.com.cn/s/blog_9b493e7b0102xvn6.html opencv可以捕獲攝像頭數據。如果要讀高分辨率和高幀率,可以用如下的設置: captu

BlazeMeter錄制JMeter測試腳本

打開 測試的 文件 wid mbo 自己的 .net 一個 tar 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步驟: 以上工具準備好以後就可以錄制JMeter的測試腳本了, 在Chrome中點擊B

Python建立最簡單的web服務器

web服務 localhost 服務器 pos 根目錄 cal body -m -- 利用Python自帶的包可以建立簡單的web服務器。在DOS裏cd到準備做服務器根目錄的路徑下,輸入命令: python -m Web服務器模塊 [端口號,默認8000]

宏定義代替printf函數

tar 版本 data eas article target else define ref 問題提出 有時候我們想用宏定義來決定是編譯debug版本的代碼還是release的代碼,dubug版本的代碼會通過printf打印調試信息,release版本的代碼則不會。我們總不

python比對數據庫表數據的腳本

%s import gpa post parse pwd 基本原理 -- get 最近在做一個數據庫異構復制的項目,客戶表示需要一個數據比對的工具,我就自己寫了一個異構數據庫的比對python腳本.這個比對腳本只能比對數量,不能比對具體的記錄.使用的sql語句也是最基礎的s

Java實現網路語音訊號傳送

本文轉載自部落格:https://www.aliyun.com/jiaocheng/347518.html ----------------------------------------------------------------------------------------------

jsmin批量壓縮JS的批處理檔案

在網頁中動態載入的 JavaScript 對於頁面顯示的速度影響甚多,不得不注意! 尤其是很多人習慣把 JavaScript include 寫在 <head> 區塊中,這樣一來最大的問題就是 Browser 必須要等到 JavaScript 全部讀完後才會開始顯

開源框架是如何通過JMX來監控的(一)

相信很多做Java開發的同學都使用過JDK自帶的 jconsole 或者 jvisualvm 監控過JVM的執行情況,但不知道有沒有留意過它們會有一個MBean的功能/標籤,通過MBean可以看到在JVM中執行的元件的一些屬性和操作     例如,可以看到Tomcat

一篇關於卷積的通俗易懂的文章

作者用最通俗的語言詮釋了卷積,覺得不錯,公式太抽象,這樣解釋就易懂很多。原文出處不詳。最近總是和卷積打交道,工作需要,每天都要碰到它好幾次,不勝煩惱,因為在大學時候學訊號與系統的時候就沒學會,我於是心想一定要把卷積完全搞明白。正好同辦公室的同學也問我什麼是卷積,師姐昨天也告訴

集群/分布式環境5種session處理策略

學習 原理 memcache 可選 ret 當前 memcach uil 服務器 轉載至:http://blog.csdn.net/u010028869/article/details/50773174 在搭建完集群環境後,不得不考慮的一個問題就是用戶訪問產生的sessi

默認網關有什麽?我應當怎麽填寫默認網關和DNS呢

北京 互聯網服務 ipv 上網 detail 才會 輸入 大小 子網掩碼 默認網關有什麽用?我應當怎麽填寫默認網關和DNS呢? 目前使用的是pppoe方式上網,無貓,只是將一根入戶的網線插在無線路由上面,然後在路由中設置ppoe方式上網,輸入帳號密碼。一般電腦和手機全設成

關於LIS和一類可以樹狀數組優化的DP 預備知識

免費 關註 最長上升子序列 2.3 bzoj1264 一個數 long 個數字 等於 原文鏈接 http://www.cnblogs.com/liu-runda/p/6193690.html 預備知識     DP(Dynamic Programming)

read 系統調剖析

column 解析 sync 表示 per page 初始化過程 使用 eric 轉自:https://www.ibm.com/developerworks/cn/linux/l-cn-read/ 大部分程序員可能會有這樣的疑問:當在程序中調用庫函數 read 時

php(thinkphp)在linux系統pdfpng圖片

dirname solution ima .tar.gz center thinkphp loaded cep .net PHP)中使用imagick實現把PDF轉成圖片 操作之前,先在linux服務器安裝 ghostscript 650 2017-06-17 13:31

Linux內核中斷引入戶空間(異步通知機制)

sso mis 文件 ack 文件的 ssi dsm 進行 log 轉自:http://blog.csdn.net/kingdragonfly120/article/details/10858647 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

戶空間與內核空間,進程上下文與中斷上下文[總結]

存儲器 com ont article 模式 tab 用戶代碼 ssi 而在 轉自:http://blog.csdn.net/lizuobin2/article/details/51791863 本文轉載自:http://www.cnblogs.com/Anker/p/3

Linuxgit源碼安裝

lac itl 允許 pla rom code ins 8.0 代碼 轉自:http://blog.csdn.net/u012889638/article/details/51167123 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 版本信息:Cent

搭建 Linux GitLab 服務器

ssh認證 target libcurl 擁有 strong 部分 system shel tin 轉自:http://blog.csdn.net/passion_wu128/article/details/8216086 版權聲明:本文為博主原創文章,未經博主允許不

Linux的兩個經典宏定義

unsigned 結果 type gen pause 5-0 成員變量 32位系統 取出 轉自:http://www.linuxidc.com/Linux/2015-07/120014.htm 本文首先介紹Linux下的經典宏定義,感受極客的智慧,然後根據該經典定義為下篇