大數據前幾年各種概念爭論很多,NoSQL/NewSQL,CAP/BASE概念一堆堆的,現在這股熱潮被AI接過去了。大數據真正落地到車聯網,分控,各種數據分析等等具體場景。
概念很高大上,搞得久了就會發現,大部分都還是數據倉庫的衍伸,所以我們稱呼這個為“新數倉”。
數據庫存儲模型簡述
HBASE+Solr實現詳單查詢
本文簡單梳理下其中一個應用比較廣的HBASE的生態,可能不全。具體HBASE的基本原理掃描大家可以自行百度下,另外,要系統掌握HBASE,推薦看下《HBASE權威指南》。
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是一種認證機制,通過密鑰系統為客戶端/服務器應用程序提供強大的認證服務。
Kerberos存在的意義
在Hadoop1.0.0或者CDH3 版本之前,并不存在安全認證一說。默認集群內所有的節點都是可靠的,值得信賴的。用戶與HDFS或者M/R進行交互時并不需要進行驗證。導致存在惡意用戶偽裝成真正的用戶或者服務器入侵到hadoop集群上,惡意的提交作業,修改JobTracker狀態,篡改HDFS上的數據,偽裝成NameNode 或者TaskTracker接受任務等。盡管在版本0.16以后, HDFS增加了文件和目錄的權限,但是并沒有強認證的保障,這些權限只能對偶然的數據丟失起保護作用。惡意的用戶可以輕易的偽裝成其他用戶來篡改權限,致使權限設置形同虛設,不能夠對Hadoop集群起到安全保障。
在Hadoop1.0.0或者CDH3版本后,加入了Kerberos認證機制。使得集群中的節點就是它們所宣稱的,是信賴的。Kerberos可以將認證的密鑰在集群部署時事先放到可靠的節點上。集群運行時,集群內的節點使用密鑰得到認證。只有被認證過節點才能正常使用。企圖冒充的節點由于沒有事先得到的密鑰信息,無法與集群內部的節點通信。防止了惡意的使用或篡改Hadoop集群的問題,確保了Hadoop集群的可靠安全。
Kerberos的工作原理
·Client向KDC發送自己的身份信息,完成認證,獲取TGT(ticket-granting ticket)
·Client利用之前獲得的TGT向KDC請求其他Service的Ticket,從而通過其他Service的身份鑒別
① Client將之前獲得的TGT和要請求的服務信息發送給KDC
② KDC生成用于訪問該服務的Session Ticket發給Client。 Session Ticket使用KDC與Service之間的密鑰加密
③ Client將剛才收到的Ticket轉發到Service。由于Client不知道KDC與Service之間的密鑰,所以它無法篡改Ticket中的信息
④ Service 收到Ticket后利用它與KDC之間的密鑰將Ticket中的信息解密出來,驗證Client的身份。
2 Phoenix
Phoenix最早是saleforce的一個開源項目,后來成為Apache基金的頂級項目。
Phoenix是構建在HBase上的一個SQL層,能讓我們用標準的JDBC APIs而不是HBase客戶端APIs來創建表,插入數據和對HBase數據進行查詢。
put the SQL back in NoSQL
Phoenix完全使用Java編寫,作為HBase內嵌的JDBC驅動。Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase掃描,并編排執行以生成標準的JDBC結果集。直接使用HBase API、協同處理器與自定義過濾器,對于簡單查詢來說,其性能量級是毫秒,對于百萬級別的行數來說,其性能量級是秒。
HBase的查詢工具有很多,如:Hive、Tez、Impala、Spark SQL、Phoenix等。
Phoenix通過以下方式使我們可以少寫代碼,并且性能比我們自己寫代碼更好:
·將SQL編譯成原生的HBase scans。
·確定scan關鍵字的最佳開始和結束
·讓scan并行執行
·...
3 多維查詢kylin
Apache Kylin?是一個開源的分布式分析引擎,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發并貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。
Kylin相當于給HBASE提供了一個多為查詢的SQL能力。
4 時序列數據庫OpenTSDB
OpenTSDB ,可以認為是一個時系列數據(庫),它基于HBase存儲數據,充分發揮了HBase的分布式列存儲特性,支持數百萬每秒的讀寫,它的特點就是容易擴展,靈活的tag機制。
其最主要的部件就是TSD了,這是接收數據并存儲到HBase處理的核心所在。而帶有C(collector)標志的Server,則是數據采集源,將數據發給 TSD服務。
5 地理數據處理套件GeoMesa
GeoMesa 是由locationtech開源的一套地理大數據處理工具套件。其可在分布式計算系統上進行大規模的地理空間查詢和分析。使用GeoMesa開源幫助用戶管理、使用來自于物聯網、社交媒體、手機應用的海量的時空(spatio-temporal)數據。
GeoMesa支持將海量的時空數據存儲到Accumulo,HBase,Google Bigtable和Cassandra數據庫中,并提供高效的索引來讀取、查詢這些數據。并支持通過指定空間條件(距離和范圍)來快速查詢。另外GeoMesa還基于Apache Kafka提供了時空數據的近實時流處理功能。
通過和GIS Server(GeoServer)的整合, GeoMesa 提供了通過標準OGC接口(WMS/WFS)訪問數據的能力,通過這些接口,用戶可以方便對GeoMesa處理的數據進行展示和分析,比如查詢、直方圖、時間序列分析等。
為什么選擇GeoMesa
能夠存儲和處理海量時空數據
支持實時性強、需要快速讀寫的數據
支持spark分析
支持水平擴展
通過GeoServer提供地圖服務,并支持Common Query Language (CQL)
項目地址
http://www.geomesa.org/
授權
GeoMesa使用Apache License Version 2.0協議。
http://apache.org/licenses/LICENSE-2.0.html
6 圖數據庫JanusGraph
Titan在停止更新了很長一段時間后,fork出了JanusGraph繼續開源發展。JanusGraph是一個圖形數據庫引擎。JanusGraph本身專注于緊湊的圖形序列化、豐富的圖形數據建模和高效的查詢執行。此外,JanusGraph利用Hadoop進行圖形分析和批處理圖處理。JanusGraph實現了健壯的模塊化接口,用于數據持久性、數據索引和客戶端訪問。JanusGraph的模塊化體系結構允許它與廣泛的存儲、索引和客戶端技術進行互操作;它還簡化了擴展JanusGraph以支持新用戶的過程。
在JanusGraph和磁盤之間,有一個或多個存儲和索引適配器。JanusGraph以以下適配器為標準,但是JanusGraph的模塊化體系結構支持第三方適配器
JanusGraph 體系結構
1、JanusGraph的應用分為批處理(OLAP)和流式計算(OLTP)
2、批處理(OLAP),常用在大數據平臺使用Spark、Giraph、Hadoop工具使用
3、流式計算(OLTP),使用TinkerPop中的Traversal(遍歷)工具使用
4、數據可以存儲到Cassandra、Hbase、BerkeleyDB中
5、外部查詢索引存儲到ElasticSearch、Solr、Lucene中
寫在最后:本文主要簡單總結下Hbase周邊配合生態,提供SQL接口,多維查詢能力,以及用于車聯網,時序,地理數據處理等。
轉自《大數據和云計算技術》