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