hadoop_wiki上定義,apache hadoop
is an
open-source
software framework
used for
distributed storage
and processing of very large
data sets
.就是說hadoop是(大資料下)分布式的資料處理框架。所以我們從 如下兩個方面理解hadoop。[我們接下來重點從hadoop的改進上來說]
比如一般地seti@home這個框架,在分布式計算的時候會在client和server之間進行資料傳輸,所以它更適合於計算密集型任務,而不適合於資料密集型任務。那麼在大資料環境下,該框架就顯得低效了。so,可以很容易想到的乙個改進就是不進行大量的資料遷移,這就是hadoop的思想,「將**向資料遷移,盡量讓計算發生在資料駐留之地」,這就與hadoop「面向資料密集型處理」的設計目標一致。
1)hadoop多面向非結構化文字資料的處理(使用key-value對),sql是結構化資料庫;
2)可以使用mr建立複雜的資料統計模型,sql使用基本的操作語句;
3)hadoop是面向離線批量處理
所以mr的資料流是:
下面我們從乙個簡單的wordcount例子來理解hadoop的設計思想,看看這樣乙個框架到底帶給我們什麼?
給定乙個句子,統計其中的單詞數目。
1)遍歷取詞,通過多重集合wordcount統計,即wordcount中的相應項加1。【一般多重集合使用雜湊表實現。】
但是當資料量很大時,這樣做十分耗時,效率很低,於是:
2)分布式:每台機器處理文件的不同部分,然後合併。
這樣做也有問題,需要將資料分發到不同機器,然後機器再處理,這明顯很蠢嘛,所以會考慮分布式儲存,從而將儲存和處理緊緊繫結起來。
還有,第二階段的合併只能在乙個機器上執行麼?這會很大的效率瓶頸,更大的問題是,記憶體限制導致不能處理那麼大的資料量,如果用硬碟雜湊的話,工作量會很大,很複雜。於是:
3)第二階段的合併也擴充套件成並行化處理:
問題在於:如何**資料集才能擴充套件?乙個例子是每台機器只處理某個字幕開頭的單詞。這個洗牌分割槽的過程,就是hadoop在map和reduce之間自動實現的partition和shuffle過程。
以上,我們看懂了一般地處理模型會遇到的問題:
1)記憶體不夠將整條資料讀入;
2)頻寬限制導致處理資料密集任務時效率低下;
3)沒有容錯措施
4).......
資源參考:
wiki_apache hadoop
hadoop官網
■ the google file system
—■ mapreduce: simplified data processing on large clusters
—*****s/mapreduce.html
Hadoop實戰應用
1 雲盤儲存系統通過hdfs實現 2 hadoop三大發行版本 1 apache 基礎版本,實際企業使用比較少 2 cloudera cdh cloudera的hadoop發行版 clouderamanager 集群軟體分發及管理監控 3 hortonworks hdp hortonworks da...
hadoop實戰隨筆 0712
org.apache.hadoop.conf 定義了系統引數的配置檔案處理api。org.apache.hadoop.fs 定義了抽象的檔案系統api org.apache.hadoop.dfs hadoop分布式檔案系統 hdfs 模組的實現 org.apache.hadoop.mapred ha...
hadoop實戰隨筆 0720
hdfs命令 distcp 一般用於在兩個hdfs集群間傳遞資料的情況。namenode format 格式化dfs檔案系統 secondarynamenode 執行dfs的secondarynamenode程序 namenode 執行dfs的namenode程序 datanode 執行dfs的da...