解析大數(shù)據(jù):從流數(shù)據(jù)攝取到交互式可視化的完整生態(tài)系統(tǒng)
大數(shù)據(jù)處理涉及處理和分析大型復(fù)雜數(shù)據(jù)集的技術(shù)和技術(shù)?!按髷?shù)據(jù)”通常指的是傳統(tǒng)數(shù)據(jù)庫和處理工具無法處理的數(shù)據(jù)集。 例如:應(yīng)用程序日志、用戶交互日志:這些大數(shù)據(jù)用于分析用戶互動、偏好和行為,以改進(jìn)內(nèi)容推薦算法并提升用戶參與度。 各種組件共同工作以處理、存儲和分析這些大型數(shù)據(jù)集。這些組件共同形成一個大數(shù)據(jù)處理生態(tài)系統(tǒng)。
大數(shù)據(jù)處理的關(guān)鍵組件:
1. 數(shù)據(jù)攝取和傳輸(Kafka、Logstash(ELK))
批處理和流處理:數(shù)據(jù)可以分批攝取,也可以以實時流模式處理。 批處理涉及按預(yù)定義的塊收集和處理數(shù)據(jù),而流攝取處理連續(xù)生成并以準(zhǔn)實時方式處理的數(shù)據(jù)。
Apache Kafka:
用于構(gòu)建實時數(shù)據(jù)管道和流應(yīng)用的廣泛使用平臺。 為什么選擇Kafka?
- 可以處理每秒數(shù)百萬個事件。
- 可靠性:即使發(fā)生故障,數(shù)據(jù)也不會丟失:所有消息都寫入磁盤并復(fù)制到多個代理,以確保它們不會丟失。
- 默認(rèn)情況下,它保證至少一次傳遞。
- 回放數(shù)據(jù):如果需要,可以重新播放數(shù)據(jù)。
- 高度可擴(kuò)展:可以添加更多代理來處理不斷增加的負(fù)載。分區(qū)器確保消息均勻分布在分區(qū)上:
- 強(qiáng)大的API和集成:用于與其他系統(tǒng)進(jìn)行數(shù)據(jù)攝取的Kafka Connect。用于構(gòu)建實時流應(yīng)用程序的Kafka Streams。
- 安全功能,例如身份驗證和加密,可用于保護(hù)數(shù)據(jù)在傳輸和靜息時。 ??
- 可定制和靈活:還允許設(shè)置消息的保留期。支持各種數(shù)據(jù)格式,包括文本、JSON、Avro和Protobuf。
- 支持多種模式和協(xié)議。
2. 原始存儲(HDFS、S3)
這些系統(tǒng)將大數(shù)據(jù)分布在多臺機(jī)器上,以提高可伸縮性和容錯性。
數(shù)據(jù)湖: 組織用來管理其PB級數(shù)據(jù)的大數(shù)據(jù)存儲系統(tǒng)。 什么是數(shù)據(jù)湖?(AWS S3、Azure Data、Apache Hadoop/HDFS)
- 存儲原始數(shù)據(jù):它是大型、集中的非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù)倉庫。
- 允許以其原始格式存儲數(shù)據(jù),無需先進(jìn)行轉(zhuǎn)換。
- 存儲各種類型的數(shù)據(jù):存儲來自各種源頭的大量數(shù)據(jù),包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
用例:
- 想要支持組織中的多種用例,如分析、數(shù)據(jù)科學(xué)和臨時分析。
- 想要以原始和未處理的格式存儲大量數(shù)據(jù),以便進(jìn)行未來分析。
3. 處理(Hadoop、Spark)
(1) Hadoop是什么? Apache Hadoop是一個用于分布式存儲和處理大型數(shù)據(jù)集的開源框架。
Hadoop的核心概念:
- HDFS: Hadoop分布式文件系統(tǒng)(HDFS)是Apache Hadoop框架的存儲組件,旨在在分布式集群上存儲和管理大量數(shù)據(jù)。
- 分布式存儲:它將數(shù)據(jù)分割成塊并在集群中的多個節(jié)點上復(fù)制,確保數(shù)據(jù)的可用性和韌性。
- 成本效益存儲:HDFS利用常規(guī)硬件進(jìn)行存儲,使其成為存儲大量數(shù)據(jù)的經(jīng)濟(jì)有效解決方案。
(2) MapReduce: 用于并行處理大型數(shù)據(jù)集的編程模型。
并行處理模型:它將任務(wù)分解成可以在集群中的節(jié)點上并行執(zhí)行的小子任務(wù)。
(3) Hadoop的優(yōu)勢:
- 批處理工作負(fù)載
- 可接受較高的延遲
- 想要成本效益
(4) Hadoop的替代方案?
Apache Spark: 它是一個為大數(shù)據(jù)處理提供快速集群計算框架的開源分布式計算系統(tǒng)。
它是為解決MapReduce編程模型的局限性而開發(fā)的。
(5) Spark的亮點:
- 流處理:Spark支持批處理和流處理。
- 速度和性能:Spark執(zhí)行內(nèi)存處理,相比于依賴磁盤存儲中間數(shù)據(jù)的Hadoop,性能顯著提高。
(6) 轉(zhuǎn)換和索引(Pig、Elasticsearch)
索引是什么?
索引是有關(guān)日志的附加元數(shù)據(jù),旨在實現(xiàn)對整個日志體積的更快查詢。
大數(shù)據(jù)中的索引是指創(chuàng)建允許從大型數(shù)據(jù)集中高效快速檢索信息的數(shù)據(jù)結(jié)構(gòu)的過程。在數(shù)據(jù)量龐大的情況下,索引對于優(yōu)化查詢性能和加速數(shù)據(jù)訪問至關(guān)重要 。
倒排索引 工具:
Apache Pig腳本:Pig Latin是一種具有簡單可讀語法的數(shù)據(jù)流腳本語言。它由一系列語句組成,定義要應(yīng)用于數(shù)據(jù)集的數(shù)據(jù)轉(zhuǎn)換。
4. 數(shù)據(jù)庫
NoSQL數(shù)據(jù)庫: 專為處理大量非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)而設(shè)計。示例包括MongoDB、Cassandra和Apache HBase。
數(shù)據(jù)倉庫: 針對大型數(shù)據(jù)集上的分析查詢進(jìn)行優(yōu)化的專業(yè)數(shù)據(jù)庫。 什么是數(shù)據(jù)倉庫?(例如:Amazon Redshift、Snowflake)
- 為分析進(jìn)行優(yōu)化的存儲:它是經(jīng)過優(yōu)化以進(jìn)行報告和分析的結(jié)構(gòu)化數(shù)據(jù)的集中存儲庫。
- 預(yù)定義的關(guān)系數(shù)據(jù)庫架構(gòu)
- 促進(jìn)復(fù)雜查詢和分析。
用例:
- 當(dāng)要存儲已經(jīng)過處理、清理和轉(zhuǎn)換以進(jìn)行分析和報告的結(jié)構(gòu)化數(shù)據(jù)時。
- 想要支持業(yè)務(wù)智能、報告和數(shù)據(jù)分析。
示例: Hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫基礎(chǔ)設(shè)施。
5. 分析(Presto、Spark SQL)
Presto是由Facebook創(chuàng)建的面向大數(shù)據(jù)的開源分布式SQL查詢引擎。它專為在大型數(shù)據(jù)集上進(jìn)行快速分析查詢而開發(fā)。
SQL查詢引擎 → 可以使用SQL語法!
主要特點:
- 多功能:它可以查詢來自多個來源的數(shù)據(jù),包括Hadoop、關(guān)系數(shù)據(jù)庫(如MySQL、PostgreSQL)和其他數(shù)據(jù)存儲。它提供了一個統(tǒng)一的界面,用于查詢不同的數(shù)據(jù)集。
- SQL兼容性:它支持SQL語法,使其對習(xí)慣于關(guān)系數(shù)據(jù)庫的用戶來說更加熟悉。
- 高性能:它經(jīng)過優(yōu)化,可用于低延遲的交互式查詢,適用于臨時數(shù)據(jù)分析和業(yè)務(wù)智能。
- 復(fù)雜查詢、連接、子查詢:它支持復(fù)雜查詢、連接、子查詢和聚合,適用于各種分析任務(wù)。
6. 可視化:(Kibana、Tableau)
- Tableau、Power BI、AWS QuickSight:用于創(chuàng)建交互式和可視化儀表板,以探索和傳達(dá)來自大數(shù)據(jù)的見解的流行工具。
- Jupyter Notebooks:一種開源的Web應(yīng)用程序,允許用戶創(chuàng)建和共享包含實時代碼、可視化和敘述文本的文檔。