大數據名詞解釋

大數據知識體系架構

在這裏插入圖片描述

第一階段:Hadoop

一、ELK技術棧:

ELK Stack 是 Elasticsearch、Logstash、Kibana 三個開源軟件的組合。在實時數據檢索和分析場合,三者通常是配合共用。

Elasticsearch:分佈式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點。基於 Apache Lucene 構建,能對大容量的數據進行接近實時的存儲、搜索和分析操作。通常被用作某些應用的基礎搜索引擎,使其具有複雜的搜索功能;

Logstash:數據處理引擎,它支持動態的從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES;

Kibana:數據分析和可視化平臺。與 Elasticsearch 配合使用,對數據進行搜索、分析和以統計圖表的方式展示;

Filebeat:ELK 協議棧的新成員,一個輕量級開源日誌文件數據蒐集器。在需要採集日誌數據的 server 上安裝 Filebeat,並指定日誌目錄或日誌文件後,Filebeat 就能讀取數據,迅速發送到 Logstash 進行解析。

二、HDFS:Hadoop分佈式文件系統

HDFS(Hadoop Distributed File System)是hadoop生態系統中最基礎的一部分,是hadoop中的的存儲組件。
HDFS是一個分佈式文件系統,以流式數據訪問模式存儲超大文件,將數據分塊存儲到一個商業硬件集羣內的不同機器上。
HDFS涉及到數據存儲,MapReduce等計算模型都要依賴於存儲在HDFS中的數據。

HDFS的特點>

(1)超大文件。目前的hadoop集羣能夠存儲幾百TB甚至PB級的數據。
(2)流式數據訪問。HDFS的訪問模式是:一次寫入,多次讀取,更加關注的是讀取整個數據集的整體時間。
(3)商用硬件。HDFS集羣的設備不需要多麼昂貴和特殊,只要是一些日常使用的普通硬件即可。
(4)不支持低時間延遲的數據訪問。hdfs關心的是高數據吞吐量,不適合那些要求低時間延遲數據訪問的應用。
(5)單用戶寫入。hdfs的數據以讀爲主,只支持單個寫入者,寫操作總是以添加的形式在文末追加,不支持在任意位置進行修改。

HDFS由四部分組成:
HDFS Client、NameNode、DataNode和Secondary NameNode。

HDFS是一個主/從(Mater/Slave)體系結構。
HDFS集羣擁有一個NameNode和一些DataNode。NameNode管理文件系統的元數據,DataNode存儲實際的數據。

三、MapReduce:

MapReduce是面向大數據並行處理的計算模型、框架和平臺,主要用於大規模數據集(大於1TB)的並行運算。

MapReduce是一種編程模板,編寫MapReduce程序的主要目的是進行數據處理。

MapReduce程序進行一次數據處理稱爲MR任務,它包含兩個處理階段:map階段和reduce階段。每一階段的輸入和輸出的數據格式均爲鍵/值對。

數據處理的具體步驟如下:

1.MR框架從HDFS中讀取相關文件,並將數據分片,對每個分片的數據轉化爲key-value集合,送入map節點;
2.map節點獲取key-value集合後,MR框架調用程序員編寫好的map函數,對每一個key-value數據進行處理,生成新的key-value數據集合;
3.MR框架對map階段輸出的key-value數據集合進行排序、分組處理,進入reduce階段;
4.MR框架調用編寫好的reduce函數進行數據處理。最後輸出的key-value數據集合即最終的數據處理結果。

四、Apache Hive:

Hive是基於hadoop的一個數據倉庫工具可以將結構化數據文件映射爲一張數據庫表,並提供類SQL查詢功能.Hive的主要用途:用於海量數據的離線數據分析,比直接使用MapReduce開發效率更高.
Hive的本質是將SQL轉換爲MapReduce程序;Hive中所有的數據都存儲在HDFS上,沒有專門的數據存儲格式;Hive可以利用HDFS存儲,利用MapReduce計算;

Hive 組件主要包括:用戶接口:包括 CLI、JDBC/ODBC、WebGUI。

元數據存儲:Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字和屬性,列和分區及其屬性,表的數據所在目錄等。 解釋器、編譯器、優化器、執行器:完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,並在隨MapReduce 調用執行。

