大數(shù)據(jù)前幾年各種概念爭論很多继效,NoSQL/NewSQL,CAP/BASE概念一堆堆的训措,現(xiàn)在這股熱潮被AI接過去了伪节。大數(shù)據(jù)真正落地到車聯(lián)網(wǎng),分控隙弛,各種數(shù)據(jù)分析等等具體場景架馋。
概念很高大上,搞得久了就會(huì)發(fā)現(xiàn)全闷,大部分都還是數(shù)據(jù)倉庫的衍伸叉寂,所以我們稱呼這個(gè)為“新數(shù)倉”。
數(shù)據(jù)庫存儲(chǔ)模型簡述
HBASE+Solr實(shí)現(xiàn)詳單查詢
本文簡單梳理下其中一個(gè)應(yīng)用比較廣的HBASE的生態(tài)总珠,可能不全屏鳍。具體HBASE的基本原理掃描大家可以自行百度下勘纯,另外,要系統(tǒng)掌握HBASE钓瞭,推薦看下《HBASE權(quán)威指南》驳遵。
1 Kerberos
什么是Kerberos?
Kerberos is a network authentication protocol. It is designed to provide strong authentication for client/server applications by using secret-key cryptography.
簡單地說山涡,Kerberos是一種認(rèn)證機(jī)制堤结,通過密鑰系統(tǒng)為客戶端/服務(wù)器應(yīng)用程序提供強(qiáng)大的認(rèn)證服務(wù)。
Kerberos存在的意義
在Hadoop1.0.0或者CDH3 版本之前鸭丛,并不存在安全認(rèn)證一說竞穷。默認(rèn)集群內(nèi)所有的節(jié)點(diǎn)都是可靠的,值得信賴的鳞溉。用戶與HDFS或者M(jìn)/R進(jìn)行交互時(shí)并不需要進(jìn)行驗(yàn)證瘾带。導(dǎo)致存在惡意用戶偽裝成真正的用戶或者服務(wù)器入侵到hadoop集群上,惡意的提交作業(yè)熟菲,修改JobTracker狀態(tài)看政,篡改HDFS上的數(shù)據(jù),偽裝成NameNode 或者TaskTracker接受任務(wù)等抄罕。盡管在版本0.16以后允蚣, HDFS增加了文件和目錄的權(quán)限,但是并沒有強(qiáng)認(rèn)證的保障贞绵,這些權(quán)限只能對(duì)偶然的數(shù)據(jù)丟失起保護(hù)作用厉萝。惡意的用戶可以輕易的偽裝成其他用戶來篡改權(quán)限,致使權(quán)限設(shè)置形同虛設(shè)榨崩,不能夠?qū)adoop集群起到安全保障。
在Hadoop1.0.0或者CDH3版本后章母,加入了Kerberos認(rèn)證機(jī)制母蛛。使得集群中的節(jié)點(diǎn)就是它們所宣稱的,是信賴的乳怎。Kerberos可以將認(rèn)證的密鑰在集群部署時(shí)事先放到可靠的節(jié)點(diǎn)上彩郊。集群運(yùn)行時(shí),集群內(nèi)的節(jié)點(diǎn)使用密鑰得到認(rèn)證蚪缀。只有被認(rèn)證過節(jié)點(diǎn)才能正常使用秫逝。企圖冒充的節(jié)點(diǎn)由于沒有事先得到的密鑰信息,無法與集群內(nèi)部的節(jié)點(diǎn)通信询枚。防止了惡意的使用或篡改Hadoop集群的問題违帆,確保了Hadoop集群的可靠安全。
Kerberos的工作原理
·Client向KDC發(fā)送自己的身份信息金蜀,完成認(rèn)證刷后,獲取TGT(ticket-granting ticket)
·Client利用之前獲得的TGT向KDC請(qǐng)求其他Service的Ticket的畴,從而通過其他Service的身份鑒別
① Client將之前獲得的TGT和要請(qǐng)求的服務(wù)信息發(fā)送給KDC
② KDC生成用于訪問該服務(wù)的Session Ticket發(fā)給Client。 Session Ticket使用KDC與Service之間的密鑰加密
③ Client將剛才收到的Ticket轉(zhuǎn)發(fā)到Service尝胆。由于Client不知道KDC與Service之間的密鑰丧裁,所以它無法篡改Ticket中的信息
④ Service 收到Ticket后利用它與KDC之間的密鑰將Ticket中的信息解密出來,驗(yàn)證Client的身份含衔。
2 Phoenix
Phoenix最早是saleforce的一個(gè)開源項(xiàng)目煎娇,后來成為Apache基金的頂級(jí)項(xiàng)目。
Phoenix是構(gòu)建在HBase上的一個(gè)SQL層贪染,能讓我們用標(biāo)準(zhǔn)的JDBC APIs而不是HBase客戶端APIs來創(chuàng)建表缓呛,插入數(shù)據(jù)和對(duì)HBase數(shù)據(jù)進(jìn)行查詢。
put the SQL back in NoSQL
Phoenix完全使用Java編寫抑进,作為HBase內(nèi)嵌的JDBC驅(qū)動(dòng)强经。Phoenix查詢引擎會(huì)將SQL查詢轉(zhuǎn)換為一個(gè)或多個(gè)HBase掃描,并編排執(zhí)行以生成標(biāo)準(zhǔn)的JDBC結(jié)果集寺渗。直接使用HBase API匿情、協(xié)同處理器與自定義過濾器,對(duì)于簡單查詢來說信殊,其性能量級(jí)是毫秒炬称,對(duì)于百萬級(jí)別的行數(shù)來說,其性能量級(jí)是秒涡拘。
HBase的查詢工具有很多玲躯,如:Hive、Tez鳄乏、Impala跷车、Spark SQL、Phoenix等橱野。
Phoenix通過以下方式使我們可以少寫代碼朽缴,并且性能比我們自己寫代碼更好:
·將SQL編譯成原生的HBase scans。
·確定scan關(guān)鍵字的最佳開始和結(jié)束
·讓scan并行執(zhí)行
·...
3 多維查詢kylin
Apache Kylin?是一個(gè)開源的分布式分析引擎水援,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù)密强,最初由eBay Inc. 開發(fā)并貢獻(xiàn)至開源社區(qū)。它能在亞秒內(nèi)查詢巨大的Hive表蜗元。
Kylin相當(dāng)于給HBASE提供了一個(gè)多為查詢的SQL能力或渤。
4 時(shí)序列數(shù)據(jù)庫OpenTSDB
OpenTSDB ,可以認(rèn)為是一個(gè)時(shí)系列數(shù)據(jù)(庫)奕扣,它基于HBase存儲(chǔ)數(shù)據(jù)薪鹦,充分發(fā)揮了HBase的分布式列存儲(chǔ)特性,支持?jǐn)?shù)百萬每秒的讀寫成畦,它的特點(diǎn)就是容易擴(kuò)展距芬,靈活的tag機(jī)制涝开。
其最主要的部件就是TSD了,這是接收數(shù)據(jù)并存儲(chǔ)到HBase處理的核心所在框仔。而帶有C(collector)標(biāo)志的Server舀武,則是數(shù)據(jù)采集源,將數(shù)據(jù)發(fā)給 TSD服務(wù)离斩。
5 地理數(shù)據(jù)處理套件GeoMesa
GeoMesa 是由locationtech開源的一套地理大數(shù)據(jù)處理工具套件银舱。其可在分布式計(jì)算系統(tǒng)上進(jìn)行大規(guī)模的地理空間查詢和分析。使用GeoMesa開源幫助用戶管理跛梗、使用來自于物聯(lián)網(wǎng)寻馏、社交媒體、手機(jī)應(yīng)用的海量的時(shí)空(spatio-temporal)數(shù)據(jù)核偿。
GeoMesa支持將海量的時(shí)空數(shù)據(jù)存儲(chǔ)到Accumulo诚欠,HBase,Google Bigtable和Cassandra數(shù)據(jù)庫中漾岳,并提供高效的索引來讀取轰绵、查詢這些數(shù)據(jù)。并支持通過指定空間條件(距離和范圍)來快速查詢尼荆。另外GeoMesa還基于Apache Kafka提供了時(shí)空數(shù)據(jù)的近實(shí)時(shí)流處理功能左腔。
通過和GIS Server(GeoServer)的整合, GeoMesa 提供了通過標(biāo)準(zhǔn)OGC接口(WMS/WFS)訪問數(shù)據(jù)的能力,通過這些接口捅儒,用戶可以方便對(duì)GeoMesa處理的數(shù)據(jù)進(jìn)行展示和分析液样,比如查詢、直方圖巧还、時(shí)間序列分析等鞭莽。
為什么選擇GeoMesa
能夠存儲(chǔ)和處理海量時(shí)空數(shù)據(jù)
支持實(shí)時(shí)性強(qiáng)、需要快速讀寫的數(shù)據(jù)
支持spark分析
支持水平擴(kuò)展
通過GeoServer提供地圖服務(wù)麸祷,并支持Common Query Language (CQL)
項(xiàng)目地址
http://www.geomesa.org/
授權(quán)
GeoMesa使用Apache License Version 2.0協(xié)議撮抓。
http://apache.org/licenses/LICENSE-2.0.html
6 圖數(shù)據(jù)庫JanusGraph
Titan在停止更新了很長一段時(shí)間后,fork出了JanusGraph繼續(xù)開源發(fā)展摇锋。JanusGraph是一個(gè)圖形數(shù)據(jù)庫引擎。JanusGraph本身專注于緊湊的圖形序列化站超、豐富的圖形數(shù)據(jù)建模和高效的查詢執(zhí)行荸恕。此外,JanusGraph利用Hadoop進(jìn)行圖形分析和批處理圖處理死相。JanusGraph實(shí)現(xiàn)了健壯的模塊化接口融求,用于數(shù)據(jù)持久性、數(shù)據(jù)索引和客戶端訪問算撮。JanusGraph的模塊化體系結(jié)構(gòu)允許它與廣泛的存儲(chǔ)生宛、索引和客戶端技術(shù)進(jìn)行互操作;它還簡化了擴(kuò)展JanusGraph以支持新用戶的過程县昂。
在JanusGraph和磁盤之間,有一個(gè)或多個(gè)存儲(chǔ)和索引適配器陷舅。JanusGraph以以下適配器為標(biāo)準(zhǔn)倒彰,但是JanusGraph的模塊化體系結(jié)構(gòu)支持第三方適配器
JanusGraph 體系結(jié)構(gòu)
1、JanusGraph的應(yīng)用分為批處理(OLAP)和流式計(jì)算(OLTP)
2莱睁、批處理(OLAP)待讳,常用在大數(shù)據(jù)平臺(tái)使用Spark、Giraph仰剿、Hadoop工具使用
3创淡、流式計(jì)算(OLTP),使用TinkerPop中的Traversal(遍歷)工具使用
4南吮、數(shù)據(jù)可以存儲(chǔ)到Cassandra琳彩、Hbase、BerkeleyDB中
5部凑、外部查詢索引存儲(chǔ)到ElasticSearch露乏、Solr、Lucene中
寫在最后:本文主要簡單總結(jié)下Hbase周邊配合生態(tài)砚尽,提供SQL接口施无,多維查詢能力,以及用于車聯(lián)網(wǎng)必孤,時(shí)序猾骡,地理數(shù)據(jù)處理等。
轉(zhuǎn)自《大數(shù)據(jù)和云計(jì)算技術(shù)》