很多人會問大資料是什麼?
其實關於大資料並沒有乙個特別官方的說法,也沒有特別標準的解釋。
我個人覺得大資料就是短時間快速產生大量多種多樣的有價值的真實資訊。
大家都在**等購物平台上買過東西,廣大男性同胞也深知雙十一以及雙十二這種購物節的恐怖,這不是說女人有多恐怖,站在我們專業的角度上來說在短短時間內所產生的資料就相當恐怖。
在這些大量的資料面前,就要應用到大資料關於資料的一些計算,儲存,計算等等,這也就是我接下來給大家分享的關於大資料hdfs技術。
怎樣解決資料量過大的問題呢?
首先在面對海量的資料,我們首先要進行乙個儲存,為了解決空間不足,也就是記憶體或者儲存資源不足的問題主要有兩個方法:
1.垂直擴充套件
垂直擴充套件就是在你電腦本身或者機架上新增記憶體條或者增加硬碟數量,就是改變本身的硬體設施提公升記憶體空間來儲存資料。
2.橫向擴充套件
所謂的橫向擴充套件就是增加電腦數量或者新增機架數量,讓其連線起來組成乙個大型儲存空間。
儲存的問題解決了那接下來就需要對這些資料進行乙個處理。
資料的處理
根據最早的谷歌的三大**衍生了兩種新型的技數:
1.gfs 衍生出hdfs 分布式檔案系統也就是分布式的儲存
2.mapreduce 分布式的處理
3.bigdata 衍生出hbase
關於hdfs的總結
知道了hdfs是乙個分布式檔案系統
hdfs中包含了許多細小的技術
他們分別是
1.yarn 資源和任務的排程
2.mapreduce 批處理
關於mapreduce 這裡重點給大家說一下,批處理是分批處理,什麼意思呢,就是相當於先把資料放到乙個容器,然後在處理,分批式的處理。
3.spark 相當於是乙個儲存形式吧,在裡面還有些細小的技術分支:
1.spark core 相當於是核心
2.spark sql 可以使用sql語句對資料進行操作
3.sparkstreaming 流式處理
4.mllib 機器學習庫
5.graphx spark已經停止維護了 也就是說被淘汰了
hdfs需要一些支援
kafka 緩衝地帶對於資料的處理是非常快
zookeeper 協調服務
flume 是cloudera提供的乙個高可用的,高可靠的,分布式的海量日誌採集、聚合和傳輸的系統
hive 是乙個大型的關係型資料庫 可以用sql語句對資料操作
flink 是乙個面向資料流處理和批量資料處理的可分布式的開源計算框架
storm 是乙個免費的開源的分布式實時計算系統
hbase 是高可靠、高效能,面向列、可伸縮的分布式儲存系統,利用hbase可以對大表資料的讀、寫達到實時級別
hdfs的主從架構
主節點 (namenode)相當於老闆
從節點 (datanode)相當於員工
client 相當於秘書
主節點 的作用
1.掌控全域性 管理從節點(datanode)的資訊 管理元資料 元資料就是描述資料的資料
2.接受client的請求 讀寫
3.與從節點 (datanode)之間進行相應的通訊
從節點 (datanode)的作用
1.儲存資料
2.儲存完畢後返回資訊給namenode主節點
3.接受client的任務安排
hdfs的機制
存檔案 與 讀檔案 是hdfs的讀寫機制
備份 為了解決資料安全的問題 防止意外的資料丟失
寫操作的步驟
1.需要乙個大檔案
2.client會將大檔案進行切塊 大檔案的大小/128mb=block的塊數
3.向主節點返回 分割的block的塊數 檔案的大小 檔案的許可權 檔案的屬主 檔案的上傳時間
4.client 分割出一塊block大小為128mb
5.client會向namenode主節點申請一些資源 也就是負載量不高的datanode資訊
6.namenode 會返回client一些負載量不高的datanode資訊
7.client會向datanode傳送切割好的block塊 並備份
8.datanode儲存block塊之後會向namenode匯報儲存情況
讀操作的步驟
1.namenode會向client傳送乙個請求 ,client接收到請求後會向namenode申請從節點的資訊 也就是block的id
2.namenode會向client返回block的id
3.client獲取到block的id的資訊後會向datanode上拿取資料
注:讀操作的原則 就是就近原則
備份機制
備份的方式有兩種
一種是集群內提交 所謂的集群內提交就是不通過client的操作 直接由namenode直接在datanode儲存block一般情況下這種檔案較小
另一種就是集群外提交 就是通過client的幫助 由client分割block儲存到datanode
儲存時注意
1.備份在與第一備份不同的機架的任意datanode上
防止機架意外備份丟失
2.放置在第二個機架不同的datanode上
意思就是同乙個備份乙個datanode不能儲存兩份不然沒有意義
pipeline管道
1.namenode返回給client一些datanode的資訊之後
2.client會將block分割成乙個個ackpackage的64kb的小塊
這麼做的意義在於 減少資源的浪費 加快效率
3.datanode會從管道中拿去相應的ackpackage進行儲存
4.datanode儲存block塊之後會向namenode匯報儲存情況
hdfs的資料儲存方式
hdfs是以block塊的形式將大型的資料檔案進行儲存的
block 的1.0版本預設每塊64mb的大小為最佳進行資料儲存
block 的2.0及以上版本預設每塊128mb的大小為最佳進行資料儲存
關於biock的簡單介紹
檔案線性切割成塊
偏移量 offset 預設以byte為單位
block分散儲存在集群的節點上 也就是分散的儲存在從節點上(datanode)
單一檔案block大小一致
意思就是在儲存檔案時block的大小已經確定 之間的的任何操作他的大小都不會改變
檔案的大小可以不一致
意思就是在block沒有分割檔案時的大小是不一樣的
可以設定block副本數
意思就是可以設定備份的數量
**副本分布在不同的節點中
**意思就是副本要存在不同的 從節點 (datanode)上 防止資料丟失
副本數不要超過節點數量
意思就是備份的數量不要超過從節點 (datanode)的數量 不然的話有可能從節點 (datanode)上重複備份 浪費資源 沒有意義
檔案上傳時可以設定block大小和副本數
意思就是檔案在儲存時可以設定block塊的大小 並不是說規定的就是128mb 而是最佳為128mb 副本數就是備份 我可以設定到底備份幾份在從節點 (datanode)
已上傳的檔案block副本數可以調整數量 大小不可以改變
意思就是備份數量可以改變但是block塊的大小不可以改變了
只支援一次寫入多次讀取 同一時刻只有乙個寫入者
意思就是只儲存一遍 多次檢視 一次只允許儲存乙個檔案
博弈 個人 見解
由於周測 做了好久的博弈題,找了好多關於博弈的相關資料,感覺自己,似乎還是動了那麼一點點。臨睡前,就小小的總結一下,希望以後看到的時候,可以有所感悟吧!接下來是正題。講到博弈,事實上也就是找規律,可是知道一般的博弈型別能夠高速便捷的解決這個問題。博弈的型別大致有下面幾種 巴什博弈,威佐夫博奕,尼姆博...
mysql個人見解
mysql基本原理 僅個人理解 mysql屬於c s架構,即客戶端和服務端互動 1.連線 例php mysqli connect 以客戶端發起請求,mysql服務端進行接收並處理,其中客戶端每發起的一次鏈結mysql均起乙個執行緒來維持乙個socket 套接字 此時會有服務端資源的開銷,因此mysq...
BGP 個人見解
bgp是一種用於自治系統之間的動態路由協議,主要用於交換as之間的可達路由資訊,構建as域間的傳播路徑,防止路由環路的產生,並在as級別應用一些路由策略.bgp作為事實上的internet外部路由協議標準,被廣泛應用於isp之間 1,bgp是一種外部閘道器協議,起作用不在於自動發現網路topo,而在...