基于DataLakeAnalytics如何做跨地域的數(shù)據分析

本篇文章為大家展示了基于DataLakeAnalytics如何做跨地域的數(shù)據分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián)成立于2013年,公司以網站建設、做網站、系統(tǒng)開發(fā)、網絡推廣、文化傳媒、企業(yè)宣傳、平面廣告設計等為主要業(yè)務,適用行業(yè)近百種。服務企業(yè)客戶上千,涉及國內多個省份客戶。擁有多年網站建設開發(fā)經驗。為企業(yè)提供專業(yè)的網站建設、創(chuàng)意設計、宣傳推廣等服務。 通過專業(yè)的設計、獨特的風格,為不同客戶提供各種風格的特色服務。

在阿里云上,很多客戶的應用都是多地域部署的, 比如在北京(cn-beijing)的地域部署一個應用讓北方的客戶訪問快一點,同時在杭州(cn-hangzhou)地域部署一份讓南方的客戶訪問快一點。多地域部署之后,業(yè)務數(shù)據被拆成了多份,而各個地域的數(shù)據庫都是獨立的,網絡又不通,給總體業(yè)務數(shù)據的分析造成了困難。今天我給大家介紹一套基于 DataLakeAnalytics, OSS, DataX 等幾個阿里云產品的跨地域數(shù)據分析的解決方案。

其實云產品本身(比如我們 DataLakeAnalytics 自己)也有跨地域數(shù)據分析的需求,這個方案也同樣適用。這個方案本來就是為了分析 DataLakeAnalytics 自己的業(yè)務數(shù)據而探索出來的。

方案概覽

我們知道各個地域的RDS是不通的,除非你開公網訪問權限(有很大的安全風險,不推薦), 而且即使你開公網,要對多個數(shù)據庫里面的數(shù)據進行聯(lián)合分析也不是一件容易的事情;而且這種數(shù)據分析的需求我們不希望它占用太多的預算。

我們的方案是把各個地域的數(shù)據都同步到同一個地域的OSS上面去,然后用 DataLakeAnalytics 進行聯(lián)合分析。這個方案的優(yōu)點在于 OSS 存儲收費非常便宜, DataLakeAnalytics 也是按查詢量收費的,你平時不查詢的時候一分錢都不用花??傮w方案如下圖:

基于DataLakeAnalytics如何做跨地域的數(shù)據分析

匯聚各個地域的數(shù)據

我們方案的第一步是把各個地域的RDS數(shù)據同步到同一個地域的OSS里面去。阿里巴巴集團開源了一個很棒的數(shù)據搬運的工具: DataX, 可以把數(shù)據在各種不同的數(shù)據源之間進行搬運,它支持的數(shù)據源類型非常豐富: 從關系型的 MySQL, SQLServer, 到各種文件系統(tǒng)如 HDFS, OSS等等,其中我們需要的是從 MySQL 讀數(shù)據的 mysqlreader 插件以及往 OSS 寫數(shù)據的 osswriter 插件。

假定我們有下面這么一個記錄人員信息的表 person 需要同步:

create table person (
      id int primary key auto_increment,
      name varchar(1023),
      age int
);

我們寫一個類似下面這樣的DataX任務描述文件 person.json :

{
 "job": {
   "setting": {
     "speed": {
       "channel": 1,
       "byte": 104857600
     },
     "errorLimit": {
       "record": 10
     }
   },
   "content": [
     {
       "reader": {
         "name": "mysqlreader",
         "parameter": {
           "username": "your-user-name",
           "password": "your-password",
           "column": [
             "id",
             "name",
             "age",
           ],
           "connection": [
             {
               "table": [
                 "person"
               ],
               "jdbcUrl": [
                 "jdbc:mysql://your-rds.mysql.rds.aliyuncs.com:3306/dbname"
               ]
             }
           ]
         }
       },

       "writer": {
         "name": "osswriter",
         "parameter": {
           "endpoint": "http://oss.aliyuncs.com",
           "accessId": "your-access-id",
           "accessKey": "your-access-secret",
           "bucket": "mydb-bucket",
           "object": "mydb/person/region=cn-hangzhou/person.csv",
           "encoding": "UTF-8",
           "fieldDelimiter": "|",
           "writeMode": "truncate"
         }
       }
     }
   ]
 }
}

