大綱:
一. 大數(shù)據(jù)啟蒙認(rèn)識(shí)
二. HDFS
三. Hadoop1.0的非HA模式(SecondaryNameNode)
四. Hadoop2.0或者3.0的HA模式
大數(shù)據(jù)啟蒙認(rèn)識(shí)
假定事件一:
有一個(gè)1TB的文件啃勉,怎么樣找出其中相同的行? 因?yàn)槲募容^大双妨,所以一般情況下不能直接把他們讀取到內(nèi)存當(dāng)中淮阐,只能一行一行讀取,并且需要所有的都要讀取兩遍斥难,如下圖:
時(shí)間復(fù)雜度為 O(n^2) n為文件的行
如果從大數(shù)據(jù)分布式的角度來考慮的話枝嘶,我們可以怎么樣解決上面的問題呢帘饶?
假定我們有2000臺(tái)集群哑诊,把讀入的每一行通過hash算法得到一個(gè)hashcode(hash算法是穩(wěn)定的,只要是相同的字符串及刻,它們得到的hashcode就會(huì)是一樣的)镀裤,然后進(jìn)行取模運(yùn)算竞阐,寫入到相應(yīng)編號(hào)的集群服務(wù)器中。大概我們可以想象成如下的樣子來查找:
注意: 每一行字符串hash算法之后會(huì)得到一個(gè)hashcode暑劝,且這個(gè)算法是穩(wěn)定的骆莹,只要是相同的行經(jīng)過hash算法之后得到的hashcode一定是一樣的,也就說相同的行一定會(huì)被分配到同一臺(tái)服務(wù)器當(dāng)中担猛。
雖然兩者都要進(jìn)行兩次的I/O操作幕垦,但是因?yàn)榉植际郊海诙蔚腎/O操作分散給了2000集群分別去完成傅联,所以花費(fèi)的時(shí)間明顯會(huì)更快先改。 這也是分布式的優(yōu)勢(shì)。
假定事件二:
有一個(gè)這樣的文件蒸走,文件中包含了1~999999的數(shù)字(無序)仇奶,每個(gè)數(shù)字占一行,現(xiàn)在想把這個(gè)文件的數(shù)字按順序進(jìn)行排列比驻。
從文件中讀出一行數(shù)字该溯,然后判斷數(shù)字所屬范圍,并寫入到相應(yīng)的容器中别惦,一次類推狈茉,寫完所有的數(shù)據(jù)之后,每個(gè)容器內(nèi)部進(jìn)行排序運(yùn)算就可以步咪,最后所有的容器的數(shù)據(jù)就是一個(gè)有序的隊(duì)列论皆,大概會(huì)是如下的樣子:
這就是分布式也就是大數(shù)據(jù)的優(yōu)勢(shì),把一個(gè)復(fù)雜的過程分解開來猾漫,分散到集群當(dāng)中点晴,讓每一個(gè)單元去完成分解之后的任務(wù)。
后來還會(huì)持續(xù)更新悯周。粒督。。