91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop入門

發布時間:2020-05-30 20:04:33 來源:網絡 閱讀:2235 作者:MT_IT 欄目:大數據


MapReduce&HDFS簡介

一、Hadoop簡介:

結構化數據:表,關系型數據庫//有嚴格的約束

半結構化數據:html,json,yaml,有元數據// 有約束,缺少嚴格的約束

非結構化數據:沒有預定義的模型,元數據 //日志數據等

搜索引擎:搜索組件、索引組件

    網絡爬蟲:爬到的內容多為半結構化或者非結構化數據

    構建倒排索引[基于精確搜索或模糊搜索基于相關度匹配]存儲到存儲系統[非RDBMS]中。

2003年:The Google File System//google如何實現文件存儲,不支持對數據進行隨機和實時訪問,僅適用于存儲少量的體積巨大的文件。

假如爬到html頁面發生了改變,需要修改。則goole fs無法滿足該需求

2004年:MapReduce: simplified Data Precessing On Large Cluster//MapReduce編程模型,一個任務分布在各個節點上運行,后收集結果

2006年:BigTable: A Distributed Storage System for Structure Data //存儲結構化數據的分布式存儲

GFS->山寨后HDFS:

MapReduce->MapReduce:

BigTable->HBase:

HDFS + MapReduce = Hadoop //作者兒子的一個玩具

HBase:hadoop 的database 

Nutch:一個網絡爬蟲程序,為Lucene爬取數據

Hadoop的一個缺陷:MapReduce是批處理程序,

HDFS采用的是有中心節點的存儲格式

 client

|

元數據節點

|

===========================

node1  node2  node3  node n

1 1‘ 2 2’

        數據查詢過程:client->元數據節點[數據分布在哪些節點上]-->[node 1,2,3,,n]-->client  用戶查詢[寫代碼]-->先調用MapReduce的開發框架-->交由該框架運行

Map:該代碼需要分別運行在node1和node2上,各節點分別處理自己所用的那一部分

            //node1擁有1,node2擁有2

Reduce:最后要把node1和node2上的運行結果進行合并

最終速度:取決于速度最慢的 node

MapReduce:

1.開發API

2.運行框架

3.提供運行時環境

NAS和SAN的缺點:存儲系統只有1個,面對海量數據,需要進行數據存取,磁盤IO和網絡IO將面臨極大挑戰

因此出現了分布式存儲

二、HDFS和MapReduce

1.無中心節點 

2.有中心節點HDFS //元數據節點是瓶頸和核心所在。//GFS,HDFS,

    元數據節點:NN: name node //HA,內存數據持久化。他的數據都是存儲在內存中的

    //事務日志,寫入到持久存儲后,宕機后,重新加載,減少丟失的數據。

    后端主機要保證:服務可用+數據可用 //DN:data node 

    在宕機后回可能需要文件系統檢測,數據量過大時,需要浪費大量時間。

    //簡單的說:一旦NN崩潰,再次啟動需要半個小時,因為hadoop 1.X NN不支持HA

        SNN:second namenode后期提供,

NN需要在內存中不斷更新數據,寫入日志,日志和映像文件合并等

SNN:負責合并數據,假如NN崩潰SNN加載共享存儲的文件,自己工作。

    節省了時間,但是文件系統檢測需要的時間,依然沒有少。只是不用立即修復NN

LB:對不同的請求,分發到不同的主機

 client

|

NN--SNN

|

[鏡像][SHM]

|

===========================

node1  node2  node3  node n

1 1‘ 2 2’

HDFS 2.0之后的NN可以高可用

元數據不再存放到本地存儲,而是存儲到一個共享存儲存放,基于內存完成元數據存放。

例如:NFS[腦裂]不常用,ZooKeeper

NN1和NN2的更新 操作都向ZooKeeper同步,因此每一個節點都可以從ZooKeeper獲取同樣的數據。

//zookeeper:分布式協調工具(分布式鎖),google的Chubby(不開源)

