大數據常見知識

大數據的4v特性

1、巨量化:作爲大數據的系統,那麼首先必須要保證的是數據量的本身龐大,所以,我們認爲凡是可以稱作大數據系統的,必須要有至少PB級別以上的數據,才能夠叫做大數據。

2、多樣性:大數據的數據源和數據類型其實都是符合多樣化的,在最早期的網絡中,我們往往只傳輸文字和表格等相關的簡單數據,但是現在的互聯網更多傳輸的是視頻,語音和圖片等相關的數據。那麼數據類型的多樣,本身就構成了多樣化。第二個多樣性主要是體現在 來源多樣性,最早期的互聯網,由於更多的是由上層的互聯網廠商向下遊輸出數據,所以我們基礎用戶更多的是去接收數據,但是隨着網絡和技術發展,現在底層用戶成爲了數據的最大的貢獻者。數據的來源就從最早期的廠商推送到後來的個人用戶反饋,日誌收集以及工廠的傳感器等等。

3、大數據的系統整體數據價值很高,但是價值密度很低。

4、速度快,大數據的系統一定要保證數據的及時響應,因爲時間如果超過了有效期,數據可能會失效。

大數據的工作

1、數據獲取——Kafka、Flume

2、數據存儲——HDFS、HBase、Hive

3、數據分析——MapReduce、Spark2x、Streaming、Flink

4、數據挖掘——Spark2x

數據分析和數據挖掘最大的區別在於,數據挖掘可以找到數據中隱含的規律和知識,並且可以進行預測。數據分析只是對數據進行可見化的操作和計算,找到其中的一些相關的規律和知識,但是數據挖掘,他更多的是站在數學的角度上去發現相關的規律,以及更深層次的隱含知識。通過信息論、概率學、大數計算、線性代數等相關的方式去進行知識提取。然後將這些知識用於對未來或者是未知的數據做預測操作。

1、結構化數據:txt、excel

2、非結構化數據:圖片,視頻,音頻

3、半結構化數據:網頁文件

集羣、分佈式

集羣:多臺設備承載同一個工作對外提供統一業務。

分佈式:將一個業務拆分成子業務,交給不同的設備去運行,對外顯示的還是統一業務。

Hadoop組件關係

HDFS

元數據:描述數據的數據,主要是說明了文件的屬性信息,比如名字,大小,創建時間,修改時間等等。

HDFS做爲分佈式的文件系統,其必須要能夠承載海量數據。

1、爲了保證大數據的安全,HDFS將數據的安全保護交給了自身,而不是底層的硬件。

2、爲了能夠適應大數據的數據讀取和寫入,那麼HDFS提供了海量數據的傳輸的能力。

3、大文件存儲:由於大數據中單文件的大小都是比較大規模的,那麼HDFS提供了對單個大文件的存儲能力,並且理論上沒有上限。

4、HDFS是基於通用硬件平臺的。也就是指不管底層是什麼框架什麼系統,HDFS都可以進行搭載。

HDFS不適合對小文件進行存儲,因爲爲了保護HDFS的高速查詢和讀取。所以HDFS都是將元數據存放在內存中的。而每個元數據固定大小是150b。那麼小文件越多,佔用的元數據空間也就越大,那麼內存的佔用率就會越高,那麼小文件一旦很多,HDFS性能就會收到很大的影響,但是如果大文件比較多,這個時候性能就很優異。

在大數據中,往往我們的數據和系統都是一次寫入多次讀取的。所以HDFS使用的是WORM模型write once read many,也就是HDFS只允許一次數據寫入,之後就不允許在做更改了,然後HDFS提供了每個時刻的N個進程用於做數據處理,但是隻有1個進程是用於處理寫入的業務的,其他的進程全部用於對外提供數據的讀取。

MapReduce

離線計算引擎

MapReduce主要的功能就是做離線計算使用的,那麼離線計算往往是計算海量數據的,每個基礎數據集至少會大於1TB。

MapReduce易於編程,程序員可以直接指定自己的計算目的,其他的都交給MapReduce來執行。MapReduce主要是分爲了Map過程和Reduce過程。Map主要做的是數據的輸入和計算,Reduce主要做的是結果的輸出。

