91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現基于Impala平臺打造交互查詢系統

發布時間:2022-01-14 14:22:30 來源:億速云 閱讀:132 作者:小新 欄目:大數據

這篇文章主要介紹如何實現基于Impala平臺打造交互查詢系統,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

如何實現基于Impala平臺打造交互查詢系統

交互查詢特點第一個就是數據量龐大,第二個關系模式相對比較復雜,依據你的設計不同,關系模式有很多種類。還有一個就是響應時間要求較高,對于對于絕大數要求查詢返回時間在10秒以下;依據數據量的不同選擇不同的存儲,對于百萬級數據采用MySQL,PostgreSQL,對于百萬-百億級別,傳統數據庫無法滿足,采用分析性數據倉庫實現Impala,Presto, Green Plum, Apache Drill;百億級別以上很難做大數據分析,采用離線數據倉庫,采用hive,spark。

如何實現基于Impala平臺打造交互查詢系統

對于BE系統很多實用寬表做,因為其維度很多,一個用戶經過慢慢信息積累可能會有幾百個維度,假如對一個50個維度進行過濾,利用寬表結合一些特殊數據結構如倒排就會很容易實現。Elastic Search, Solr是搜索引擎,Click House是俄羅斯開發的一個性能比較好的系統,但是join支持有限, Druid在廣告平臺用的比較多。還有一種是組合模型,如Elastic Search, Solr用的比較多,典型的有Green Plum,Presto,Impala。

如何實現基于Impala平臺打造交互查詢系統

接下來講一下有哪些因素決定我們選擇一個平臺,首先是本身項目熟悉度,如果項目負責人對這個平臺熟悉就會選擇這個平臺。如果對項目不熟悉,就會選擇大廠背書,用大公司一樣的應用。如果前兩者都沒有,那么就從性能和優缺點上來評價是否適應這個系統。

如何實現基于Impala平臺打造交互查詢系統

重點講解第三點,首先是數據量,依據系統數據量容量,平臺至少要達到我的最低性能指標。還有一個就是架構復雜度,一個系統最終要上線,要保證CLA,如果架構復雜,出問題就多;因此選擇架構相對簡單一點的。最后一個就是運維和開銷,運維的成本很高,因此不可能去經常做改動;如果要改一個東西你需要熟悉一下這個平臺,那么就會影響你的選型了。

如何實現基于Impala平臺打造交互查詢系統

接下來講一下我們選型是如何做的,主要是考慮Impala、Presto、Greenplum。首先考慮的是數據源,我們的數據很多都是在HDFS上,所以Greenplum肯定是不適合,因為它整個是封閉的,是自己做的存儲架構。社區環境、架構這三者都差不多,從架構上來說差異不大。性能方面Impala比Presto稍微好點。還有其他特性,如編程語言,C++運行比Java要快一點,因此更趨于選擇C++寫的平臺。最后選擇了Impala。

如何實現基于Impala平臺打造交互查詢系統

這三個都是MPP架構,Impala整個執行節點都是無狀態的,因此down掉一個節點,再啟動沒有問題。Impala兼容hive存儲,還有一些點如Apache頂級項目、成熟社區、多種數據源格式兼容、高效的查詢性能都是我們考慮特有的選型因素。

如何實現基于Impala平臺打造交互查詢系統

接下來講一下Impala架構,其兼容多種數據源就是metastore直接對接各種DB,利用catalogd提供元數據服務。可以直接連DB也可以通過catalogd,一般是利用hive里的metastore獲取數據。Impala高效的原因是其將原始數據緩存下來,catalogd啟動會瀏覽緩存獲取數據。它有一個statestored服務,是一個發布訂閱服務,所有狀態以及輪轉都是在statestored服務中進行。左邊是impala的執行節點,所有查詢都是發完這些節點,節點執行后會下發到所有相關節點上去,整個impala是無狀態的,所有的連接者都像是一個協調者。

如何實現基于Impala平臺打造交互查詢系統

