1. 程式人生 > >新數倉系列:Hbase周邊生態梳理(1)

新數倉系列:Hbase周邊生態梳理(1)

大資料前幾年各種概念爭論很多,NoSQL/NewSQL,CAP/BASE概念一堆堆的,現在這股熱潮被AI接過去了。大資料真正落地到車聯網,分控,各種資料分析等等具體場景。

概念很高大上,搞得久了就會發現,大部分都還是資料倉庫的衍伸,所以我們稱呼這個為“新數倉”,我準備寫一系列相關的文章,有沒有同學願意一起來的?請聯絡我。前面有一些相關文章,大家可以看看:

本文簡單梳理下其中一個應用比較廣的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的工作原理0?wx_fmt=png

·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的身份。
0?wx_fmt=png

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能力。

0?wx_fmt=png

4

時序列資料庫OpenTSDB

OpenTSDB ,可以認為是一個時系列資料(庫),它基於HBase儲存資料,充分發揮了HBase的分散式列儲存特性,支援數百萬每秒的讀寫,它的特點就是容易擴充套件,靈活的tag機制。

0?wx_fmt=png

其最主要的部件就是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中 

0?wx_fmt=png

寫在最後:本文主要簡單總結下Hbase周邊配合生態,提供SQL介面,多維查詢能力,以及用於車聯網,時序,地理資料處理等。後面持續寫寫新數倉相關文章,以饗讀者。

猜你喜歡

加入技術討論群

為了方便大家相互交流學習,建立了一個公眾號同名微信群:《大資料和雲端計算技術交流群》,人數已經1500+,歡迎大家加下面微信,拉大家進群,自由交流。

0?wx_fmt=png

大家可以通過下面二維碼支援技術社群:

0?wx_fmt=png