機器數據的探索性分析 - SQL引擎與BI的銜接
06-04
機器數據的探索性分析 - SQL引擎與BI的銜接
筆者是機械專業出身,無CS專業背景,近幾年一直從事「工業大數據分析」,走上了一條試圖 bridge the gap between 數據科學 and 工業問題 的道路。
這篇文章小結一下:當前遇到的一個問題、我在這個問題上的摸索、困惑。
問題背景:
- 我們要分析的是工業大機器產生的運行數據,來自於機器上的數百個感測器,數據特點是:時間序列、維度高(數百測點)、行數多(採集率1Hz,常年持續採集,數百台機器);
- 大多數測點數據是數值型(float),是感測器測得的物理量的實時值;少數測點是有限類別型(存儲為int),記錄的是機器的各種狀態量(啟動中、運行中、停機、故障、……);
- 工程師們希望能夠即席地查閱歷史數據,對任意多個測點開展可視化探索分析,如繪製某台(或幾台、幾十台)機器的若干測點的時序圖(原始1秒粒度,或聚合為1min/1hour/1day/1month的平均值/最大值/最小值/絕對值/標準差/有效值)、組合X-Y plot、直方圖、箱線圖等;
- 需要類SQL功能,以支撐簡單的filter和aggregation;這裡說的filter需求,是不固定的、無法預定義的,要對任一感測器測點數據做filter,比如篩選某轉速區間、某溫度範圍、某功率區間內的X/Y/Z測點的數據;比如掃描某種工況(如某測點值持續N秒超過某值)在某段時間內的出現次數;掃描某種工況出現的時間點,時間軸定位後再取出相關其它測點的數據做分析。
曾用工具:
數據存儲:
- csv、tsv等文本文件;
- MySQL等RDBMS,直接寬表存儲,第一列為時間戳,後續每一列存一個測點;
- Hive,rcfile格式存儲,啟用壓縮。
可視化分析:
- Excel;
- Matlab,各種plot;R,ggplot;
- Tableau,拖拽式可視化,蠻爽。
目前情況:
- Tableau,通過SparkSQL(ThriftServer)聯接到Hive表。
- 這個方案,相對之前用Tableau + csv或Tableau + MySQL,效率已經有極大提升,能吞吐的數據量也大了很多。
- 想探討的是:應對這種場景,還有怎樣的提升方案?
- 加集群節點;
- 換MPP類型的SQL引擎,如Impala?遷移成本如何?
- 換(據說)更強的HAWQ?遷移成本如何?
- Hive表格細節配置優化?
部分結論:
Tableau提供了一份白皮書《Tableau與Hadoop協作的5種最佳實踐》,中文版,英文版;第一條就是使用更快的查詢引擎,即本文在探討的內容;其它四條是:策略性地利用實時連接和提取、從數據湖組織數據、優化提取、自定義連接性能。
就「MPP(massive parallel processing)架構」搜索了一圈,收集到如下信息——
相關資料:
- 本文對常見「SQL引擎」做了對比;
- 上文還提到「AtScale銷售銜接BI前端和SQL後端的軟體」。
- 需要注意的是,各種「SQL引擎」都還在不停地改版升級,其性能表現也在不斷提升。
- Cloudera的此文推介了Impala在BI和SQL分析場景中的優勢。提出應「按場景選擇SQL引擎」——Hive/MR/Spark適用於批處理、Impala適用於BI和SQL分析、SparkSQL適用於Procedural Development(怎麼翻譯?)
- EMC在發布Pivotal Hadoop時(2013年),對比了HAWQ和Impala,顯示HAWQ有一個數量級的性能優勢。
- 文章apache hawq: next step in massively parallel processing 對比了MPP計算框架和批處理計算(MR/Spark)框架(翻譯版),指出「兩類系統的優勢和劣勢——MPP更快,但是『stragglers』問題和並發問題難以解決;批處理系統則需要在磁碟存儲中間結果,但是集群並發性能可以隨著集群整體規模比例增加。」而Apache HAWQ把二者的優勢結合了起來。
關於HAWQ的歷史:
- What is HAWQ? HAWQ is a Hadoop native SQL query engine that combines the key technological advantages of MPP database with the scalability and convenience of Hadoop. HAWQ reads data from and writes data to HDFS natively.
- HAWQ is "HAdoop With Query" and is basically a port of Greenplum to store data natively in HDFS.
- HAWQ is a port of Greenplum database to work with the HDFS file system from Hadoop. It is only available with the Pivotal HD distribution of Hadoop even though Pivotal HD is 100% Apache Hadoop compliant. HAWQ只在Pivotal的Hadoop發行版中才有?應該是後來貢獻給了Apache。
- Greenplum - Wikipedia: Greenplum was a big data analytics company headquartered in San Mateo, California. Greenplum was acquired by EMC Corporation in July 2010. Starting in 2012 its database management system software became known as the Pivotal Greenplum Database sold through Pivotal Software.
因為有此淵源,所以——
- Tableau可以通過「Pivotal Greenplum Database」數據源連接到HAWQ。
- 關於Tableau與Pivotal Greenplum的聯接設置。
末尾再拋一個問題出來——
在這樣的(機器數據、感測器數據)場景下,各種TSDB(時間序列資料庫)是否有更驚艷的表現呢?
據我所知,TSDB應該在「時間尺度上的各種聚合計算」有著一定優勢,如果與BI軟體建立起良好的直連通道(其實很多也有自帶的可視化組件),應該能解決一部分需求;但是對類SQL的filter需求的支撐,可能是有問題的,起碼OpenTSDB不太行。另外一個想要探討的——
怎麼理解Tableau的「Hyper數據引擎」?與本文探討的「SQL引擎」是可比的嗎?
推薦閱讀:
※索引列只要參與了計算, 查詢就會不走索引, 為什麼 MySQL 不對這種情況進行優化?
※SQL筆記
※SQL 查詢按照家庭住址進行分組時,組內平均年齡小於50歲的組中成員的姓名和年齡?
※利用SQL進行用戶消費行為分析