Catalogd是元數據服務,其主要的問題是你做select時,impala也會緩存一部分數據,它不會進入catalogd服務,但是做DDL操作會應用catalogd服務。Statestored(sub/pub  )有很多topic,所有的impala節點去訂閱這些topic上的相關消息,Statestored實際是在很多topic上做了一個消息訂閱。Impala節點有SQL解析、執行計劃生成,還有是數據查詢、聚合、結果返回。

如何實現基于Impala平臺打造交互查詢系統

上圖是一個查詢進來,各個節點是一個怎么樣的協調方式。如一個查詢進入這個節點,這個節點就是Query Planner,負責生成執行計劃,將計劃向周邊節點傳輸,最后將結果返回Query Planner,如果有聚合,先聚合然后返回總的Query Planner上,然后進行相關聚合將結果返回。

Impala性能優勢有元數據緩存,而且impala會緩存HDFS上相應表數據在blog里的信息,因此查詢時會有一個本地讀,判斷元數據是否在本地,通過本地轉讀方式,log才能連接數據。第二點并行計算,Query Planner生成執行計劃將其發往周邊節點,然后匯聚。第三個利用codegen技術,有些依據執行環境生成執行代碼,會對性能提升很大。再一個就是很多算子下推,如果追求高性能不許實現算子下推,將存儲層與計算層交互變得更小,在底層過濾而不是在計算層,這樣對平臺整體性能提升較大。

如何實現基于Impala平臺打造交互查詢系統

broadcast join在大表關聯時,將小表緩存到所有節點上,然后返回數據做聚合。partition join應對兩張表都是大數據表,如一個事件表積累上百億數據,而用戶有五億,那么就不能通過broadcast join綁定到所有節點上,因此在每個節點做一些分區join操作然后在到上面去。還有一個CBO,目前來說還不是很準,有時會偏差很大。有并行計算就有并行聚合,數據生成前提前聚合,依據group by 的column 進行聚合的合并操作。

如何實現基于Impala平臺打造交互查詢系統

接下來介紹下impala支持哪些存儲引擎,常用的有hdfs,還有kudu,為了解決HDFS和HBASE進行交互而產生的一個產品。Hbase主要是一個kb查詢,但是如果有大量掃描時性能很差,而大批量掃描是HDFS的強項,但是做不了kb查詢。Alluxio是一個文件記錄換緩存,底層也可以對接HDFS,支持多級緩存。我們做Alluxio主要是應對熱力數據,以前使用緩存解決這個問題。

如果要使用impala平臺如何實現對接呢,首先它有整個授權和認證機制。認證可以對接kerberos、LDAP、Audit log,只有身份認證了才能訪問系統。授權通過Apache Sentry,粒度有:database、table、column,權限:select、insert、all配置開啟(authorization_policy_provider_class=org.apache.sentry.provider.file.Local G roup R esource A uthorization P rovider)。這些是你如果要上線必須要做的一些事情。

如何實現基于Impala平臺打造交互查詢系統

對于一個平臺有很多用戶在上面做一些任務,需要進行資源管理。目前采用Admission Control機制,他能保證每一個impala節點上都有直接用戶配置,每一個隊列可以設置資源總量,也可以設置每一個SQL的資源大小。這個配置是針對impala節點,如給一個用戶設置300G,有100個節點,那么每個節點只分配2-3G,超過這個限額也是要被禁止的。資源隔離既要考慮總的也要考慮單獨的,Impala節點是通過statestored的impalad-statistics topic項同步信息,由于statestored通過心跳與impalad 保持通信,這個資源信息實際上有些延遲;目前配置中,只有內存項有實際效果,vcore沒有實現隔離,隊列名配置如果與認證用戶名相同,該用戶提交的SQL自動分配到該隊列。

如何實現基于Impala平臺打造交互查詢系統

Impala有個web端,雖然簡單但很有用,整個問題解決、定位經常用到。每一個組件都會提供一個web端,分配相應的端口,基本信息有集群節點、Catalog信息、內存信息、Query信息。Web端能使此案節點內存消耗查看(每個對壘內存消耗、每個查詢在該點內存消耗),該節點查詢分析(查詢分析、SQL診斷、異常查詢終止),還有就是Metrics信息查看。上圖是我們配的一些隊列,每一個隊列消耗資源情況等。用impala做join分析,將每個SQL中執行計劃都具體化了,界面上的標簽如query、summary、memory等都可以做SQL分析。

