天天看點

使用DLA SQL(相容Presto) CU版分析HDFS資料背景介紹操作步驟使用DLA SQL分析HDFS資料的優勢

背景介紹

阿裡雲資料湖分析(DLA)産品提供一站式的資料湖分析與計算服務,支援 ETL、機器學習、流、互動式分析,可以與OSS、資料庫等多種資料源搭配使用,幫助使用者建構統一、安全、高效、開放的資料湖解決方案。DLA SQL引擎基于Presto實作,可以實作高效的線上分析,主要面向使用者探索式分析、報表以及輕量ETL的場景,支援OSS、RDS、AnalyticsDB、MaxCompute、TableStore、ElasticSearch等多種資料源。

針對雲上OSS存儲價格低廉、容量可以無限擴充的優點,我們圍繞OSS上的資料做了很多優化和實用的功能,使用者可将線上資料和實時增量資料同步到OSS中,然後對資料做深度的計算和分析;還可以使用中繼資料爬取的功能,自動為OSS上面的資料檔案建立及更新資料湖中繼資料,友善分析和計算。

我們也注意到,有不少使用者的資料是存放在HDFS上面的。作為最流行的開源分布式檔案系統,HDFS具有高度容錯性、高吞吐量、高可靠、可水準擴充等優點,适用于海量資料的存儲,一直是許多分布式系統的底座,擁有完整的生态支援。然而,受限于DLA SQL的網絡架構,在過去我們一直沒有提供HDFS的支援。最近,DLA SQL釋出了CU版,支援通路使用者自建的HDFS,使得挖掘HDFS上面資料的價值成為可能。

操作步驟

我們以一個csv檔案的簡單查詢為例。

1. 準備資料檔案。

可以在本地建立一個新的文本檔案example.txt,在其中粘貼如下内容:

7,8,9           

然後執行如下指令将檔案上傳到HDFS(需要把172.16.199.0:9000替換成你的HDFS叢集的host,下同):

hadoop fs -mkdir -p hdfs://172.16.199.0:9000/test/p/d=1
hadoop fs -copyFromLocal example.txt hdfs://172.16.199.0:9000/test/p/d=1/example.txt           

2.

開通DLA SQL CU版

3.

綁定資料源網絡

。注意這裡綁定的資料源網絡和HDFS要在同一個vpc下面,確定網絡可以聯通。

4. 連接配接DLA,建立庫:

CREATE DATABASE `my_hdfs_db`
WITH DBPROPERTIES (
  catalog = 'hive',
  location = 'hdfs://172.16.199.0:9000/test/'
)           

這裡location指定為庫所在的目錄。需要注意的是由于中繼資料系統和使用者網絡不能連通,DLA在建庫/表時不會對目錄做任何檢查,是以需要使用者自己保證這裡指定的是一個可以從HDFS叢集外部通路的正确路徑。

關于建庫語句的更多說明參見DLA SQL文法說明:

https://help.aliyun.com/document_detail/72005.html?spm=a2c4g.11174283.6.587.4e37b1bfbH0xzX

5. 建表:

CREATE EXTERNAL TABLE p (
  `a` int,
  `b` int,
  `c` int
) partitioned by (d int)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
STORED AS `TEXTFILE`
LOCATION 'hdfs://172.16.199.0:9000/test/p/';           

關于建表語句的更多描述參見DLA SQL文法說明:

https://help.aliyun.com/document_detail/72006.html?spm=a2c4g.11186623.6.588.6388464dB88boC

。 注意HDFS表不支援auto.create.location屬性。

6. 查詢資料:

mysql> /*+ pool-selector=vc-test */ msck repair table p;
+-----------+-----------+
| Partition | Operation |
+-----------+-----------+
| d=1       | CREATED   |
+-----------+-----------+
1 row in set (16.47 sec)

mysql> /*+ pool-selector=vc-test */ select * from  p;
+------+------+------+------+
| a    | b    | c    | d    |
+------+------+------+------+
|    7 |    8 |    9 |    1 |
+------+------+------+------+
1 row in set (4.74 sec)           

更多資訊可參考DLA幫助文檔。

使用DLA SQL分析HDFS資料的優勢

對比通過自建Presto/Hive來分析HDFS上的資料,使用DLA SQL具有如下優勢:

  • MySQL生态支援
  • 高可用
  • 開箱即用

MySQL生态的支援

使用自建的Presto/Hive,在選擇外圍用戶端軟體/BI軟體/排程軟體時,要考慮這些軟體對Presto/Hive的支援,可選擇的範圍通常會有很大的限制。而DLA SQL相容MySQL協定,可以使用MySQL生态龐大的周邊軟體設施,友善了使用者,降低使用者在這些周邊軟體上的投入。

使用DLA SQL(相容Presto) CU版分析HDFS資料背景介紹操作步驟使用DLA SQL分析HDFS資料的優勢

在開源的Presto架構中Presto Coordinator是個單點,如果因為CPU/記憶體或者底層實體機的原因導緻Coordinator不可用,會導緻整個叢集不可用,進而影響使用者的使用,DLA SQL内置了多Coordinator HA,當一個Coordinator當機,另外一個Coordinator會自動接管,保證整個叢集的可用性:

使用DLA SQL(相容Presto) CU版分析HDFS資料背景介紹操作步驟使用DLA SQL分析HDFS資料的優勢

DLA SQL通過在頁面點選開通即可使用,CU版叢集可以在一兩分鐘内建立好。然後進行資料查詢,直接在DLA控制台就可以查詢,或者任何支援MySQL協定的用戶端都可以查詢;最後因為DLA SQL支援了MySQL協定,雲上有現成的BI服務: QuickBI,有現成的排程服務阿裡雲DMS, 阿裡雲DataWorks等等,是以BI報表展示以及任務的定時排程均可以在5分鐘内完成;整個過程可以在30分鐘内完成,真正做到開箱即用。

關于DLA SQL的更多介紹參見

https://developer.aliyun.com/article/770819