五、Apache HBase:

HBase是一個分佈式的、面向列的開源數據庫。
它是一個適合於非結構化數據存儲的數據庫。
HBase使用HDFS作爲存儲,數據訪問速度快,響應時間約2-20毫秒。支持每個節點20k到100k以上ops/s的數據庫讀寫操作,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣,可擴展到20,000多個節點。

六、Apache Sqoop:

sqoop是一款用於hadoop和關係型數據庫之間數據導入導出的工具。
可以通過sqoop把數據從數據庫(比如mysql,oracle)導入到hdfs中;也可以把數據從hdfs中導出到關係型數據庫中。
sqoop通過Hadoop的MapReduce導入導出,可以提供了很高的並行性能以及良好的容錯性。

七、Zeppelin可視化:

Zeppelin 是一個可以進行大數據可視化分析的交互式開發系統。
可以完成數據接入、數據發現、數據分析、數據可視化、數據協作等功能。
多語言後端:Zeppelin解釋器允許將任何語言/數據處理後端插入到Zeppelin中。包括Spark,Python,JDBC,Shell等。
可視化前端:包含了一些基本圖表。可視化不限於Spark SQL查詢,任何語言後端的任何輸出都可以被識別和可視化。

第二階段:Spark

一、Scala編程

Scala語言是一種能夠運行於 JVM 和.Net 平臺之上的通用編程語言
可用於大規模應用程序開發,也可用於腳本編程。
Scala 支持面向對象和函數式編程。學習它的主要目的是爲了進行開源大數據內存計算引擎 Spark 的源代碼編程。
Scala的源代碼會被編譯成 Java 字節碼 (.class),然後運行於 JVM 之上,並可以調用現有的 Java 類庫,實現兩種語言的無縫對接。

二、Spark 生態框架

Spark是一個針對大規模數據處理的快速通用引擎。
Spark生態系統是一個包含多個子項目的集合,其中包含Spark SQL、Spark Streaming、GraphX等子項目。交互式查詢(Spark SQL):兼容Hive數據倉庫,提供統一的數據訪問方式,將SQL查詢與Spark程序無縫集成。
實時流處理(Spark Streaming):可以以實現高吞吐量的,具備容錯機制的實時流數據處理。接收Kafka、Flume、HDFS等各種來源的實時輸入數據,進行處理後,處理結構保存在HDFS等各種地方。
圖計算(GraphX):圖是一種數據結構,GraphX它是一個圖計算引擎,它可以處理像倒排索引,推薦系統,最短路徑,羣體檢測等應用。

三、Flume

Flume是一種高可靠,分佈式的海量日誌採集、聚合和傳輸的應用系統Flume可以高效率的將服務器中收集的日誌信息存入HDFS/HBase中,同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方的能力。
Flume系統中核心的角色是agent,agent本身是一個Java進程,一般運行在日誌收集節點。flume有3大組件:

source(源端數據採集):用於跟數據源對接,以獲取數據。
Channel(臨時存儲聚合數據):agent內部的數據傳輸通道,用於從source將數據傳遞到sink
Sink(移動數據到目標端):用於往最終存儲系統傳遞數據;如HDFS、KAFKA以及自定義的sink

四、Apache Kafka

**Kafka是一種高吞吐量的分佈式日誌系統。**主要用於web/nginx日誌、訪問日誌,消息服務等日誌收集系統和消息系統應用。 它的最大的特性就是可以實時的處理海量數據以滿足各種需求場景:日誌收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一接口服務的方式開放給各種hadoop、Hbase等。

用戶活動跟蹤:記錄web用戶或者app用戶的各種活動,(如瀏覽網頁、搜索、點擊),然後進行實時的監控分析,或者裝載到hadoop、數據倉庫中做離線分析和挖掘。

流式處理:比如spark streaming和storm。

第三階段:離線數據平臺

一、Hive ETL處理

ETL:用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。
也可以理解爲ETL是指獲取原始大數據流,然後對其進行解析,併產生可用輸出數據集的過程。
Hive是基於hadoop的一個數據倉庫工具,可以作爲ETL的工具來應用。

二、Oozie

