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