7月8日,深信服大數據負責人Letian在信服云《云集技術學社》系列直播課上進行了《大數據技術原理和發展趨勢解析》的分享,對Hadoop、流處理、內存計算、檢索、消息隊列、大數據OLAP等技術進行了詳細分析。以下是他的分享內容簡要,想要了解更多可以點擊閱讀原文觀看直播回放。
看點一:什么是Hadoop?經典的Hadoop技術能做什么?
Hadoop是大數據的經典技術,是一個開源的可運行于大規模集群上的分布式文件系統和運行處理框架。Hadoop擅長于在廉價機器搭建的集群上進行海量數據(結構化與半結構化)的存儲與離線處理。
Hadoop的核心是HDFS、Mapreduce和YARN
(1)HDFS
HDFS是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過主從式的數據存儲方式,為分析程序提供高吞吐量的數據訪問能力,適合帶有大型數據集的分析應用。
(2)MapReduce
MapReduce是一種計算模型,分為"Map(映射)"和"Reduce(歸約)"兩個部分?;贛apReduce和HDFS,Hadoop的生態生長出了HIVE和Hbase。其中,HIVE定義了一種類似SQL的查詢語言(HQL),將SQL“轉化為”MapReduce的任務執行。HIVE的特點是非常穩定,極大的數據量都能計算出結果,例如,長達幾個小時甚至幾天的離線分析就很適合采用HIVE。
(3)Hbase
Hbase是一種基于HDFS的NOSQL,它有稀疏表存儲、LSM、二級索引等功能特點,更適合高并發讀寫訪問、實時讀寫訪問,例如推薦畫像的標簽存儲與訪問、時空數據(如行車軌跡)、消息/訂單(話費詳單查詢)等場景,很適合運用Hbase。
(4)YARN
YARN是一個資源管理和調度工具,當大數據生態中越來越多類型的計算組件和計算任務類型出現,YARN通過雙層調度機制,可以幫助系統管理多種類型組件的計算任務,從而把集群中的計算資源都管理起來,提升資源利用率。比如,在用戶提交一個mapreduce計算job之后,多個Map和Reduce的任務就是分別運行在YARN分配的資源容器中。
看點二:近年來常用的大數據生態技術有哪些?
(1)Spark
Spark是基于RDD實現的分布式計算框架,輸出和結果保存在內存中,不需要頻繁讀寫HDFS,因此比mapreduce的數據處理效率高。Spark擴展了Mapreduce的原語,除了map和reduce類型的任務之外,還有groupby、union等原語任務。Spark因為是內存計算,適用于“相對近線的或離線”的數據查詢(通過sparksql或者原生接口)和實時監控場景(通過SparkStreaming)。另外,內存計算的特點也特別適合迭代計算的場景,例如圖計算、機器學習場景。
(2)Flink
Flink是開源流處理框架,與SparkStreaming的區別在于,Spark是微批(一小批)地處理數據,而Flink則可以一條一條地處理數據。在運行時,Flink對實時數據的處理也被分為原語任務(map、keyby等),并將所有的原語任務分布到不同節點上進行并行處理。Flink適用于完全實時的數據分析與機器學習應用場景,例如醫療集成平臺的CDC、反欺詐、異常檢測、基于規則的報警、業務流程監控等等。
(3)ElasticSearch(ES)
ES是一個基于Lucene的搜索引擎,無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。ES實現了Lucene的分布式化:可以擴展到上百臺服務器,處理PB級數據。當下不少商品搜索、APP搜索、知識庫搜索、日志檢索、地理位置查詢等,都是使用ES實現的。
(4)Kafka
Kafka是一個分布式、高吞吐量、高擴展性的消息隊列系統。在數據需要“總線”來分發給不同的消費者,或者數據產生很快,如果數據消費不夠快,需要暫存的場景下,可以提升系統的效率。
看點三:超火的大數據數據倉庫與OLAP有哪些關鍵組件及特性?
大數據數據倉庫的主要功能是對大量的數據做系統的分析整理,以便于各種分析方法如聯機分析處理(OLAP)、數據挖掘(Data Mining)能夠順利進行,并進而支持如決策支持系統(DSS)、實時分析和查詢系統等。
(1)Presto
HDFS、S3、HIVE、KUDU、cassandra、mongoDB、ES、Mysql...越來越多的存儲架構,而且各有特點,難以舍棄,那我們能不能用一個引擎統一做查詢計算,而不用使用不同的API呢?多源異構分析引擎Presto/Trino就可以解決這個問題。Presto是一款內存計算型的引擎,適用于交互式分析場景,同時其開源社區的良好集成,支持底層數據來自多種異構數據源的交互式分析場景,比如工程師的交互式查詢分析、業務人員的交互式查詢分析、ETL等。在很多時候,Presto只連接HDFS,那么它就變成了一個OLAP引擎,在這個場景下,Presto最大特點是性能均衡。Presto單表查詢僅次于clickhouse,多表join查詢性能也很突出。但值得注意的是,Presto雖然比HIVE快,但到了PB級數據時,Presto沒辦法把所有數據放在內存中處理。所以,需要邊讀數據、邊計算、邊清內存。join的時候,可能產生大量的臨時數據,反而比HIVE慢。
(2)ClickHouse(CK)
ClickHouse(CK)是一個真正的列式數據庫管理系統,主要解決的是“大寬表”的多維分析問題。在很多數據倉庫的分析中,報表、交互式分析針對的目標表常常是一個大寬表(列很多),那是否能夠把大寬表的性能做極致呢?CK因此應運而生。CK的存儲模型MergeTree是最基礎的表引擎,提供主鍵索引、數據分區和數據采樣等所有的基本能力。其他能力,比如replace、sum等構建在之上。目前,CK主要應用于BI報表、用戶行為分析系統、監控系統、A/Btest等場景下。
(3)kylin
kylin是一個開源的、分布式的分析型數據倉庫。查詢分析有一些是常用的指標,那能不能將這些指標結果提前計算好,這樣一來,交互式查詢分析時只查詢預先計算好的結果,以此來達到亞秒級響應呢?預計算技術kylin就能實現。但需要注意,預計算計算技術可能會引發維度爆炸。如果一個表有N個維度的話,那么可能會產生2的N次方個預計算結果(類似2的N次方個物化視圖),如果計算方式很多的話,那會更多,導致嚴重膨脹,這時候需要從源頭上解決爆炸問題,比較好的方法是分析用戶行為,進而只對有必要的結果進行預計算。
看點四:大數據生態中,計算和存儲模型的總結!
本期直播也總結了不同的計算模型的優劣勢,包括從計算視角的scatter/gather、mapreduce、MPP模型分類,從資源共享視角的share everthing、share disk、share nothing的存儲計算模型分類。