用於Hadoop平臺的開源的工作流調度引擎,用來管理Hadoop作業,屬於web應用程序。Oozie是大數據四大協作框架之一——任務調度框架,另外三個分別爲數據轉換工具Sqoop,文件收集庫框架Flume,大數據WEB工具Hue。
它能夠提供對Hadoop MapReduce和Pig Jobs的任務調度與協調。Oozie需要部署到Java Servlet容器中運行。功能相似的任務調度框架還有Azkaban和Zeus。

工作流:

一個完整的數據分析系統通常是由大量的任務單元組成,Shell腳本、Java程序、MapReduce程序、Hive腳本等等,各個任務單元之間存在時間先後及前後依賴關係。爲了很好的組織這樣的複雜執行計劃,需要一個工作流調度系統來調用執行。簡單的工作流調度:Liunx的crontab來定義,複雜的工作流調度:Oozie、Azakaban等

三、Tableau可視化

Tableau是用來做數據的管理和數據可視化的工具,以在快速生成美觀的圖表、座標圖、儀表盤與報告。

四、Cassandra/Redis/MongoDB

NoSQL技術,這是一種基於內存的數據庫,並且提供一定的持久化功能。Redis和MongoDB是當前使用最廣泛的NoSQL數據庫。

Redis:
可以支持每秒十幾萬次的讀/寫操作,其性能遠超數據庫。
支持集羣、分佈式、主從同步等配置,原則上可以無限擴展。
它還支持一定的事務能力,這保證了高併發的場景下數據的安全和一致性

MongoDB:基於分佈式文件存儲的NoSQL數據庫

Cassandra:是一套開源分佈式NoSQL數據庫系統。
適用於跨數據中心/雲端的結構化數據、半結構化數據和非結構化數據的存儲。
同時,Cassandra 高可用、線性可擴展、高性能、無單點故障。

第四階段:實時流處理平臺

Confluent:用來管理和組織不同數據源的流媒體平臺,可以實時地把不同源和位置的數據集成到一箇中心的事件流平臺

Flink:用Java和Scala編寫的分佈式流數據處理引擎。Flink以數據並行和流水線方式執行批處理和流處理程序。

Grafana:採用 go 語言編寫的開源應用,主要用於大規模指標數據的可視化展現,是網絡架構和應用分析中最流行的時序數據展示工具。

核心技術小結

Hadoop

大數據平臺的鼻祖,第一代大數據計算引擎。主要思想是通過增加計算機的數量提高計算能力,將單機運算以低成本的方式擴容到多機運算。他一般稱爲Hadoop生態圈,圈子裏有很多小夥伴兒(稱之爲:組件):HDFS(分佈式文件存儲系統),MR(MapReduce計算框架),Hive(數據倉庫分析工具)、Yarn(Hadoop生態圈中負責資源管理和作業調度的組件),另外需要強調的是:Hadoop是一個Java框架,所以學習大數據,還是需要有一定的Java基礎。

Spark

第二代大數據計算引擎,相比Hadoop計算速度有了極大提升。目前應用最爲廣泛,但仍需要其他數據存儲系統支持,比如Hadoop的文件系統。

Flink

第三代大數據計算引擎。爲實時計算(流式計算)而生,真正意義上的實時計算,現由阿里主導開發,未來將會PK Spark。廣泛應用於要求低延遲的數據處理場景:輿情監控、互聯網金融、點擊流日誌處理等。

Hive

Hive爲傳統的數據庫開發人員提供了一種大數據平臺開發的途徑。或者說對於不精通編程的開發人員提供了一種大數據開發的工具,只需瞭解SQL語言即可。Hive底層可以將SQL代碼轉換成Hadoop應用程序。

ELK

ELK是三個工具的簡寫(Elasticsearch , Logstash, Kibana),即數據檢索、數據導入與數據展示三個工具。是一個近似實時的搜索平臺,可快速處理大數據,其中核心是數據檢索模塊(Elasticsearch),利用它可以快速搭建專業級的海量數據全文檢索(查找)系統,並提供數據統計(聚合分析)能力,在很大程度上彌補Hadoop在文件快速檢索效率上的不足。

Scala

是一種開發語言,源自於Java,現在被廣泛應用的Spark計算引擎便是由Scala編寫完成,並且在Spark開發過程中通常也推薦使用Scala編碼。

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