http://www.cnblogs.com/wuxl360/p/5817471.html //參考網站

數據節點:存放各個chunk的

每個數據存儲副本:存儲到其他節點。默認存儲3個副本。

存儲的時候,之存儲一個,由HDFS另找兩個節點進行存儲。

每一個存儲node會向服務node周期報告自己所存儲 的數據塊信息+自身狀態信息。

NN有兩個表:

1.以數據為中心,分布在哪些節點上

2.以節點為核心,持有哪些數據塊

數據如何處理://運行程序的集群

MapReduce:集群方式工作。

Map:分散運行

Reduce:合并

一個任務可以分為幾個Map,由MapReduce的框架進行控制的。

需要一個總的節點,進行調度 JobTracker

理想情況:讓擁有請求數據的node都運行任務 //但是有的node可能已經很忙了

假如擁有數據的node繁忙解決方案:

1.等待

2.找副本所在節點 //可能副本節點也比較忙

3.找一個空閑的節點,運行任務。//可能需要復制副本到該空閑node

對于HDFS來說

Hadoop和MapReduce共用的數據節點

client

    |

JobTracker

    |

===========================

node1  node2  node3  node n

1 1'    2      2'

//只是這些節點,不再叫做Data Node而稱為Task Tracker,

這些node需要運行兩類進程:DataNode /Task Tracker  //負責數據的存儲和處理

因此一個Hadoop就是兩類集群的結合:存儲數據和處理數據使用的是同一個類節點

三、數據處理模型

程序運行node把數據加載到程序所在node 進行運行 //數據向程序靠攏

Hadoop以數據為中心,讓程序到數據所在節點上運行 //程序向數據靠攏

JobTracker和Name node的工作是不沖突的,因此可以部署在同一個節點上

[JobTracker/NameNode]

||

=====================================================================

taskTracker/DataNode1 taskTracker/DataNode2 taskTracker/DataNode3 ...

每個人提交的任務,不一定是運行在所有節點上的,很有可能是運行在幾個節點上的

可以限制一個node最多可以運行多少個任務。

四、函數式編程:

Lisp:ML函數式編程語言:高階函數;

map,fold

map:把一個任務映射為多個任務

fold:折疊

示例:map(f()} //map將把f函數運行為多份,分別運行在多個節點上。

map:接受一個函數為參數,并將其應用于列表中的所有元素;

示例列表為:1,2,3,4,5

要獲取每個人age,分別在1,2,3,4,5上執行

例如map后的結果為:22,33,44,12,34

fold:接受兩個參數 1:函數,2:初始值

fold(g(),init) //

把第一個的處理結果替換為init,然后使用g()和第一個的處理結果處理第二個數據,依次輪推

示例:22,33,44,12,34 // fold(g(1),init)=>foldg(g(2) 22)=>fold(g(g3),33),...

最后找出最大者。

MapReduce: //任何一個程序調用該APi之后,被分成兩段

mapper:在task tracker上運行的一個實例,最后生成一個結果列表

reducer:從mapper得到的多個結果中

統計一本書中每個單詞出現的次數:

mapper:每100頁一個單位,5個mapper用于拆分成為單詞;進行計數

例如拆成了10000個單詞,其中不乏有重復的

mapper需要保證重復的單詞發送給同一個reducer

稱為:shuffle and sort //傳輸排序的過程

reducer

reducer1,reducer2//啟動了兩個reducer,mapper輪流發送給reducer1和2,重復的發送給同一個reducer,保證每個reducre統計的單詞是不一樣的

最后合并

reducer1: 

this:500

is:10

reducer2:

how: 30

do: 20

兩者合并以后成為結果

MapReducer統計的對象數據都是key-value數據,不是kv數據需要先轉換為kv數據

mapper://轉換為kv數據

this 1,is 1, this 1,how 1 //出現一次標記為1

同一個鍵的數據只能發往同一個reducer

reducer: //也是kv數據

例如把this 對應的所有value相加

this:500

is:20 

mapper-reducer可能需要執行多次,才能達到結果,只是每次的目標不同而已。

