做過(guò)Zabbix的同學(xué)都知道,Zabbix通過(guò)專用的Agent或者SNMP收集相關(guān)的監(jiān)控?cái)?shù)據(jù),然后存儲(chǔ)到數(shù)據(jù)庫(kù)里面實(shí)時(shí)在前臺(tái)展示。Zabbix監(jiān)控?cái)?shù)據(jù)主要分為以下兩類:
創(chuàng)新互聯(lián)建站成立與2013年,先為甘泉等服務(wù)建站,甘泉等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為甘泉企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
歷史數(shù)據(jù):history相關(guān)表,從history_uint表里面可以查詢到設(shè)備監(jiān)控項(xiàng)目的最大,最小和平均值,即存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的原始數(shù)據(jù)。
趨勢(shì)數(shù)據(jù):trends相關(guān)表,趨勢(shì)數(shù)據(jù)是經(jīng)過(guò)Zabbix計(jì)算的數(shù)據(jù),數(shù)據(jù)是從history_uint里面匯總的,從trends_uint可以查看到監(jiān)控?cái)?shù)據(jù)每小時(shí)最大,最小和平均值,即存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的匯總數(shù)據(jù)。
Zabbix可以通過(guò)兩種方式獲取歷史數(shù)據(jù):
1.通過(guò)Zabbix前臺(tái)獲取歷史數(shù)據(jù)
通過(guò)Zabbix前臺(tái)查看歷史數(shù)據(jù)非常簡(jiǎn)單,可以通過(guò)Monitoring-Lastest data的方式查看。也可以點(diǎn)擊右上角的As plain test按鈕保存成文本文件。
2.通過(guò)前臺(tái)獲取的數(shù)據(jù)進(jìn)行處理和二次查詢有很多限制,因此可以通過(guò)SQL語(yǔ)句直接從后臺(tái)DB查詢數(shù)據(jù)。
首先大家應(yīng)該熟悉SQL語(yǔ)句Select 常用用法:
SELECT [ALL | DISTINCT] Select_List [INTO [New_Table_name]
FROM { Table_name | View_name} [ [,{table2_name | view2_name}
[,…] ]
[ WHERE Serch_conditions ]
[ GROUP BY Group_by_list ]
[ HAVING Serch_conditions ]
[ ORDER BY Order_list [ASC| DEsC] ]
說(shuō)明:
1)SELECT子句指定要查詢的特定表中的列,它可以是*,表達(dá)式,列表等。
2)INTO子句指定要生成新的表。
3)FROM子句指定要查詢的表或者視圖。
4)WHERE子句用來(lái)限定查詢的范圍和條件。
5)GROUP BY子句指定分組查詢子句。
6)HAVING子句用于指定分組子句的條件。
7)ORDER BY可以根據(jù)一個(gè)或者多個(gè)列來(lái)排序查詢結(jié)果,在該子句中,既可以使用列名,也可以使用相對(duì)列號(hào),ASC表示升序,DESC表示降序。
8)mysql聚合函數(shù):sum(),count(),avg(),max(),avg()等都是聚合函數(shù),當(dāng)我們?cè)谟镁酆虾瘮?shù)的時(shí)候,一般都要用到GROUP BY 先進(jìn)行分組,然后再進(jìn)行聚合函數(shù)的運(yùn)算。運(yùn)算完后就要用到Having子句進(jìn)行判斷了,例如聚合函數(shù)的值是否大于某一個(gè)值等等。
創(chuàng)建數(shù)據(jù)庫(kù)
選擇開(kāi)始菜單中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打開(kāi)【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份驗(yàn)證建立連接。
在【對(duì)象資源管理器】窗口中展開(kāi)服務(wù)器,然后選擇【數(shù)據(jù)庫(kù)】節(jié)點(diǎn)
右鍵單擊【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),從彈出來(lái)的快捷菜單中選擇【新建數(shù)據(jù)庫(kù)】命令。
執(zhí)行上述操作后,會(huì)彈出【新建數(shù)據(jù)庫(kù)】對(duì)話框。在對(duì)話框、左側(cè)有3個(gè)選項(xiàng),分別是【常規(guī)】、【選項(xiàng)】和【文件組】。完成這三個(gè)選項(xiàng)中的設(shè)置會(huì)后,就完成了數(shù)據(jù)庫(kù)的創(chuàng)建工作,
在【數(shù)據(jù)庫(kù)名稱】文本框中輸入要新建數(shù)據(jù)庫(kù)的名稱。例如,這里以“新建的數(shù)據(jù)庫(kù)”。
在【所有者】文本框中輸入新建數(shù)據(jù)庫(kù)的所有者,如sa。根據(jù)數(shù)據(jù)庫(kù)的使用情況,選擇啟用或者禁用【使用全文索引】復(fù)選框。
在【數(shù)據(jù)庫(kù)文件】列表中包括兩行,一行是數(shù)據(jù)庫(kù)文件,而另一行是日記文件。通過(guò)單擊下面的【添加】、【刪除】按鈕添加或刪除數(shù)據(jù)庫(kù)文件。
切換到【選項(xiàng)頁(yè)】、在這里可以設(shè)置數(shù)據(jù)庫(kù)的排序規(guī)則、恢復(fù)模式、兼容級(jí)別和其他屬性。
切換到【文件組】頁(yè),在這里可以添加或刪除文件組。
完成以上操作后,單擊【確定】按鈕關(guān)閉【新建數(shù)據(jù)庫(kù)】對(duì)話框。至此“新建的數(shù)據(jù)”數(shù)據(jù)庫(kù)創(chuàng)建成功。新建的數(shù)據(jù)庫(kù)可以再【對(duì)象資源管理器】窗口看到。
一、消息中間件相關(guān)知識(shí)
1、概述
消息隊(duì)列已經(jīng)逐漸成為企業(yè)IT系統(tǒng)內(nèi)部通信的核心手段。它具有低耦合、可靠投遞、廣播、流量控制、最終一致性等一系列功能,成為異步RPC的主要手段之一。當(dāng)今市面上有很多主流的消息中間件,如老牌的ActiveMQ、RabbitMQ,炙手可熱的Kafka,阿里巴巴自主開(kāi)發(fā)RocketMQ等。
2、消息中間件的組成
2.1 Broker
消息服務(wù)器,作為server提供消息核心服務(wù)
2.2 Producer
消息生產(chǎn)者,業(yè)務(wù)的發(fā)起方,負(fù)責(zé)生產(chǎn)消息傳輸給broker,
2.3 Consumer
消息消費(fèi)者,業(yè)務(wù)的處理方,負(fù)責(zé)從broker獲取消息并進(jìn)行業(yè)務(wù)邏輯處理
2.4 Topic
2.5 Queue
2.6 Message
消息體,根據(jù)不同通信協(xié)議定義的固定格式進(jìn)行編碼的數(shù)據(jù)包,來(lái)封裝業(yè)務(wù)數(shù)據(jù),實(shí)現(xiàn)消息的傳輸
3 消息中間件模式分類
3.1 點(diǎn)對(duì)點(diǎn)
PTP點(diǎn)對(duì)點(diǎn):使用queue作為通信載體
說(shuō)明:
消息生產(chǎn)者生產(chǎn)消息發(fā)送到queue中,然后消息消費(fèi)者從queue中取出并且消費(fèi)消息。
消息被消費(fèi)以后,queue中不再存儲(chǔ),所以消息消費(fèi)者不可能消費(fèi)到已經(jīng)被消費(fèi)的消息。 Queue支持存在多個(gè)消費(fèi)者,但是對(duì)一個(gè)消息而言,只會(huì)有一個(gè)消費(fèi)者可以消費(fèi)。
說(shuō)明:
queue實(shí)現(xiàn)了負(fù)載均衡,將producer生產(chǎn)的消息發(fā)送到消息隊(duì)列中,由多個(gè)消費(fèi)者消費(fèi)。但一個(gè)消息只能被一個(gè)消費(fèi)者接受,當(dāng)沒(méi)有消費(fèi)者可用時(shí),這個(gè)消息會(huì)被保存直到有一個(gè)可用的消費(fèi)者。
4 消息中間件的優(yōu)勢(shì)
4.1 系統(tǒng)解耦
交互系統(tǒng)之間沒(méi)有直接的調(diào)用關(guān)系,只是通過(guò)消息傳輸,故系統(tǒng)侵入性不強(qiáng),耦合度低。
4.2 提高系統(tǒng)響應(yīng)時(shí)間
例如原來(lái)的一套邏輯,完成支付可能涉及先修改訂單狀態(tài)、計(jì)算會(huì)員積分、通知物流配送幾個(gè)邏輯才能完成;通過(guò)MQ架構(gòu)設(shè)計(jì),就可將緊急重要(需要立刻響應(yīng))的業(yè)務(wù)放到該調(diào)用方法中,響應(yīng)要求不高的使用消息隊(duì)列,放到MQ隊(duì)列中,供消費(fèi)者處理。
4.3 為大數(shù)據(jù)處理架構(gòu)提供服務(wù)
通過(guò)消息作為整合,大數(shù)據(jù)的背景下,消息隊(duì)列還與實(shí)時(shí)處理架構(gòu)整合,為數(shù)據(jù)處理提供性能支持。
4.4 Java消息服務(wù)——JMS
Java消息服務(wù)(Java Message Service,JMS)應(yīng)用程序接口是一個(gè)Java平臺(tái)中關(guān)于面向消息中間件(MOM)的API,用于在兩個(gè)應(yīng)用程序之間,或分布式系統(tǒng)中發(fā)送消息,進(jìn)行異步通信。
5 消息中間件應(yīng)用場(chǎng)景
5.1 異步通信
有些業(yè)務(wù)不想也不需要立即處理消息。消息隊(duì)列提供了異步處理機(jī)制,允許用戶把一個(gè)消息放入隊(duì)列,但并不立即處理它。想向隊(duì)列中放入多少消息就放多少,然后在需要的時(shí)候再去處理它們。
5.2 解耦
降低工程間的強(qiáng)依賴程度,針對(duì)異構(gòu)系統(tǒng)進(jìn)行適配。在項(xiàng)目啟動(dòng)之初來(lái)預(yù)測(cè)將來(lái)項(xiàng)目會(huì)碰到什么需求,是極其困難的。通過(guò)消息系統(tǒng)在處理過(guò)程中間插入了一個(gè)隱含的、基于數(shù)據(jù)的接口層,兩邊的處理過(guò)程都要實(shí)現(xiàn)這一接口,當(dāng)應(yīng)用發(fā)生變化時(shí),可以獨(dú)立的擴(kuò)展或修改兩邊的處理過(guò)程,只要確保它們遵守同樣的接口約束。
5.3 冗余
有些情況下,處理數(shù)據(jù)的過(guò)程會(huì)失敗。除非數(shù)據(jù)被持久化,否則將造成丟失。消息隊(duì)列把數(shù)據(jù)進(jìn)行持久化直到它們已經(jīng)被完全處理,通過(guò)這一方式規(guī)避了數(shù)據(jù)丟失風(fēng)險(xiǎn)。許多消息隊(duì)列所采用的”插入-獲取-刪除”范式中,在把一個(gè)消息從隊(duì)列中刪除之前,需要你的處理系統(tǒng)明確的指出該消息已經(jīng)被處理完畢,從而確保你的數(shù)據(jù)被安全的保存直到你使用完畢。
5.4 擴(kuò)展性
因?yàn)橄㈥?duì)列解耦了你的處理過(guò)程,所以增大消息入隊(duì)和處理的頻率是很容易的,只要另外增加處理過(guò)程即可。不需要改變代碼、不需要調(diào)節(jié)參數(shù)。便于分布式擴(kuò)容。
5.5 過(guò)載保護(hù)
在訪問(wèn)量劇增的情況下,應(yīng)用仍然需要繼續(xù)發(fā)揮作用,但是這樣的突發(fā)流量無(wú)法提取預(yù)知;如果以為了能處理這類瞬間峰值訪問(wèn)為標(biāo)準(zhǔn)來(lái)投入資源隨時(shí)待命無(wú)疑是巨大的浪費(fèi)。使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問(wèn)壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。
5.6 可恢復(fù)性
系統(tǒng)的一部分組件失效時(shí),不會(huì)影響到整個(gè)系統(tǒng)。消息隊(duì)列降低了進(jìn)程間的耦合度,所以即使一個(gè)處理消息的進(jìn)程掛掉,加入隊(duì)列中的消息仍然可以在系統(tǒng)恢復(fù)后被處理。
5.7 順序保證
在大多使用場(chǎng)景下,數(shù)據(jù)處理的順序都很重要。大部分消息隊(duì)列本來(lái)就是排序的,并且能保證數(shù)據(jù)會(huì)按照特定的順序來(lái)處理。
5.8 緩沖
在任何重要的系統(tǒng)中,都會(huì)有需要不同的處理時(shí)間的元素。消息隊(duì)列通過(guò)一個(gè)緩沖層來(lái)幫助任務(wù)最高效率的執(zhí)行,該緩沖有助于控制和優(yōu)化數(shù)據(jù)流經(jīng)過(guò)系統(tǒng)的速度。以調(diào)節(jié)系統(tǒng)響應(yīng)時(shí)間。
5.9 數(shù)據(jù)流處理
分布式系統(tǒng)產(chǎn)生的海量數(shù)據(jù)流,如:業(yè)務(wù)日志、監(jiān)控?cái)?shù)據(jù)、用戶行為等,針對(duì)這些數(shù)據(jù)流進(jìn)行實(shí)時(shí)或批量采集匯總,然后進(jìn)行大數(shù)據(jù)分析是當(dāng)前互聯(lián)網(wǎng)的必備技術(shù),通過(guò)消息隊(duì)列完成此類數(shù)據(jù)收集是最好的選擇。
6 消息中間件常用協(xié)議
6.1 AMQP協(xié)議
AMQP即Advanced Message Queuing Protocol,一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開(kāi)放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)?;诖藚f(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同開(kāi)發(fā)語(yǔ)言等條件的限制。
優(yōu)點(diǎn):可靠、通用
6.2 MQTT協(xié)議
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)是IBM開(kāi)發(fā)的一個(gè)即時(shí)通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。該協(xié)議支持所有平臺(tái),幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來(lái),被用來(lái)當(dāng)做傳感器和致動(dòng)器(比如通過(guò)Twitter讓房屋聯(lián)網(wǎng))的通信協(xié)議。
優(yōu)點(diǎn):格式簡(jiǎn)潔、占用帶寬小、移動(dòng)端通信、PUSH、嵌入式系統(tǒng)
6.3 STOMP協(xié)議
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息協(xié)議,是一種為MOM(Message Oriented Middleware,面向消息的中間件)設(shè)計(jì)的簡(jiǎn)單文本協(xié)議。STOMP提供一個(gè)可互操作的連接格式,允許客戶端與任意STOMP消息代理(Broker)進(jìn)行交互。
優(yōu)點(diǎn):命令模式(非topic\queue模式)
6.4 XMPP協(xié)議
XMPP(可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議,Extensible Messaging and Presence Protocol)是基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的協(xié)議,多用于即時(shí)消息(IM)以及在線現(xiàn)場(chǎng)探測(cè)。適用于服務(wù)器之間的準(zhǔn)即時(shí)操作。核心是基于XML流傳輸,這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息,即使其操作系統(tǒng)和瀏覽器不同。
優(yōu)點(diǎn):通用公開(kāi)、兼容性強(qiáng)、可擴(kuò)展、安全性高,但XML編碼格式占用帶寬大
6.5 其他基于TCP/IP自定義的協(xié)議
有些特殊框架(如:redis、kafka、zeroMq等)根據(jù)自身需要未嚴(yán)格遵循MQ規(guī)范,而是基于TCP\IP自行封裝了一套協(xié)議,通過(guò)網(wǎng)絡(luò)socket接口進(jìn)行傳輸,實(shí)現(xiàn)了MQ的功能。
7 常見(jiàn)消息中間件MQ介紹
7.1 RocketMQ
阿里系下開(kāi)源的一款分布式、隊(duì)列模型的消息中間件,原名Metaq,3.0版本名稱改為RocketMQ,是阿里參照kafka設(shè)計(jì)思想使用java實(shí)現(xiàn)的一套mq。同時(shí)將阿里系內(nèi)部多款mq產(chǎn)品(Notify、metaq)進(jìn)行整合,只維護(hù)核心功能,去除了所有其他運(yùn)行時(shí)依賴,保證核心功能最簡(jiǎn)化,在此基礎(chǔ)上配合阿里上述其他開(kāi)源產(chǎn)品實(shí)現(xiàn)不同場(chǎng)景下mq的架構(gòu),目前主要多用于訂單交易系統(tǒng)。
具有以下特點(diǎn):
官方提供了一些不同于kafka的對(duì)比差異:
7.2 RabbitMQ
使用Erlang編寫的一個(gè)開(kāi)源的消息隊(duì)列,本身支持很多的協(xié)議:AMQP,XMPP, SMTP,STOMP,也正是如此,使的它變的非常重量級(jí),更適合于企業(yè)級(jí)的開(kāi)發(fā)。同時(shí)實(shí)現(xiàn)了Broker架構(gòu),核心思想是生產(chǎn)者不會(huì)將消息直接發(fā)送給隊(duì)列,消息在發(fā)送給客戶端時(shí)先在中心隊(duì)列排隊(duì)。對(duì)路由(Routing),負(fù)載均衡(Load balance)、數(shù)據(jù)持久化都有很好的支持。多用于進(jìn)行企業(yè)級(jí)的ESB整合。
7.3 ActiveMQ
Apache下的一個(gè)子項(xiàng)目。使用Java完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider實(shí)現(xiàn),少量代碼就可以高效地實(shí)現(xiàn)高級(jí)應(yīng)用場(chǎng)景。可插拔的傳輸協(xié)議支持,比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多種語(yǔ)言客戶端 C++、Java、.Net,、Python、 Php、 Ruby等。
7.4 Redis
使用C語(yǔ)言開(kāi)發(fā)的一個(gè)Key-Value的NoSQL數(shù)據(jù)庫(kù),開(kāi)發(fā)維護(hù)很活躍,雖然它是一個(gè)Key-Value數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng),但它本身支持MQ功能,所以完全可以當(dāng)做一個(gè)輕量級(jí)的隊(duì)列服務(wù)來(lái)使用。對(duì)于RabbitMQ和Redis的入隊(duì)和出隊(duì)操作,各執(zhí)行100萬(wàn)次,每10萬(wàn)次記錄一次執(zhí)行時(shí)間。測(cè)試數(shù)據(jù)分為128Bytes、512Bytes、1K和10K四個(gè)不同大小的數(shù)據(jù)。實(shí)驗(yàn)表明:入隊(duì)時(shí),當(dāng)數(shù)據(jù)比較小時(shí)Redis的性能要高于RabbitMQ,而如果數(shù)據(jù)大小超過(guò)了10K,Redis則慢的無(wú)法忍受;出隊(duì)時(shí),無(wú)論數(shù)據(jù)大小,Redis都表現(xiàn)出非常好的性能,而RabbitMQ的出隊(duì)性能則遠(yuǎn)低于Redis。
7.5 Kafka
Apache下的一個(gè)子項(xiàng)目,使用scala實(shí)現(xiàn)的一個(gè)高性能分布式Publish/Subscribe消息隊(duì)列系統(tǒng),具有以下特性:
7.6 ZeroMQ
號(hào)稱最快的消息隊(duì)列系統(tǒng),專門為高吞吐量/低延遲的場(chǎng)景開(kāi)發(fā),在金融界的應(yīng)用中經(jīng)常使用,偏重于實(shí)時(shí)數(shù)據(jù)通信場(chǎng)景。ZMQ能夠?qū)崿F(xiàn)RabbitMQ不擅長(zhǎng)的高級(jí)/復(fù)雜的隊(duì)列,但是開(kāi)發(fā)人員需要自己組合多種技術(shù)框架,開(kāi)發(fā)成本高。因此ZeroMQ具有一個(gè)獨(dú)特的非中間件的模式,更像一個(gè)socket library,你不需要安裝和運(yùn)行一個(gè)消息服務(wù)器或中間件,因?yàn)槟愕膽?yīng)用程序本身就是使用ZeroMQ API完成邏輯服務(wù)的角色。但是ZeroMQ僅提供非持久性的隊(duì)列,如果down機(jī),數(shù)據(jù)將會(huì)丟失。如:Twitter的Storm中使用ZeroMQ作為數(shù)據(jù)流的傳輸。
ZeroMQ套接字是與傳輸層無(wú)關(guān)的:ZeroMQ套接字對(duì)所有傳輸層協(xié)議定義了統(tǒng)一的API接口。默認(rèn)支持 進(jìn)程內(nèi)(inproc) ,進(jìn)程間(IPC) ,多播,TCP協(xié)議,在不同的協(xié)議之間切換只要簡(jiǎn)單的改變連接字符串的前綴。可以在任何時(shí)候以最小的代價(jià)從進(jìn)程間的本地通信切換到分布式下的TCP通信。ZeroMQ在背后處理連接建立,斷開(kāi)和重連邏輯。
特性:
二、主要消息中間件的比較
大數(shù)據(jù)技術(shù)的體系龐大且復(fù)雜,基礎(chǔ)的技術(shù)包含數(shù)據(jù)的采集、數(shù)據(jù)預(yù)處理、分布式存儲(chǔ)、數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、機(jī)器學(xué)習(xí)、并行計(jì)算、可視化等。
1、數(shù)據(jù)采集與預(yù)處理:FlumeNG實(shí)時(shí)日志收集系統(tǒng),支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);Zookeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),提供數(shù)據(jù)同步服務(wù)。
2、數(shù)據(jù)存儲(chǔ):Hadoop作為一個(gè)開(kāi)源的框架,專為離線和大規(guī)模數(shù)據(jù)分析而設(shè)計(jì),HDFS作為其核心的存儲(chǔ)引擎,已被廣泛用于數(shù)據(jù)存儲(chǔ)。HBase,是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),可以認(rèn)為是hdfs的封裝,本質(zhì)是數(shù)據(jù)存儲(chǔ)、NoSQL數(shù)據(jù)庫(kù)。
3、數(shù)據(jù)清洗:MapReduce作為Hadoop的查詢引擎,用于大規(guī)模數(shù)據(jù)集的并行計(jì)算。
4、數(shù)據(jù)查詢分析:Hive的核心工作就是把SQL語(yǔ)句翻譯成MR程序,可以將結(jié)構(gòu)化的數(shù)據(jù)映射為一張數(shù)據(jù)庫(kù)表,并提供HQL(HiveSQL)查詢功能。Spark啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
5、數(shù)據(jù)可視化:對(duì)接一些BI平臺(tái),將分析得到的數(shù)據(jù)進(jìn)行可視化,用于指導(dǎo)決策服務(wù)。
大數(shù)據(jù)是指在一定時(shí)間內(nèi),常規(guī)軟件工具無(wú)法捕捉、管理和處理的數(shù)據(jù)集合。它是一種海量、高增長(zhǎng)、多元化的信息資產(chǎn),需要一種新的處理模式,以具備更強(qiáng)的決策、洞察和流程優(yōu)化能力。
大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息,而在于對(duì)這些有意義的數(shù)據(jù)進(jìn)行專業(yè)的處理。換句話說(shuō),如果把大數(shù)據(jù)比作一個(gè)行業(yè),這個(gè)行業(yè)盈利的關(guān)鍵在于提高數(shù)據(jù)的“處理能力”,通過(guò)“處理”實(shí)現(xiàn)數(shù)據(jù)的“增值”。
從技術(shù)上講,大數(shù)據(jù)和云計(jì)算的關(guān)系就像硬幣的正反面一樣密不可分。大數(shù)據(jù)不能用單臺(tái)計(jì)算機(jī)處理,必須采用分布式架構(gòu)。其特點(diǎn)在于海量數(shù)據(jù)的分布式數(shù)據(jù)挖掘。但它必須依賴云計(jì)算分布式處理、分布式數(shù)據(jù)庫(kù)、云存儲(chǔ)和虛擬化技術(shù)。
擴(kuò)展信息:
大數(shù)據(jù)只是現(xiàn)階段互聯(lián)網(wǎng)的一個(gè)表征或特征。沒(méi)有必要將其神話或保持敬畏。在以云計(jì)算為代表的技術(shù)創(chuàng)新背景下,這些原本看似難以收集和使用的數(shù)據(jù)開(kāi)始被輕松使用。通過(guò)各行各業(yè)的不斷創(chuàng)新,大數(shù)據(jù)將逐漸為人類創(chuàng)造更多的價(jià)值。
是體現(xiàn)大數(shù)據(jù)技術(shù)價(jià)值的手段,是進(jìn)步的基石。這里從云計(jì)算、分布式處理技術(shù)、存儲(chǔ)技術(shù)、感知技術(shù)的發(fā)展,闡述大數(shù)據(jù)從采集、處理、存儲(chǔ)到形成結(jié)果的全過(guò)程。
實(shí)踐是大數(shù)據(jù)的終極價(jià)值。在這里,我們從互聯(lián)網(wǎng)大數(shù)據(jù)、政府大數(shù)據(jù)、企業(yè)大數(shù)據(jù)、個(gè)人大數(shù)據(jù)四個(gè)方面來(lái)描繪大數(shù)據(jù)的美好圖景和將要實(shí)現(xiàn)的藍(lán)圖。
大數(shù)據(jù)熱門詞匯匯總
可以說(shuō),大數(shù)據(jù)是如今IT行業(yè)最熱門的趨勢(shì)之一,它催生出了處理大數(shù)據(jù)的一批全新技術(shù)。而新技術(shù)帶來(lái)了新的熱門詞匯:首字母縮略詞、專業(yè)術(shù)語(yǔ)和產(chǎn)品名稱等。連"大數(shù)據(jù)"這個(gè)短語(yǔ)本身都讓人犯暈。許多人一聽(tīng)到"大數(shù)據(jù)",覺(jué)得是指"大量數(shù)據(jù)",而大數(shù)據(jù)的涵義絕不僅僅涉及數(shù)據(jù)量的多寡。
下面是我們認(rèn)為你要熟悉的幾個(gè)熱門詞匯,按字母順序排列。
ACID
ACID的全稱是原子性、一致性、隔離性和持久性,這其實(shí)是一組需求或?qū)傩裕喝绻@四個(gè)方面都得到遵守,就能在處理過(guò)程中確保數(shù)據(jù)庫(kù)事務(wù)的數(shù)據(jù)完整性。雖然ACID問(wèn)世已有一段時(shí)日,但是事務(wù)數(shù)據(jù)量的急劇增長(zhǎng)把更多的注意力投向在處理大數(shù)據(jù)時(shí)需要滿足ACID的規(guī)定。
大數(shù)據(jù)三要素
如今的IT系統(tǒng)在生成數(shù)量、速度和種類都很"龐大"的數(shù)據(jù)。
數(shù)量:IDC公司估計(jì),今年全球信息總量將達(dá)到2.7澤字節(jié)(這相當(dāng)于27億太字節(jié)),而且每?jī)赡昃头环?/p>
速度:讓IT管理人員們頭痛的不僅僅是數(shù)據(jù)數(shù)量,還有數(shù)據(jù)從金融系統(tǒng)、零售系統(tǒng)、網(wǎng)站、傳感器、無(wú)線射頻識(shí)別(RFID)芯片以及Facebook和推特等社交網(wǎng)絡(luò)源源而來(lái)的速度越來(lái)越快。
種類:如果回到5年前或可能10年前,IT人員處理的主要是字母數(shù)字?jǐn)?shù)據(jù),它們很容易存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中整齊排列的行和列中?,F(xiàn)在不再是這樣了。如今,推特和Facebook上的帖子、各種文檔及網(wǎng)頁(yè)內(nèi)容等非結(jié)構(gòu)化數(shù)據(jù)都是大數(shù)據(jù)組合的一部分。
列式(或列型)數(shù)據(jù)庫(kù)
一些新一代數(shù)據(jù)庫(kù)(如開(kāi)源Cassandra和惠普的Vertica數(shù)據(jù)庫(kù))被設(shè)計(jì)成了按列存儲(chǔ)數(shù)據(jù),而不是像傳統(tǒng)的SQL數(shù)據(jù)庫(kù)那樣按行存儲(chǔ)數(shù)據(jù)。這種設(shè)計(jì)提供了更快的磁盤訪問(wèn)速度,提高了處理大數(shù)據(jù)時(shí)的性能。對(duì)數(shù)據(jù)密集型業(yè)務(wù)分析應(yīng)用系統(tǒng)而言,列式數(shù)據(jù)庫(kù)尤其受到歡迎。
數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)倉(cāng)庫(kù)這個(gè)概念存在至今已有大概25年了,具體指將數(shù)據(jù)從多個(gè)操作IT系統(tǒng)復(fù)制到面向業(yè)務(wù)分析應(yīng)用系統(tǒng)的輔助離線數(shù)據(jù)庫(kù)
但是隨著數(shù)據(jù)量急劇增長(zhǎng),數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)正在迅速改變。它們需要存儲(chǔ)更多的數(shù)據(jù)以及更多種類的數(shù)據(jù),因而數(shù)據(jù)倉(cāng)庫(kù)管理成為一大難題。10年或20年前,數(shù)據(jù)可能每周或每月復(fù)制到數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)中;而如今,數(shù)據(jù)倉(cāng)庫(kù)的更新要頻繁得多,有的甚至實(shí)時(shí)更新。
ETL
將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)(比如支持銀行應(yīng)用事務(wù)處理系統(tǒng)的數(shù)據(jù)庫(kù))轉(zhuǎn)移到另一個(gè)數(shù)據(jù)庫(kù)(比如用于業(yè)務(wù)分析的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng))時(shí),就要用到提取、轉(zhuǎn)換和加載(ETL)軟件。數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)傳送到另一個(gè)數(shù)據(jù)庫(kù)時(shí),常常需要對(duì)數(shù)據(jù)進(jìn)行重新格式化和清理操作。
由于數(shù)據(jù)量急劇增長(zhǎng),數(shù)據(jù)處理速度大大加快,對(duì)ETL工具的性能要求也大大提高了。
Flume
Flume是屬于Apache Hadoop大家族(其他技術(shù)包括HBase、Hive、Oozie、Pig和Whirr)的一項(xiàng)技術(shù),這種框架用于為Hadoop填充數(shù)據(jù)。該技術(shù)使用散布于應(yīng)用服務(wù)器、Web服務(wù)器、移動(dòng)設(shè)備及其他系統(tǒng)上的軟件代理,收集數(shù)據(jù),并將數(shù)據(jù)傳送到Hadoop系統(tǒng)。
比如說(shuō),公司可以使用在Web服務(wù)器上運(yùn)行的Apache Flume,收集來(lái)自推特帖子的數(shù)據(jù),以便分析。
地理空間分析
推動(dòng)大數(shù)據(jù)潮流的一個(gè)趨勢(shì)是,由如今的IT系統(tǒng)生成和收集的地理空間數(shù)據(jù)越來(lái)越多。常言道,一幅圖片的信息量抵得上1000個(gè)單詞;所以難怪越來(lái)越多的地圖、圖表、照片及其他基于地理位置的內(nèi)容是導(dǎo)致如今大數(shù)據(jù)呈爆炸式增長(zhǎng)的主要?jiǎng)右颉?/p>
地理空間分析是一種特殊形式的數(shù)據(jù)可視化(參閱下面的"可視化"條目),在地理地圖上覆蓋數(shù)據(jù),以幫助用戶更清楚地理解大數(shù)據(jù)分析的結(jié)果。
Hadoop
Hadoop是一種開(kāi)源平臺(tái),用于開(kāi)發(fā)分布式、數(shù)據(jù)密集型的應(yīng)用程序。它由Apache軟件基金會(huì)控制。
Hadoop的發(fā)明者是雅虎公司的開(kāi)發(fā)者道格o卡廷(Doug Cutting),他在谷歌實(shí)驗(yàn)室的MapReduce概念這個(gè)基礎(chǔ)上開(kāi)發(fā)出了Hadoop,以他兒子的玩具象命名。
另外,HBase是一種非關(guān)系數(shù)據(jù)庫(kù),它是作為Hadoop項(xiàng)目的一部分開(kāi)發(fā)而成的。Hadoop分布式文件系統(tǒng)(HDFS)是Hadoop的一個(gè)關(guān)鍵組成部分。Hive則是建立在Hadoop基礎(chǔ)上的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。
內(nèi)存中數(shù)據(jù)庫(kù)
計(jì)算機(jī)在處理事務(wù)或執(zhí)行查詢時(shí),一般從磁盤驅(qū)動(dòng)器獲取數(shù)據(jù)。但是當(dāng)IT系統(tǒng)處理大數(shù)據(jù)時(shí),這個(gè)過(guò)程可能實(shí)在太慢。
內(nèi)存中數(shù)據(jù)庫(kù)系統(tǒng)利用計(jì)算機(jī)的主內(nèi)存來(lái)存儲(chǔ)經(jīng)常使用的數(shù)據(jù),因而大大縮短了處理時(shí)間。內(nèi)存中數(shù)據(jù)庫(kù)產(chǎn)品包括SAP HANA和甲骨文Times Ten內(nèi)存中數(shù)據(jù)庫(kù)。
Java
Java是一種編程語(yǔ)言,由現(xiàn)隸屬甲骨文公司的Sun開(kāi)發(fā),于1995年發(fā)布。Hadoop和其他許多大數(shù)據(jù)技術(shù)都是使用Java開(kāi)發(fā)而成的,它仍是大數(shù)據(jù)領(lǐng)域一種主要的開(kāi)發(fā)技術(shù)。
Kafka
Kafka是一種高吞吐量的分布式消息傳送系統(tǒng),最初是在LinkedIn開(kāi)發(fā)而成,用于管理該服務(wù)網(wǎng)站的活動(dòng)流(關(guān)于網(wǎng)站使用情況的數(shù)據(jù))和操作數(shù)據(jù)處理流水線(關(guān)于服務(wù)器組件的性能)。
Kafka在處理大量流式數(shù)據(jù)時(shí)很有效,而流式數(shù)據(jù)是許多大數(shù)據(jù)計(jì)算環(huán)境的一個(gè)關(guān)鍵問(wèn)題。由推特開(kāi)發(fā)的Storm是另一種大行其道的流處理技術(shù)。
Apache軟件基金會(huì)已將Kafka列為一個(gè)開(kāi)源項(xiàng)目。所以,別以為這是有缺陷的軟件。
延遲時(shí)間
延遲時(shí)間是指數(shù)據(jù)從一個(gè)點(diǎn)傳送到另一個(gè)點(diǎn)過(guò)程中的延遲,或者是某個(gè)系統(tǒng)(如應(yīng)用程序)響應(yīng)另一個(gè)系統(tǒng)的延遲數(shù)量。
雖然延遲時(shí)間不是什么新術(shù)語(yǔ),但是隨著數(shù)據(jù)量不斷增長(zhǎng),IT系統(tǒng)竭力跟上步伐,如今你更常聽(tīng)到這個(gè)術(shù)語(yǔ)。簡(jiǎn)單地說(shuō),"低延遲"是好事,"高延遲"是壞事。
映射/化簡(jiǎn)
映射/化簡(jiǎn)(Map/Reduce)這種方法是指把一個(gè)復(fù)雜的問(wèn)題分解成多個(gè)較小的部分,然后將它們分發(fā)到多臺(tái)計(jì)算機(jī)上,最后把它們重新組裝成一個(gè)答案。
谷歌的搜索系統(tǒng)用到了映射/化簡(jiǎn)概念,這家公司有一個(gè)品牌名為MapReduce的框架。
谷歌在2004年發(fā)布的一份白皮書描述了它使用映射/化簡(jiǎn)的情況。Hadoop之父道格o卡廷充分認(rèn)識(shí)到了其潛力,開(kāi)發(fā)出了同樣借用映射/化簡(jiǎn)概念的第一個(gè)版本的Hadoop。
NoSQL數(shù)據(jù)庫(kù)
大多數(shù)主流的數(shù)據(jù)庫(kù)(如甲骨文數(shù)據(jù)庫(kù)和微軟SQL Server)基于關(guān)系型體系結(jié)構(gòu),使用結(jié)構(gòu)化查詢語(yǔ)言(SQL)用于開(kāi)發(fā)和數(shù)據(jù)管理。
但是名為"NoSQL"(有些人現(xiàn)在稱NoSQL表示"不是只有SQL")的新一代數(shù)據(jù)庫(kù)系統(tǒng)基于支持者們認(rèn)為更適合處理大數(shù)據(jù)的體系結(jié)構(gòu)。
一些NoSQL數(shù)據(jù)庫(kù)是為提高可擴(kuò)展性和靈活性設(shè)計(jì)的,另一些NoSQL數(shù)據(jù)庫(kù)在處理文檔及其他非結(jié)構(gòu)化數(shù)據(jù)方面比較有效。典型的NoSQL數(shù)據(jù)庫(kù)包括Hadoop/HBase、Cassandra、MongoDB和CouchDB,而甲骨文等一些知名開(kāi)發(fā)商已推出了各自的NoSQL產(chǎn)品。
Oozie
Apache Oozie是一種開(kāi)源工作流引擎,用于幫助管理面向Hadoop的處理工作。使用Oozie,一系列工作可以用多種語(yǔ)言(如Pig和MapReduce)來(lái)加以定義,然后彼此關(guān)聯(lián)起來(lái)。比如說(shuō),一旦從操作應(yīng)用程序收集數(shù)據(jù)的作業(yè)已完成,程序員就可以啟動(dòng)數(shù)據(jù)分析查詢?nèi)蝿?wù)。
Pig
Pig是Apache軟件基金會(huì)的另一個(gè)項(xiàng)目,這個(gè)平臺(tái)用于分析龐大的數(shù)據(jù)集。就其本質(zhì)而言,Pig是一種編程語(yǔ)言,可用于開(kāi)發(fā)在Hadoop上運(yùn)行的并行計(jì)算查詢。
定量數(shù)據(jù)分析
定量數(shù)據(jù)分析是指使用復(fù)雜的數(shù)學(xué)或統(tǒng)計(jì)模型,解釋金融和商業(yè)行為,或者甚至預(yù)測(cè)未來(lái)的行為。
由于如今收集的數(shù)據(jù)量急劇增加,定量數(shù)據(jù)分析已變得更加復(fù)雜。但是如果公司知道如何利用海量數(shù)據(jù),獲得更好的可視性,深入了解公司業(yè)務(wù),并且洞察市場(chǎng)發(fā)展趨勢(shì),那么更多的數(shù)據(jù)也有望在數(shù)據(jù)分析方面帶來(lái)更多的機(jī)會(huì)。
一個(gè)問(wèn)題是,擁有這種分析技能的人才嚴(yán)重匱乏。知名咨詢公司麥肯錫表示,光美國(guó)就需要150萬(wàn)名擁有大數(shù)據(jù)分析技能的分析員和管理員。
關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBM)是如今使用最廣泛的一種數(shù)據(jù)庫(kù),包括IBM的DB2、微軟的SQL Server和甲骨文數(shù)據(jù)庫(kù)。從銀行應(yīng)用系統(tǒng)、零售店的銷售點(diǎn)系統(tǒng)到庫(kù)存管理應(yīng)用軟件,大多數(shù)的企業(yè)事務(wù)處理系統(tǒng)都在RDBM上運(yùn)行。
但有些人認(rèn)為,關(guān)系數(shù)據(jù)庫(kù)可能跟不上如今數(shù)據(jù)量和種類都呈爆炸式增長(zhǎng)的形勢(shì)。比如說(shuō),RDBM當(dāng)初在設(shè)計(jì)時(shí)著眼于處理字母數(shù)字?jǐn)?shù)據(jù),處理非結(jié)構(gòu)化數(shù)據(jù)時(shí)不是同樣有效。
分片
隨著數(shù)據(jù)庫(kù)變得越來(lái)越龐大,處理起來(lái)也變得越來(lái)越困難。分片(sharding)是一種數(shù)據(jù)庫(kù)分區(qū)技術(shù),把數(shù)據(jù)庫(kù)分成了更小、更容易管理的部分。具體來(lái)說(shuō),數(shù)據(jù)庫(kù)被橫向分區(qū),以便單獨(dú)管理數(shù)據(jù)庫(kù)表中的不同行。
分片方法讓龐大數(shù)據(jù)庫(kù)的片段可以分布在多臺(tái)服務(wù)器上,從而提高數(shù)據(jù)庫(kù)的整體運(yùn)行速度和性能。
另外,Sqoop是一種開(kāi)源工具,用于將來(lái)自非Hadoop來(lái)源(如關(guān)系數(shù)據(jù)庫(kù))的數(shù)據(jù)轉(zhuǎn)移到Hadoop環(huán)境。
文本分析
導(dǎo)致大數(shù)據(jù)問(wèn)題的因素之一是,從推特和Facebook等社交媒體網(wǎng)站、外部新聞源,甚至公司內(nèi)部收集而來(lái)以便分析的文本數(shù)量越來(lái)越多。由于文本是非結(jié)構(gòu)化數(shù)據(jù)(不像通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)),主流的業(yè)務(wù)分析工具面對(duì)文本時(shí)常常束手無(wú)策。
文本分析采用了一系列方法(關(guān)鍵字搜索、統(tǒng)計(jì)分析法和語(yǔ)言研究法等),從基于文本的數(shù)據(jù)中獲得洞察力。
非結(jié)構(gòu)化數(shù)據(jù)
就在不久前,大部分?jǐn)?shù)據(jù)還是結(jié)構(gòu)化數(shù)據(jù),這種字母數(shù)字信息(如來(lái)自銷售交易的財(cái)務(wù)數(shù)據(jù))很容易存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,并由商業(yè)智能工具來(lái)分析。
但是如今共計(jì)2.7澤字節(jié)的存儲(chǔ)數(shù)據(jù)中很大一部分是非結(jié)構(gòu)化數(shù)據(jù),比如基于文本的文檔、推特消息、發(fā)布在Flickr上的照片、發(fā)布在YouTube上的視頻,等等。(頗有意思的是,每分鐘有長(zhǎng)達(dá)35個(gè)小時(shí)的視頻內(nèi)容上傳到Y(jié)ouTube。)處理、存儲(chǔ)和分析所有這些凌亂的非結(jié)構(gòu)化數(shù)據(jù)常常是如今的IT系統(tǒng)面臨的難題。
可視化
隨著數(shù)據(jù)量的增長(zhǎng),人們使用靜態(tài)的圖表和圖形來(lái)理解數(shù)據(jù)越來(lái)越困難了。這就導(dǎo)致開(kāi)發(fā)新一代的數(shù)據(jù)可視化和分析工具,能夠以新的方式呈現(xiàn)數(shù)據(jù),從而幫助人們理解海量信息。
這些工具包括:標(biāo)以色碼的熱圖,三維圖形,顯示一段時(shí)間內(nèi)變化的動(dòng)畫可視化,以及在地理地圖上覆蓋數(shù)據(jù)的地理空間呈現(xiàn)。今天的先進(jìn)數(shù)據(jù)可視化工具還具有更強(qiáng)的互動(dòng)性,比如允許用戶放大某個(gè)數(shù)據(jù)子集,進(jìn)行更仔細(xì)的檢查。
Whirr
Apache Whirr是一組Java類庫(kù),用于運(yùn)行大數(shù)據(jù)云服務(wù)。更確切地說(shuō),它可以加快在亞馬遜彈性計(jì)算云(EC2)和Rackspace等虛擬基礎(chǔ)設(shè)施上開(kāi)發(fā)Hadoop集群的過(guò)程。
XML
可擴(kuò)展標(biāo)記語(yǔ)言(XML)用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)(別與HTML混為一談,后者用來(lái)顯示數(shù)據(jù))。借助XML,程序員們就可以創(chuàng)建通用的數(shù)據(jù)格式,并通過(guò)互聯(lián)網(wǎng)共享信息和格式。
由于XML文檔可能非常龐大、復(fù)雜,它們往往被認(rèn)為導(dǎo)致IT部門面臨大數(shù)據(jù)挑戰(zhàn)。
堯字節(jié)
堯字節(jié)(yottabyte)是一種數(shù)據(jù)存儲(chǔ)度量指標(biāo),相當(dāng)于1000澤字節(jié)。據(jù)知名調(diào)研機(jī)構(gòu)IDC公司估計(jì),今年全球存儲(chǔ)的數(shù)據(jù)總量預(yù)計(jì)將達(dá)到2.7澤字節(jié),比2011年增長(zhǎng)48%。所以,我們離達(dá)到堯字節(jié)這個(gè)大關(guān)還有很長(zhǎng)一段路,不過(guò)從目前大數(shù)據(jù)的增長(zhǎng)速度來(lái)看,那一天的到來(lái)可能比我們想象的要快。
順便說(shuō)一下,1澤字節(jié)相當(dāng)于1021字節(jié)的數(shù)據(jù)。它相當(dāng)于1000艾字節(jié)(EB)、100萬(wàn)拍字節(jié)(PB)和10億太字節(jié)(TB)。
ZooKeeper
ZooKeeper是由Apache軟件基金會(huì)創(chuàng)建的一項(xiàng)服務(wù),旨在幫助Hadoop用戶管理和協(xié)調(diào)跨分布式網(wǎng)絡(luò)的Hadoop節(jié)點(diǎn)。
ZooKeeper與HBase緊密集成,而HBase是與Hadoop有關(guān)的數(shù)據(jù)庫(kù)。ZooKeeper是一項(xiàng)集中式服務(wù),用于維護(hù)配置信息、命名服務(wù)、分布式同步及其他群組服務(wù)。IT管理人員用它來(lái)實(shí)現(xiàn)可靠的消息傳遞機(jī)制、同步流程執(zhí)行及實(shí)施冗余服務(wù)。