hadoop實戰 一 hadoop基本概念

2021-07-25 05:32:39 字數 1715 閱讀 3706

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...