MapReduce的計算如果無法滿足要求,可以通過添加硬件的方式進行線性的性能提升,比如內存或者硬盤不滿足要求的時候,可以通過直接添加服務器的方式進行性能提升。那麼性能提升效率和整體的計算能力都會得到很大的改善,MapReduce通過內部的Yarn資源管理器來進行資源管理。以此避免設備的極大的管理開銷。這樣就可以實現理論上的無限拓展。可以將計算能力拉昇到一個很高的值。

機器管理設備的開銷=新添加的設備的資源量

MapReduce的缺點在於如果使用其計算,數據必須要存儲在HDFS上,而且計算需要消耗大量的時間,所以一般對於實時性要求很高的業務,我們都不推薦使用MapReduce。

爲了減少計算的時間和開銷,我們提出了使用Spark,Spark叫做基於內存的計算引擎。

也就是說,Spark在計算的時候,所有的數據處理都是在內存中交互完成的,而不是在硬盤中,所以Spark的計算速度非常的快。

Spark中主要分爲了以下幾個組件:

SparkCore:主要是用於做核心計算的組件,那麼所有的Spark計算最終都會轉變爲core去進行相關的數據計算

sql:Spark對結構化數據進行計算的一個引擎。

Mlib:machine learning library機器學習算法庫

Graph:圖計算

Hbase分佈式數據庫

Hbase作爲大數據的數據庫組件,主要提供的是對海量數據的存儲功能,Hbase底層的數據還是存儲在HDFS上的,但是Hbase提供的主要就是二次的結構維護能力,Hbase支持對結構化數據,非結構化數據和半結構化數據進行存儲。所以其適用性更強,而且Hbase是面向於列的存儲,這也使Hbase更適合於做數據分析。通過調用Zookeeper的業務,Hbase實現了自身的組件和數據的安全性保證,而且藉助HDFS的數據安全性能,其可以做二次數據保護,提升整個系統的安全防護能力、

Streaming

Streaming是一個事件驅動型的計算引擎。所謂事件驅動型,就是指Streaming的計算只要有事件觸發馬上就會開始工作。

Spark等傳統的引擎都是用戶上傳計算的軟件包,然後Spark等計算引擎計算完成之後,將結果反饋並且關閉自己。所以傳統的計算引擎都是進行自我管理的。用戶只需要下發計算包,其餘的都由引擎自己完成,計算中如果需要添加數據,或者是做一些更改都是不可行的,而且停止計算之後,如果想要重啓,就只能從頭計算。

Streaming作爲一個事件驅動型的計算引擎,其主要的優勢就在於它進行的計算的時候,下發的計算包會一直存在,不會自動關閉,平時不計算的時候就處於休眠狀態,那麼一旦有數據進入,就會馬上喚醒進行正常的計算工作。我們就將這個過程稱爲事件驅動型,事件其實就是數據寫入做喚醒Streaming的這個動作。

Flink和Streaming其實本質上區別不是很大,功能上基本一致,但是Flink可以同時支持批處理和流處理。

批處理指的就是將數據預先存儲到本地,然後進行計算。

流處理指的就是將數據不預先存儲,有輸入就實時計算並反饋結果。

批處理主要用於處理大量的數據,並且只進行一次計算

流處理主要用於處理實時性數據,並且數據量要比較小。而且要做多次計算。

Flume主要做的是日誌收集的工作,其主要用於收集相關的日誌信息。並且轉發給底層的存儲組件。Flume可以提供短時間的數據臨時存儲功能。

Kafka主要做的是海量數據的收集工作,其主要用於收集訂閱的數據,Kafka可以用於收集海量數據並且做長期的存儲。

Kafka的主要特點在於其數據的讀取和寫入是具有強順序性的。通過指針的方式去限定數據讀取的次序和每次讀取的數據的大小。Flume就可以去做實時性的讀取。

Zookeeper主要是爲Hadoop中所有的組件提供安全性保障的一個組件。通過Zookeeper可以保證所有的組件都絕對不丟失相關的配置信息。Zookeeper至少需要3臺及3臺以上的設備組成,通過分佈式的方式,去實現整體數據安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章