這里 MySQL 相關的信息填你的業(yè)務庫的信息,而 OSS 相關的信息選擇一個我們同步到的OSS的地址。注意 OSS 配置部分的 object 字段,mydb 保存你所有的數(shù)據, person 這個目錄保存你的 person 表的數(shù)據,region=cn-hangzhou 這個目錄就有意思了,它保存的是你的應用在 cn-hangzhou 這個region里面的數(shù)據,同樣的,你可能還會有 cn-beijing, cn-shangahi 的數(shù)據等等。

然后執(zhí)行如下命令:

// 執(zhí)行前確保你已經下載并正確配置好 DataX 了。
python datax/bin/datax.py person.json

正確執(zhí)行的話你會看到下面的輸出:

.....省略N行......
2018-09-06 19:53:19.900 [job-0] INFO  JobContainer - PerfTrace not enable!
2018-09-06 19:53:19.901 [job-0] INFO  StandAloneJobContainerCommunicator - Total 251 records, 54067 bytes | Speed 5.28KB/s, 25 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.001s | All Task WaitReaderTime 0.026s | Percentage 100.00%
2018-09-06 19:53:19.902 [job-0] INFO  JobContainer -
任務啟動時刻                    : 2018-09-06 19:53:09
任務結束時刻                    : 2018-09-06 19:53:19
任務總計耗時                    : 10s
任務平均流量                    : 5.28KB/s
記錄寫入速度                    : 25rec/s
讀出記錄總數(shù)                    : 251
讀寫失敗總數(shù)                    : 0

這樣數(shù)據就自動同步到 OSS 上去了,你可以下載一個 oss-browser 去查看oss上面的數(shù)據:

示例數(shù)據

文件里面數(shù)據大概是這樣的:

9|ethan|10
10|julian|20
11|train|30
12|wally|40

完成了一個地域的數(shù)據搬運之后,其它地域都可以照葫蘆畫瓢,唯一需要注意的地方是,雖然 MySQL 數(shù)據是各個 地域 的數(shù)據,但是 OSS 要用同一個根目錄 person ,因為我們要做數(shù)據匯集嘛,把幾個地域的數(shù)據匯集完成之后,person 目錄的結構大概是這樣的:

基于DataLakeAnalytics如何做跨地域的數(shù)據分析

使用 DataLakeAnalytics 分析匯聚后的OSS數(shù)據

下面的分析就可以交給 DataLakeAnalytics 了,分析OSS上的數(shù)據是 DataLakeAnalytics 的拿手好戲,在開始之前我們要有一個 DataLakeAnalytics 的賬號,目前 DataLakeAnalytics 正在公測,直接申請試用就好了。試用審批成功之后,你會獲得一個用戶名和密碼, 然后在控制臺登錄就可以使用:

DLA控制臺

或者如果你是極客,更偏愛命令行,你也可以使用普通的 MySQL 客戶端就可以連接 DLA 了:

mysql -hservice.cn-shanghai.datalakeanalytics.aliyuncs.com
     -P10000
     -u<your-user-name>
     -p<your-password>

在這篇文章里面,我會使用 MySQL 命令行給大家演示 DLA 的功能。

首先我們來建一個 DataLakeAnalytics 的數(shù)據庫:

CREATE DATABASE `mydb` WITH DBPROPERTIES (
    catalog = oss,
    location = 'oss://your-bucket/mydb/'
);

這里的 oss://mydb-bucket/mydb/ 就是前面我們數(shù)據匯聚的 person 目錄的父目錄。

建好庫之后,我們再建一個表:

CREATE EXTERNAL TABLE IF NOT EXISTS `person` (
 `id` bigint,
 `name` varchar(128),
 `age` int
)
PARTITIONED BY (region varchar(63))
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://mydb-bucket/mydb/person';

注意這是一個分區(qū)表,分區(qū)的key是我們的region,這樣的好處一是各個地域在同步數(shù)據的時候比較簡單,不用擔心把別的地域的數(shù)據沖掉了;另外利用地域分區(qū)也使得我們在分析單個地域的時候掃描數(shù)據量會比較小,查詢速度更快。