也可以直接在mapper上統計本地的數據,再發送給reducer的時候

this:500

is:20 

//reducer可以和mapper一起啟動,或者reducer在mapper之后運行


相同的key發送給同一個reducer:誰來保證

由mapper reducer的框架決定的,//啟動幾個reducer是由程序員定義的

MapReduce:

1.開發API

2.運行框架

3.提供運行時環境

Hadoop能夠實現并行處理,

HDFS + MapReduce = Hadoop 

         調用MapReduce API的程序

            |

[NameNode] [JobTracker]

    || ||

=====================================================================

taskTracker/DataNode1 taskTracker/DataNode2 taskTracker/DataNode3 ...

Hadoop典型應用有:搜索、日志處理、推薦系統、數據分析、視頻圖像分析、數據保存等


圖1:MapReduce框架

Hadoop入門

五、MapReduce工作模型

MapReduce:工作模型

==================================================================================

[k1|m] [k2|n] [k3|r] [k4|s] [k5|m] [k6|t] [k7|m]

   \ /    \ /     \      /

 [mapper] [mapper]  [mapper]     [mapper]

    |         |        |       |

    V         V        V       V

[ik1|3] [ik3|1]  [ik1|6] [ik3|2]   [ik1|1] [ik1|4]  [ik2|3] [ik2|6]

【partitioner】  【partitioner】 【partitioner】  【partitioner】

+++++++++++++++++++++++++++++++++++++++++++++++++

// Shuffle & sort. aggressive values by keys //

++++++++++++++++++++++++++++++++++++++++++++++++

[ik1|3,6,1,4] [ik2|3,6] [ik3|1,2]

|                     |     |

V             V     V

    reducer reducer reducer

|     |     |

V     V     V

    [ok1|14] [ok2|9] [ok3|3]

====================================================================================

//mapper:讀取鍵值對,生成鍵值對

//combiner:負責在mapper之后,在mapper上把相同的鍵進行合并,僅此而已,輸入和輸出的鍵必須一致。

//partitioner:負責分發同一個key到同一個reducer,所有的partioner都是一樣的

生成的鍵值如何進行發送,由partitioner決定。

==================================================================================

[k1|m] [k2|n] [k3|r]      [k4|s]   [k5|m]     [k6|t] [k7|m]

    \ /   |          \     /        \  /

 [mapper] [mapper] [mapper] [mapper]

|           |     |                       |

V     V     V     V

    [ik1|3] [ik3|1] [ik1|6] [ik3|2]   [ik1|1] [ik1|4]  [ik2|3] [ik2|6]

    【combiner】 【combiner】  【combiner】   【combiner】

|    |     |      |

V    V     V      V

[ik1:3][ik3:1]    [ik1:6][ik3:2] [ik1:5]   [ik2:9]

【partitioner】  【partitioner】 【partitioner】  【partitioner】

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Shuffle & sort. aggressive values by keys //

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[ik1|3,6,1,4] [ik2|3,6] [ik3|1,2]

|     |     |

V     V     V

    reducer reducer reducer

|             |     |

V     V     V

[ok1|14] [ok2|9] [ok3|3]

====================================================================================

//combiner和partitioner都是由程序員寫的

Maper啟動的節點:可能沒有一個目標分片,但是需要處理n個分片,需要從其他node復制分片到該節點執行Maper程序

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万年县| 安泽县| 安多县| 武鸣县| 龙游县| 卢氏县| 浦城县| 辽中县| 崇文区| 河西区| 南江县| 台山市| 临漳县| 丘北县| 双辽市| 丰顺县| 台南市| 东阿县| 江口县| 五大连池市| 乌兰县| 福建省| 潼南县| 碌曲县| 临江市| 清水河县| 奉新县| 英山县| 绥中县| 郎溪县| 安徽省| 武陟县| 会昌县| 鄂托克前旗| 乐清市| 元谋县| 平邑县| 麦盖提县| 麻江县| 聊城市| 宁陕县|