1. 程式人生 > >分布式存儲和計算的結合

分布式存儲和計算的結合

今天 位置 link 看美女 spark 組件 分布式存儲 shuffle 鏡頭

再介紹了之前的hadoop以及spark的相關組件之後,就像一輛汽車一樣,只有將所有的組件進行組裝之後他才可以正常的上路,在公路上疾駛,今天我們就將之前的組件進行一個簡單的安裝
首先是油箱--分布式存儲
在當今社會,數據量越來越大,就像女孩子看電視劇一樣,我把你喜歡的電視劇、電影等等的視頻資源全給你,一共10PB,只有一次的存儲機會,那我們應該怎麽存儲呢?趙本山說過把一只大象存入冰箱一共需要三不,打開冰箱,放入大象,關閉冰箱,同樣的,存數據也分為這麽三個步驟,打開電腦,數據存磁盤,關閉電腦,但是存在一個問題,真的可以把大象放入到冰箱中嗎?相對於10PB的影視資料來說,現在的個人設備是很難完成這個任務的,但是女孩子又舍不得這些帥哥怎麽辦,那麽女生就會找幾個自己的好閨蜜,把這10PB的電視劇按照類型進行分類,然後每個閨蜜的電腦上放幾部,然後存放所有的數據,這就是分布式的思維,我們將大文件切割成一個個的小文件,然後部署多臺服務器,每臺服務器上存儲一點,也就完成了數據的存儲
數據存儲完了之後,如果有一天想看電視劇了,可是不知道那個閨蜜的電腦上存儲著我要看的電影,只能每個人的打電話去問他那裏有什麽電影,浪費時間跟精力,等找到之後也就沒有想看的心情了,那怎麽辦呢?那我就可以找一個人,記錄一下哪一部電視劇放在誰那裏,這就是管理員,它會存儲元數據(小文件的位置,大數據切割了多少個小文件),那管理員為了更好的管理就提出了兩個方案,一個是直接找管理員要數據,二就是找管理員要地址,自己通過地址去取數據,大家想了一下,發現找管理員要數據,還要等管理員去相應的地址拿數據回來,浪費時間(經過兩次磁盤IO,效率很低),第二種方案我拿到地址之後可以直接去那個閨蜜哪裏拿數據,節約了時間,提高了效率,這也就是Hadoop中的HDFS
HDFS特點:1、分塊存儲 就可以多進程多線程的處理數據
2、禁掉一些功能,防止HDFS占用過多資源,比如默認塊的大小128M,在成功存儲之後不能在進行修改
3、對外暴漏出數據的位置
4、數據的冗余,使得數據更加的安全 數據會進行相應的備份

有了一個性能優越的油箱提供強勁的能源支撐之後,我們也要有一個完美的發動機去提供動力---分布式批處理遠離概覽
當我們將海量的數據存儲到我的數據庫了之後,我們會對數據進行一個相應的處理,從這些數據中獲得我們需要的信息,然後制定我們自己的計劃,去進行自己的任務的規劃,就像存儲的時候,當我將這10PB級別的數據存儲到我各個閨蜜的電腦上之後,我要選擇性的找一些自己喜歡的帥哥美女出現的鏡頭,那麽我找的時候自己在慢慢的找可以嗎?肯定不可以,會消耗我太多的時間了,當然了,為了看美女我也沒什麽太大的辦法,那應該怎麽辦呢?這就是分布式批處理的概念了,那批處理就是對一批數據進行處理

舉一個例子講解一下:比方說從前有三座山,山上沒有廟,但是有三種不同的樹,山下沒有愚公,但是有三家不同的工廠,我們的三個工人要去砍樹有兩種不同的方法,要麽工人去山上,要麽把山搬到工人家裏去,處於人性化的考慮還是選擇工人去山上吧,這就是我們大數據的計算原則:計算向數據移動,計算就是工人,數據就是樹。工人開始砍樹,砍完樹之後要把樹運到山下的公司進行制作,但是有個問題,一棵樹在制作的時候會產生廢角料,這些廢料在運輸的過程就是我們的所謂的垃圾,他局勢產生不必要的資源占用,增加成本,那我們是不是可以在源頭就進行相應的整理呢?我們的工人在把樹木砍倒之後為了多賺點錢,就地把樹木加工成一個個的零部件,然後把零部件進行運輸,但是過了一段時間之後,工廠主還不滿足,他覺得我們都已經加工成組建了,他為了一次多運輸幾個節約運輸成本,讓我們啊零部件的一部分進行組裝,組裝成半成品和零部件然後進行運輸,這也就是我們分布式計算的原理,在源頭的時候就把數據進行相應的梳理、分類,然後傳輸到他們該去的節點。而因為每個山頭上的樹木是種類都有的,我們再發送到各個工廠的時候會進行一次重新分發和聚類,而這些分發和聚類就是shuffle的過程,shuffle會存在數據的網絡傳輸以及重新洗牌的過程。
程序來源於生活,就像砍樹,我們在計算機程序方面,也會遇到相應的問題,例如計算如何發送到節點,計算的不均衡,網絡傳輸的問題,這些問題不就是也會在砍樹的時候遇見的問題嗎,但是,現在砍樹有一個完整的解決體系一樣,我們也有一個自己的計算框架,這就是MapReduce、Spark等技術。
為了更好的提供動力來源,由渦輪發動機和普通發動機兩種概念,而渦輪發動機就是我們的分布式流式處理
大家肯定有過出遊的經歷,那我們是怎麽選擇的呢,坐公交還是自己開車,其實在大數據中也有相應的公交車和開車,公交車就算是我們的批處理,他會積攢一批人然後在一起出發,而開車就是我們的流式處理,自己坐上車嘀嘀一聲就出發了,可以去自己想去的地方,我想大家可能會說了,那現在不是還有滴滴嘛,這就是在流式處理之中的差別了,我們自己開車就是實時的流式處理,而滴滴就是一個微批的流式處理,他跟批處理的區別在於等待時間的一個區別,微批處理的時間間隔幾乎是可以進行忽略的,他積攢一小點時間的數據量然後進行處理
那麽現在有這麽兩類出行方式了,那麽人們出遊會選擇哪一種方式呢,那肯定是分布式流失處理啊,自己開車出去玩可以沒有時間的限制和地域的限制,在現在的公司也是這樣的,公司為了能夠及時的掌握數據信息,采用分分布式流式處理的延遲更低,可以更好地及時掌握價值,對未來進行調控和檢測
就像現在車已經普及了一樣,我們也有了現成的框架,這就是我們之後要介紹的SparkStreaming、Storm以及Flink
若想更好的進行交流可添加我們的qq群:859121793
微信公眾號:剛哥人工智能1000集
進行交流

分布式存儲和計算的結合