MaxCompute(原ODPS)開發入門指南——數據上雲篇
MaxCompute(原ODPS)開發入門指南——數據上雲篇
寫在最前麵
>>>進入了解更多>>>阿裏雲數加·MaxCompute大數據計算服務.
根據《MaxCompute(原ODPS)開發入門指南——計量計費篇》的了解,大家清楚了MaxCompute可以做什麼,計費模式如何,想必大家也開通了MaxCompute想進行一次POC,但是大家遇到第一個問題一定是我的數據如何上雲?
可通過多種方式數據流入MaxCompute
MaxCompute(原ODPS)提供了多種通道數據可以流入MaxCompute,包括MaxCompute原生的Tunnel,以及阿裏雲體係內的Log、DataX和數據集成,以及開源生態中的Flume、Logstash和Fluentd。以下為大家一一道來,大家視各自情況進行選擇。
① MaxCompute Tunnel命令
直接在MaxCompute客戶端中使用Tunnel命令進行數據上傳,數據在傳輸過程中都是加密傳輸的,適用於一次性批量數據導入。
注意的是每一次上傳隻支持數據上傳到一個表或表的一個分區,有分區的表一定要指定上傳的分區。
數據上傳命令如下:
tunnel upload log.txt test_project.test_table/p1="b1",p2="b2";
如何配置客戶端和使用命令:
② MaxCompute Tunnel SDK
通過 TUNNEL 提供的 SDK 自行編寫 Java 工具。
關於如何利用 tunnel SDK 進行上傳數據,下麵也將通過場景介紹。場景描述:上傳數據到 MaxCompute,其中,項目空間為”odps_public_dev”,表名為”tunnel_sample_test”,分區為”pt=20150801,dt=hangzhou”。
③ LOG(阿裏雲日誌分析產品)
日誌服務(Log Service,簡稱 Log)是針對日誌類數據的一站式服務,在阿裏巴巴集團經曆大量大數據場景錘煉而成。您無需開發就能快捷完成日誌數據采集(Logtail)、消費、投遞(LogShipper)以及查詢分析(LogSearch)等功能,提升運維、運營效率,建立 DT 時代海量日誌處理能力。
通常情況下,在使用開源的產品時都需要自己寫正則來進行日誌采集和結構化,通過Log產品可以進行可視化取詞來選擇自己需要解析的字段值,同時也提供手工方式輸入正則表達式,如下圖:
在大家場景中,嚐嚐需要將日誌進行實時采集,然後歸檔到MaxCompute進行數據分析與挖掘,Log產品覆蓋了: Nginx, Apache, Log4J ,Wordpress , Python, NodeJS, 分隔符 (Delimiter, 如 CSV、TSV 等格式)、logstash , ThinkPHP, IIS(Windows 平台,默認格式)/logstash等。>>>常見日誌格式
大部分情況下日誌數據在寫入LogStore後的0.5~1個小時導入到MaxCompute,具體歸檔的幫助文檔詳見:>>>Log數據歸檔到MaxCompute
④ DTS-數據傳輸
數據傳輸(Data Transmission)服務DTS是阿裏雲提供的一種支持RDBMS(關係型數據庫)、NoSQL、OLAP等多種數據源之間數據交互的數據服務。它提供了數據遷移、實時數據訂閱及數據實時同步等多種數據傳輸能力。
- 創建RDS for Mysql數據實時同步到MaxCompute,實現原理如下:
如上圖所示,整個同步過程分為兩步:
- 全量初始化, 這個步驟將RDS MySQL中已經存在的全量數據初始化到MaxCompute中。對於同步的每個表,全量初始化的數據都會獨立存儲在MaxCompute中的全量基線表中,這個表的默認格式為:源表名_base。例如表 t1,那麼全量基線表在MaxCompute中存儲的表名為:t1_dts_base。這個存儲表名前綴可以根據需要變更,您可以在配置任務時,修改表在MaxCompute存儲的名稱。
- 增量數據同步,這個步驟將RDS MySQL產生的增量數據數據實時同步到MaxCompute中。並存儲在增量日誌表中,每個同步表對應一個增量日誌表。增量日誌表在MaxCompute中存儲的表名的默認格式為:源表名_log。這個存儲表名前綴可以根據需要變更,您可以在配置任務時,修改表在MaxCompute存儲的名稱。
隻支持表的同步,不支持其他非表對象如視圖的同步。
建議大家可以嚐試下使用DTS來做數據的增量同步。具體詳細的操作文檔詳見:創建RDS到MaxCompute數據實時同步作業
⑤ 開源產品:Flume / Logstash / Fluentd
目前開源產品都是提供output插件將數據寫入DataHub(目前免費公測中)再數據歸檔到MaxCompute上。如下圖:
個人覺得這幾款開源產品與阿裏雲自研的Log日誌分析產品在日誌采集上類似,但是Flume、Logstash、Fluentd需要一定技術能力的同學方可快速上手,需要手動編寫日誌格式化的正則表達式,在這一點上,讓一些新手趨之若鶩。大家可以考慮下Log直接上手。
- Apache Flume是一個分布式的、可靠的、可用的係統,可用於從不同的數據源中高效地收集、聚合和移動海量日誌數據到集中式數據存儲係統,支持多種Source和Sink插件。Apache Flume的Datahub Sink插件將日誌數據實時上傳到Datahub。具體操作詳見:通過Flume采集數據至MaxCompute
- Logstash是一種分布式日誌收集框架,非常簡潔強大,經常與ElasticSearch,Kibana配置,組成著名的ELK技術棧,非常適合用來做日誌數據的分析。 阿裏雲流計算為了方便用戶將更多數據采集進入DataHub,提供了針對Logstash的DataHub Output/Input插件。具體操作詳見:通過Logstash采集數據至MaxCompute
- Fluentd也是大家經常接觸到的分布式日誌采集係統,該插件是基於Fluentd開發的輸出插件,主要是將采集到的數據寫入DataHub。該插件遵守Fluentd輸出插件開發規範,安裝方便,可以很方便地將采集得到的數據寫到DataHub。具體操作詳見:通過Fluentd采集數據至MaxCompute
[總結]三款產品都是不錯的選擇,需要根據個人使用習慣進行選擇,我自己也習慣使用Logstash所以也寫過一些真是case的文章《構建網站日誌實時運營大屏》,從日誌采集-->Logstash采集-->DataHub技術棧。
⑥ DataX、數據集成(Data IDE數據采集)
之所以將DataX和Data IDE數據采集放在一起給大家介紹,是因為兩者之間密不可分,但是又有著巨大差別。
- DataX阿裏巴巴集團內被廣泛使用的離線數據同步工具/平台,目前已經開源DataX。具體使用可以詳見:DataX配置及使用,如下圖:
- Data IDE是基於MaxCompute之上的大數據開發套件,其中數據采集模塊完美的支持了DataX的所有數據通道。可以進入詳細了解:數據采集模塊
【相同點】:Data IDE數據采集模塊是基於DataX平台之前構建的可視化配置+調度係統,支持的數據通道完全一致。【不同點】:DataX需要自己本機或服務器上配置josn文件和自己編寫crontab進行調度運維。
建議:大家直接使用 大數據開發套件-數據采集工具,因為大數據開發套件Data IDE提供了一整套的數據倉庫工具解決方案,從數據采集到數據加工以及後續的調度運維等。關鍵是免費!免費!免費!
* 支持的數據通道:
數據源分類 | 數據源類型 | 抽取(Reader) | 導入(Writer) | 支持方式 | 支持類型 |
---|---|---|---|---|---|
大數據存儲 | MaxCompute(對應數據源名稱是 ODPS) | 支持 | 支持 | 向導/腳本 | 阿裏雲 |
大數據存儲 | AnalyticDB(對應數據源名稱ADS) | 不支持 | 支持 | 向導/腳本 | 阿裏雲 |
關係型數據庫 | MySQL | 支持 | 支持 | 向導/腳本 | 阿裏雲/自建 |
關係型數據庫 | SQL Server | 支持 | 支持 | 向導/腳本 | 阿裏雲/自建 |
關係型數據庫 | PostgreSQL | 支持 | 支持 | 向導/腳本 | 阿裏雲/自建 |
關係型數據庫 | Oracle | 支持 | 支持 | 向導/腳本 | 自建 |
關係型數據庫 | DRDS | 支持 | 支持 | 向導/腳本 | 阿裏雲 |
關係型數據庫 | DB2 | 支持 | 支持 | 腳本 | 自建 |
關係型數據庫 | 達夢(對應數據源名稱是 dm) | 支持 | 支持 | 腳本 | 自建 |
關係型數據庫 | RDS for PPAS | 支持 | 支持 | 腳本 | 阿裏雲 |
MPP | HybridDB for MySQL | 支持 | 支持 | 向導/腳本 | 阿裏雲 |
MPP | HybridDB for PostgreSQL | 支持 | 支持 | 向導/腳本 | 阿裏雲 |
非結構化存儲 | OSS | 支持 | 支持 | 向導/腳本 | 阿裏雲 |
非結構化存儲 | HDFS | 支持 | 支持 | 腳本 | 自建 |
非結構化存儲 | FTP | 支持 | 支持 | 向導/腳本 | 自建 |
NoSql | HBase | 支持 | 支持 | 腳本 | 阿裏雲/自建 |
NoSql | MongoDB | 支持 | 支持 | 腳本 | 阿裏雲/自建 |
NoSql | Memcache | 不支持 | 支持 | 腳本 | 阿裏雲/自建Memcached |
NoSql | Table Store(對應數據源名稱是OTS) | 支持 | 支持 | 腳本 | 阿裏雲 |
NoSql | LogHub | 不支持 | 支持 | 腳本 | 阿裏雲 |
NoSql | OpenSearch | 不支持 | 支持 | 腳本 | 阿裏雲 |
NoSql | Redis | 不支持 | 支持 | 腳本 | 阿裏雲/自建 |
性能測試 | Stream | 支持 | 支持 | 腳本 |
最後更新:2017-06-07 21:01:45