加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[bigdata]小象幫幫忙,Hadoop 能幫什麼忙?

发布时间:2020-12-30 20:24:02 所属栏目:大数据 来源:网络整理
导读:https://dotblogs.com.tw/rickyteng/2012/12/11/85556 [bigdata]小象幫幫忙,Hadoop 能幫什麼忙? Hadoop 文獻探討 微軟巨量資料策略轉向,全面支援Hadoop http://www.ithome.com.tw/itadm/article.php?c=77576 微軟表示,全面支援 Apache Hadoop,這消息說

https://dotblogs.com.tw/rickyteng/2012/12/11/85556


[bigdata]小象幫幫忙,Hadoop 能幫什麼忙?

Hadoop 文獻探討

微軟巨量資料策略轉向,全面支援Hadoop

http://www.ithome.com.tw/itadm/article.php?c=77576

微軟表示,全面支援 Apache Hadoop,這消息說明了:

Hadoop 夠熱門,讓微軟無法抵擋。俗話說:「打不動,就加入」,現在微軟就加入了。??
這不是第一個微軟採納的開放軟體。jQuery,在2008年加入微軟的 visual studio。??
並且 ASP .NET MVC,ASP .NET AJAX 都將採用 jQuery 的技術。(舊消息)

最近熱門關鍵字,從雲端,換成 Big Data,有翻譯成「巨量資料」、有翻譯成「海量資料」,??
到底這是什麼東西?為什麼幾乎每個介紹文章都會講到 Hadoop ?為什麼講雲端的時候有的也會提到 Hadoop?說來話長。

何謂Big Data?這問題目前沒辦法正面回答,因為個人認為現在這東西還在成長變化中,??
也不是一個標準,所以無法用文字嚴格定義。網路上多數的文章會這麼說:

「因為雲端時代的來臨,資料量增加的速度非常快,所以需要一些新方法來應付這些資料。??
巨量資料的特性有 3V,Volume(資料量大),Volecity(產生速度快),Variety(資料多樣性高)??
在合理時間及資源下,巨量資料的技術才能夠應付這些需求。」

其實,這還是很模糊的描述。所以,只能知道,巨量資料並不是突然跑出來的東西。但「巨量資料」這個名詞是為了方便討論某些情況下,使用某些技術而產生的新名詞。巨量資料並不是每一個人或每一個企業都會面臨到的,有能力產生上面描述的 3V 的資料,才會有需要使用到巨量資料的技術。

因此,接下來,我們反過來,從被微軟納入解決方案核心的 Hadoop 來看。看 Hadoop 能夠解決什麼問題,至少可以了解,巨量資料大概是什麼東西。

Hadoop 提供的核心功能有二,名字叫 HDFS 以及 MapReduce。HDFS 是 Hadoop Distributed File System 的縮寫。MapReduce 則是 Hadoop 採用分散式計算的技術。也就是,它基本上要解決的問題有兩個,一個是儲存,一個是計算。

在 HDFS 的設計概念是這樣的。在一群電腦裡面,找一台電腦當老大,叫做 Master Node。它必須負責管理所有的電腦(包含自己)的資料的存放狀態、控制讀寫動作。所以裝了一個程式叫 Name Node 來做管理這件事。也裝了一個 Data Node 的程式來放資料。其他的電腦,叫做 Worker Node,裝了一個 Data Node 的程式來放資料。放資料的規則是,先把一個檔案,切成數個小塊(block),每塊為 64 MB,然後, Name Node 會讓檔案塊,分散到各個不同的 Data Node 去,而且,還會讓整個電腦叢集裡,每一個檔案塊,都有三份。若是 Name Node 發現檔案塊遺失或損壞,會開始尋找其他的 Data Node 上的副本來複製,使得整個電腦叢集維持每個檔案塊的數量都有三份。

從以上的設計慨念裡,可以知道:(1)它不怕單一資料存放區的硬體壞掉,壞掉照常工作,並自動回復、(2)它不怕單一檔案的大小超過一個磁碟區的大小、(3)資料存放區的大小,可以動態增加。(註1)

註1:http://www.classcloud.org/cloud/wiki/Hadoop_Lab8

要講 MapReduce 的設計概念,先講解一下,MapReduce 是什麼。在 functional language 裡面可常見到這個字。它其實是兩個英文字連起來的。也就是 Map 及 Reduce。??
Map 是一種具有某種行為特色的函數,三言兩語說不清,我舉一個例子來說明。假設我有一個數列A,1~10,我想要得到另一個數列B,它裡面的數字是數列A的每個數字的 2 倍,相當於B = f(A),f(x): y=2x。撇開數學式不看。寫程式會這樣寫(C#):

int[] A = { 1,2,3,4,5,6,7,8,9,10 };??
int[] B = { 0,0 }; //初值化的數列??
static int f(int x) { return 2 * x; }

for (int i = 0; i < A.Length; i++)??
{??
??? B[i] = f(A[i]);??
}

這程式裡面看到,數列A、數列B,還有函數 f。剩下來的是那個迴圈,它的動作是把每個數列A的數值,經過函數 f 得到的值,放到數列B 對應的位置。只要是可以完成這一類事情的函數,就叫做 Map 函數。這種函數的特色就是可以平行咚恪R陨鲜龅睦?樱?

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读