Hadoop大数据组件简介
每個服務對應介紹如下:
HDFS
HDFS(Hadoop Distributed File System),是一個分布式文件系統。它具有高容錯性的特點,可以被廣泛的部署于廉價的PC之上。它以流式訪問模式訪問應用程序的數據,這大大提高了整個系統的數據吞吐量,能夠滿足多來源、多類型、海量的數據存儲要求,因而非常適用于日志詳單類非結構化數據的存儲。
HDFS架構采用主從架構(master/slave)。一個典型的HDFS集群包含一個NameNode節點和多個DataNode節點。NameNode節點負責整個HDFS文件系統中的文件的元數據保管和管理,集群中通常只有一臺機器上運行NameNode實例,DataNode節點保存文件中的數據,集群中的機器分別運行一個DataNode實例。在HDFS中,NameNode節點被稱為名字節點,DataNode節點被稱為數據節點,DataNode節點通過心跳機制與NameNode節點進行定時的通信。
HDFS可以實現大規模數據可靠的分布式讀寫。HDFS針對的使用場景是數據讀寫具有“一次寫,多次讀”的特征,而數據“寫”操作是順序寫,也就是在文件創建時的寫入或者在現有文件之后的添加操作。HDFS保證一個文件在一個時刻只被一個調用者執行寫操作,而可以被多個調用者執行讀操作。
YARN
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統和調度平臺,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。
Zookeeper
在大數據領域中,Zookeeper 為 Hadoop 生態圈中不可缺少的重要基礎服務之一,為多種服務組件的高可用提供支持,并且還為計算任務提供狀態存儲等。
Hive
- Hive是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。
Tez
是Apache最新開源的支持DAG作業的計算框架,它直接源于MapReduce框架,核心思想是將Map和Reduce兩個操作進一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,這樣,這些分解后的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控制程序組裝后,可形成一個大的DAG作業??偨Y起來,Tez有以下特點:
(1)Apache二級開源項目;
(2)運行在YARN之上;
(3)適用于DAG(有向圖)應用(同Impala、Dremel和Drill一樣,可用于替換Hive/Pig等)。
HBase
HBase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,它利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作為協同服務。HBase 不是一個關系型數據庫,其設計目標是用來解決關系型數據庫在處理海量數據時的理論和實現上的局限性。HBase 從一開始就是為 Terabyte 到 Petabyte 級別的海量數據存儲和高速讀寫而設計,這些數據要求能夠被分布在數千臺普通服務器上,并且能夠被大量并發用戶高速訪問。
Spark
Apache Spark 是一個非常受歡迎的數據處理框架,它封裝了非常全面的數據處理與運算機制。無論是處理離線數據,還是處理實時的流式數據,Spark都可以做到游刃有余。
(1) 在開發語言方面
Spark支持Java、Python、Scala提供的API。
(2)在離線處理方面
Spark Core、Spark SQL組件吸納了Hive、MapReduce的所有優點。
(3)在實時處理方面
Spark Streaming組件可以進行高效的批處理作業,并且Structured Streaming組件允許開發者基于事件時間精準處理數據。
(4)在人工智能方面
Spark Mlib組件為開發者封裝了大量高效的常用算法,甚至還可以與最火爆的深度學習框架TensorFlow結合使用。
(5) 在圖計算方面
Spark GraphX組件提供了簡易且豐富的接口。
以上所有這些組件,全部建立在Spark Core的核心API之上。只要掌握Spark Core的核心理念,使用其他組件將十分容易。
Flink
Apache Flink是一個面向數據流處理和批量數據處理的可分布式的開源計算框架,它基于同一個Flink流式執行模型(streaming execution model),能夠支持流處理和批處理兩種應用類型。由于流處理和批處理所提供的SLA(服務等級協議)是完全不相同, 流處理一般需要支持低延遲、Exactly-once保證,而批處理需要支持高吞吐、高效處理,所以在實現的時候通常是分別給出兩套實現方法,或者通過一個獨立的開源框架來實現其中每一種處理方案。比較典型的有:實現批處理的開源方案有MapReduce、Spark;實現流處理的開源方案有Storm;Spark的Streaming 其實本質上也是微批處理。
Flink在實現流處理和批處理時,與傳統的一些方案完全不同,它從另一個視角看待流處理和批處理,將二者統一起來:Flink是完全支持流處理,也就是說作為流處理看待時輸入數據流是無界的;批處理被作為一種特殊的流處理,只是它的輸入數據流被定義為有界的。
ElasticSearch
Elasticsearch (ES)是一個基于Lucene構建的開源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 還是一個分布式文檔數據庫,其中每個字段均是被索引的數據且可被搜索,它能夠擴展至數以百計的服務器存儲以及處理PB級的數據。它可以在很短的時間內在存儲、搜索和分析大量的數據。
Elasticsearch是一款高效的分布式搜索和分析引擎,可以接入常用的文本類型數據、主流數據庫、二進制文件等進行統一存儲,能夠對這些數據進行快速的在線檢索和分析,并可以通過配套的Kibana組件對數據進行可視化的分析和呈現。
Kibana
作為 ES 配套的可視化工具,可以方便的對 ES 中的數據進行可視化分析操作。
Kafka
Kafka是由Java和Scala編寫的是一個分布式、高吞吐量、分區的、多副本的、多訂閱者,基于zookeeper協調的分布式發布訂閱消息系統。
(1)分布式:所有的producer、broker和consumer都會有多個,均勻分布并支持通過Kafka服務器和消費機集群來分區消息
(2)高吞吐量:Kafka 每秒可以生產約 25 萬消息(50 MB),每秒處理 55 萬消息(110 MB)。
(3)分區:Kafka中采用分區的設計有兩個目的:一是可以處理更多的消息,而不受單體服務器的限制,Topic擁有多個分區,意味著它可以不受限制地處理更多數據;二是分區可以作為并行處理的單元。
Flume
Apache Flume是一個分布式的、可靠的、可用的系統,用于有效地收集、聚合和將大量日志數據從許多不同的源移動到一個集中的數據存儲。Apache Flume的使用不僅僅局限于日志數據聚合。由于數據源是可定制的,Flume可以用于傳輸大量事件數據,包括但不限于網絡流量數據、社交媒體生成的數據、電子郵件消息和幾乎所有可能的數據源。
Phoenix
Phoenix是構建在HBase上的一個SQL層,能讓我們用標準的JDBC APIs而不是HBase客戶端APIs來創建表,插入數據和對HBase數據進行查詢。Phoenix完全使用Java編寫,作為HBase內嵌的JDBC驅動。Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase掃描,并編排執行以生成標準的JDBC結果集。
Prometheus
Prometheus 作為監控領域的主流服務,有以下主要特征:
多維度數據模型
(1)時間序列數據通過 metric 名和鍵值對來區分。
(2)所有的 metrics 都可以設置任意的多維標簽。
(3)數據模型更隨意,不需要刻意設置為以點分隔的字符串。
(4)可以對數據模型進行聚合,切割和切片操作。
(5)支持雙精度浮點類型,標簽可以設為全 unicode。
(6)靈活的查詢語言:在同一個查詢語句,可以對多個 metrics 進行乘法、加法、連接、取分數位等操作。
(7)不依賴任何分布式存儲。
(8)通過拉取方式采集數據,或者通過中間網關推送方式采集數據。
(9)通過服務發現或者靜態配置來發現監控目標。
(10)支持多種圖形界面展示方式。
NodeExporter
NodeExporter 是基于Go 語言開發的,用于采集節點資源運行狀況的常用服務組件。
Grafana
Grafana是一款用Go語言開發的開源數據可視化工具,可以做數據監控和數據統計,帶有告警功能,主要特征如下:
(1)可視化:快速和靈活的客戶端圖形具有多種選項。面板插件為許多不同的方式可視化指標和日志。
(2)報警:可視化地為最重要的指標定義警報規則。Grafana將持續評估它們,并發送通知。
(3)通知:警報更改狀態時,它會發出通知。接收電子郵件通知。
(4)動態儀表盤:使用模板變量創建動態和可重用的儀表板,這些模板變量作為下拉菜單出現在儀表板頂部。
(5)混合數據源:在同一個圖中混合不同的數據源!可以根據每個查詢指定數據源。這甚至適用于自定義數據源。
(6)注釋:注釋來自不同數據源圖表。將鼠標懸停在事件上可以顯示完整的事件元數據和標記。
(7)過濾器:過濾器允許您動態創建新的鍵/值過濾器,這些過濾器將自動應用于使用該數據源的所有查詢。
(8)平臺為每個支持的組件都預置了完善的監控模板,可以對各個組件的運行狀態進行詳細的監控和可視化展示。
InfluxDB
在大數據平臺中,InfluxDB 默認用于存儲各類監控數據,用戶也可以令其服務于業務端。InfluxDB 有如下優點:
(1)為時間序列數據專門編寫的自定義高性能數據存儲。 TSM引擎具有高性能的寫入和數據壓縮
(2)Golang編寫,沒有其它的依賴;
(3)提供簡單、高性能的寫入、查詢 http api;
(4)插件支持其它數據寫入協議,例如 graphite、collectd、OpenTSDB;
(5)支持類sql查詢語句;
(6)tags可以索引序列化,提供快速有效的查詢;
(7)Retention policies自動處理過期數據;
(8)Continuous queries自動聚合,提高查詢效率;
Livy
Livy是一個基于Spark的開源REST服務,它能夠通過REST的方式將代碼片段或是序列化的二進制代碼提交到Spark集群中去執行。它提供了以下這些基本功能:
(1)提交Scala、Python或是R代碼片段到遠端的Spark集群上執行;
(2)提交Java、Scala、Python所編寫的Spark作業到遠端的Spark集群上執行;
(3)提交批處理應用在集群中運行。
Kylin
Kylin 依賴 Hive HBase等服務,是構建大型即時響應數倉的關鍵服務,通過空間換時間的理念,對數據構建若干 Cube,從而實現數據的快速篩查。
Hue
Hue 是 Hadoop 生態圈的可視化組件,可以直接對接 HDFS、YARN、Hive等服務,方便用戶通過圖形化界面的方式對服務進行操控。
KafkaUI
KafkaUI 本質為 KafkaEagle,是國產化的 Kafka 可視化工具套件,可以方便用戶對 Broker、Topic 可視化管理。
ZKUI
ZKUI 方便用戶以圖形化界面的方式查看 Zookeeper 中的數據掛載結構。
Ranger
Apache Ranger提供一個集中式安全管理框架, 并解決授權和審計。它可以對Hadoop生態的組件如HDFS、Yarn、Hive、Hbase等進行細粒度的數據訪問控制。通過操作Ranger控制臺,管理員可以輕松的通過配置策略來控制用戶訪問權限。
Atlas
Atlas能夠提供元數據管理能力。可以根據項目的實際情況,制定元數據的使用規范和主數據的使用規范,在此基礎上構建相應的元數據和主數據子系統,并支持未來各類管理數據的信息轉換共享。
總結
以上是生活随笔為你收集整理的Hadoop大数据组件简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF使用Prism框架
- 下一篇: jdk安装后怎么使用_jdk安装后怎么打