如何實現基于Impala平臺打造交互查詢系統

講了impala的優點、特點、如何用,但是基于開源平臺,也是有很多缺陷。第一個Catalogd&statestored服務單點,但是好在對查詢不受影響,如果Catalogd掛掉,元數據更新就不會同步到整個impala節點。Statestored掛掉,對于更新也不會同步,只會保掛掉之前的信息。第二個就是web信息不持久,顯示的信息都是存在歷史信息中,如果impala重啟后信息就會沒有了。資源隔離不精準,還有就是底層存儲不能區分用戶,還有就是負載均衡,每一個impala都可以對接SQL,但是有100個impala如何接入不好解決,因此對impala實現haproxy。還有與hive元數據同步需要手動操作,impala是緩存元數據,通過HDFS操作是不會感知這種操作的。

如何實現基于Impala平臺打造交互查詢系統

有缺陷就有改進,首先基于ZK的load balance,因為impala是和hive綁在一起,hive的server是基于ZK,將你需要訪問的impala的uri寫入一個維度中去,hive原生就是基于ZK的多維節點訪問。第二個就是管理服務器,因為impala頁面的信息不會保存,利用管理服務器保存這些東西,排查時在管理服務器上查,不會因為你impala節點多而信息不保存。細粒度權限&代理,通過impala訪問HDFS實現底層權限控制。Json格式,這個就是偏應用需求。兼容ranger權限管理,因為我們整個項目權限管理是基于ranger的。批量元數據刷新,也是實際應用中出現的問題,有時會一次改好幾十個表,如果每次都刷新會很麻煩。元數據同步,改造hive和impala,每次hive改變,將改變寫入中間層,impala去獲取中間層實現同步。元數據過濾,數據量很龐大時,其實交互式查詢很大一部分表是用不到的,而impala只對某一部分有需求,因此通過正則表達式過濾掉不必要的數據。對接ElasticSearch查詢,將ES涉及的算子下推過去,如多維過濾查詢,根據倒排屬性比hash將數據聚合要快。

如何實現基于Impala平臺打造交互查詢系統

Impala應用場景介紹,上圖是一個部門大數據平臺架構,從kafka數據到HDFS,結構化到半結構化這是數據的接入。經過數據清洗,再接入到上層,上層應用了ES存儲,最上面就直接用impala來進行查詢,這基本就是分析系統的框架。

如何實現基于Impala平臺打造交互查詢系統

如何實現基于Impala平臺打造交互查詢系統

上面是我們的一個BI產品,叫有數。底層也對接了impala平臺,這是一個數據分析報表平臺,將圖表與地圖上的數據進行對接。將結構化數據或非結構化數據直接寫入hive,然后通過impala去感知,實現元數據同步,用戶直接通過impala去查詢。需要考慮問題有元數據同步問題,ETL寫入數據impala無感知,依賴元數據同步;數據實時性問題,避免大量小文件導致NN不穩定,每次寫文件的batch不能太小。還有一個方案是利用kudu解決小文件問題,將實時數據往kudu里寫,將kudu和hdfs實現聯查,在impala上既能看到kudu的表也能看到hdfs的表。

以上是“如何實現基于Impala平臺打造交互查詢系統”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湄潭县| 桦南县| 上栗县| 延庆县| 商城县| 闽清县| 临夏市| 灵山县| 土默特左旗| 繁峙县| 神木县| 泌阳县| 五家渠市| 郓城县| 建平县| 峨边| 湛江市| 鄯善县| 林西县| 崇明县| 宁津县| 宁化县| 恩施市| 阳谷县| 和龙市| 甘南县| 多伦县| 沧源| 西盟| 忻城县| 长汀县| 武清区| 吉隆县| 永修县| 改则县| 淮安市| 五指山市| 平湖市| 油尖旺区| 彭山县| 建昌县|