建好表之后,我們運行如下命令讓 DataLakeAnalytics 去對OSS上的文件列表進行掃描以找到所有的 region 分區(qū):

mysql> msck repair table person;
+-----------------------------------------------------------------------------------------------------------+
| Result                                                                                                    |
+-----------------------------------------------------------------------------------------------------------+
| Partitions not in metastore: person:region=cn-beijing person:region=cn-hangzhou person:region=cn-shanghai |
| Repair: Added partition to metastore mydb.person:region=cn-beijing                                        |
| Repair: Added partition to metastore mydb.person:region=cn-hangzhou                                       |
| Repair: Added partition to metastore mydb.person:region=cn-shanghai                                       |
+-----------------------------------------------------------------------------------------------------------+

現(xiàn)在我們就可以開心的對所有地域的數(shù)據進行聯(lián)合查詢了 :)

mysql> select * from person limit 5;
+------+-------+------+-------------+
| id   | name  | age  | region      |
+------+-------+------+-------------+
|    1 | james |   10 | cn-beijing  |
|    2 | bond  |   20 | cn-beijing  |
|    3 | lucy  |   30 | cn-beijing  |
|    4 | lily  |   40 | cn-beijing  |
|    5 | trump |   10 | cn-hangzhou |
+------+-------+------+-------------+
5 rows in set (0.43 sec)

mysql> select region, count(*) cnt from person group by region;
+-------------+------+
| region      | cnt  |
+-------------+------+
| cn-beijing  |    4 |
| cn-hangzhou |    4 |
| cn-shanghai |    4 |
+-------------+------+
3 rows in set (0.18 sec)

在這篇文章里面,我們介紹了一種通過 DataLakeAnalytics, OSS, DataX 進行跨地域數(shù)據分析的方法。限于篇幅的原因方案的很多細節(jié)沒有進一步優(yōu)化,比如我們其實可以對數(shù)據進行進一步按天分區(qū),這樣每天同步的數(shù)據可以更少,效率更高;再比如我們沒有介紹如何周期性的進行數(shù)據同步,用crontab? 還是什么調度系統(tǒng)?這些就留給讀者自己去探索了。

上述內容就是基于DataLakeAnalytics如何做跨地域的數(shù)據分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:基于DataLakeAnalytics如何做跨地域的數(shù)據分析
網址分享:http://m.kartarina.com/article40/gesoeo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供App設計、電子商務、自適應網站、品牌網站建設域名注冊、網站排名

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設
主站蜘蛛池模板: 特级做A爰片毛片免费看无码| 久久人妻无码中文字幕| 亚洲精品无码永久在线观看 | 亚洲av无码成人精品区一本二本| 中文有无人妻vs无码人妻激烈| 中文字幕无码毛片免费看| 亚洲6080yy久久无码产自国产| 一本大道无码人妻精品专区| 精品久久久久久无码专区不卡| 国产成人无码AⅤ片在线观看| 全免费a级毛片免费看无码| 亚洲av无码无在线观看红杏| 日韩AV无码一区二区三区不卡毛片 | 亚洲精品一级无码中文字幕| 亚洲中文久久精品无码ww16| 一级毛片中出无码| 无码任你躁久久久久久久| 成人免费一区二区无码视频| 综合无码一区二区三区四区五区| 亚洲AV无码精品色午夜果冻不卡| 久久久久无码专区亚洲av| 人妻丰满熟妇A v无码区不卡| 性色AV一区二区三区无码| 精品无码人妻一区二区三区18| 亚洲精品无码高潮喷水A片软| 91精品无码久久久久久五月天| 亚洲Av永久无码精品一区二区| 影音先锋中文无码一区 | 色欲A∨无码蜜臀AV免费播| 亚洲AV综合色区无码一区爱AV| 亚洲AV无码精品国产成人| 亚洲国产91精品无码专区| 亚洲av无码无在线观看红杏| 日本精品无码一区二区三区久久久 | 国产免费无码AV片在线观看不卡| 无码人妻久久一区二区三区| 精品无码一区二区三区电影| 无码精品蜜桃一区二区三区WW | 无码福利一区二区三区| 国产成人无码精品久久久性色| 亚洲国产精品无码中文lv|