「技術分享」最新小編整理離線分析的大數據技術集錦

大數據相關體系梳理:今天小夥伴突然問我大數據都學習了些神馬?就有了如下的對話,我也決定為她好好解答一下疑問。so,我們今天主要是以離線數據處理的技術為主。

1、zookeeper

大家知道大數據是對海量數據的處理,對於這種海量的存儲一般就會用到分佈式集群,然而分佈式環境下常見的問題比如:集群管理、統一命名服務,信息配置管理,分佈式鎖等就需要一個技術來處理,這個技術就是zookeeper。zookeeper旨在在分佈式應用中,提供可靠的、可擴展的、分佈式的、可配置的協調機制來管理整個集群的狀態。他的特性有:數據一致性,原子性,可靠性,實時性,順序性,過半性。

2、Hadoop

Hadoop的集群系統為了解決Nutch的海量數據存儲和處理的需求,可以解決大數據場景下的數據存儲和處理的問題。一開始HDFS和MapReduce是作為Nutch的兩個組件來使用,後來發現這兩個組件不只是可以用在Nutch搜索,所以就單獨取出來組成了Hadoop由HDFS、MapReduce、yarn組成。hadoopyou其中HDFS:用於分佈式文件的存儲,HDFS為了保證數據存儲的可靠性(複本)和讀取性能(切塊),對數據進行切塊後進行復制(保證複本的數量)並存儲在集群的多個節點中。HDFS中存在一個名字節點NameNode和多個數據節點DataNode。MapReduce:用於數據的計算,Yarn:進行任務調度。是Hadoop2.0出現的。數據塊(Block)是HDFS中存儲文件的最基本的存儲單位。

3、Flume

用於從不同的來源有效收集,聚集和移動大量的日誌數據用以集中式管理的系統。用於從不同的來源有效收集,聚集和移動大量的日誌數據用以集中式管理的系統。一條日誌在flume中會被轉換成一個JSON格式的串來傳遞,這個JSON串就是一個FlumeEvent。Flume Agent是一個基本的日誌收集單元,由Source Channel和 Sink組成。多個Agent之間還可以連接 形成複雜的日誌流動的網絡。Source 是消耗外部傳遞給他的事件,外部源將數據按照Flume Source 能識別的格式將Flume事件發送給Flume Source,Channel是一個被動的存儲,用來保持事件,直到由一個Flume Sink消耗。Sink代表外部數據存放位置。發送flume中的事件到指定的外部目標。

4、Hive

在對數據處理的時候必須會編程,必須對MR的底層實現有深入理解,開發調試比較麻煩,能不能用一種更加通用的簡單的方式 來實現對海量數據的處理sql,能不能用sql來實現對海量數據的處理 – hive就是這樣的一個工具,HIVE就是在hadoop的基礎上架設了一層sql操作的接口,使我們可以通過類sql的 - hql - 來操作hive,由hive將這些hql語句翻譯成mapreduce來處理海量數據。所以,Hive的底層仍然是MapReduce,Hive主要是做一個翻譯的工作。Hive是基於Hadoop的數據倉庫工具所以Hive並不是一種數據庫。

5、HBase

基於Hadoop數據庫工具,是一種 NoSQL的 非關係型數據庫 不符合關係型數據庫的範式,適合存儲 半結構化 非結構化的數據,適合存儲稀疏的數據 空的數據不佔用空間,面向列(族)進行存儲,提供實時的增刪改查的能力是一種真正的數據庫產品,可以存儲海量數據性能非常優良可以實現上億條記錄的毫秒級別的查詢,但是不支持嚴格的事務控制只能在行級別保證事務。HBase使用表來存儲數據 但是表的結構和特點和傳統的關係型數據庫有非常大的區別。行鍵 - RowKey:就相當於是HBase表中的主鍵,HBase中的所有的表都要有行鍵,HBase中的所有的數據都要按照行鍵的字典順序排序後存儲,對HBase表中的數據的查詢 只有三種方式:根據指定行鍵查詢、根據指定的行鍵範圍查詢、全表掃描查詢。

6、列族(簇) - ColumnFamily

HBase表中垂直方向保存數據的結構,列族是HBase表的元數據的一部分,需要在定義HBase表時就指定好表具有哪些個列族,列族中可以包含一個或多個列。列 - Column:HBase表中列族裡可以包含一個或多個列,列並不是HBase表的元數據的一部分,不需要在創建表時預先定義,而是可以在後續使用表時隨時為表的列族動態的增加列。單元格和時間戳 - Cell TimeStamp:在HBase表中,水平方向的行 和 垂直方向的列 交匯 就得到了HBase中的一個存儲單元,而在這個存儲單元中,可以存儲數據,並且可以保存數據的多個版本,這些個版本之間通過時間戳來進行區分。單元格中的數據都以二進制形式存儲,沒有數據類型的區別。

7、Phoenix

HBase是一種非關係型的數據庫 不滿足關係型數據庫的範式 所以無法使用sql 和 JDBC來進行操作,而Phoenix是在HBase基礎上架構的SQL中間件,讓我們可以通過SQL/JDBC來操作HBase。本質上就是在HBase表的基礎上,增加一定的限制,穩定表的結構,加入sql翻譯成HBase命令的機制,從而實現了類sql方式操作HBase。親測不太好用,意見僅供參考。

對大數據的概念都是模糊不清的,大數據是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大數據學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系

---------------------

原文:https://blog.csdn.net/haotian1685/article/details/84963671


分享到:


相關文章: