国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

DataX的限速與調(diào)優(yōu)

不知名網(wǎng)友 / 3985人閱讀
DataX的限速與調(diào)優(yōu)

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!


前 言

眾所周知,當(dāng)一個(gè)程序需要傳輸數(shù)據(jù)的時(shí)候,它肯定會(huì)想盡辦法占用掉設(shè)備的資源,但是,隨著對(duì)DataX深入使用可以發(fā)現(xiàn),DataX并不會(huì)全力吃掉資源,所以究竟DataX是如何做到限速的?傳輸緩慢到底是限速原因還是其他原因?本文來(lái)一起探討下。


限 速

我們知道是在core.json文件里面的speed方法里面限速DataX的,可以通過(guò)record記錄數(shù)和byte字節(jié)數(shù)來(lái)限速。
這個(gè)配置在CoreConstant類里面定義了:
選中常量復(fù)制并查找,可以看到有兩個(gè)地方調(diào)用了這個(gè)值
分別是初始化、求最大通道數(shù)的時(shí)候
接下來(lái),看看這兩個(gè)配置在Channel類如何實(shí)現(xiàn)限速的。

Channel類里實(shí)現(xiàn)限速:

從下圖,可以看到在Channel初始化時(shí),順帶初始化了限速的記錄數(shù)(recordSpeed)以及字節(jié)數(shù)(byteSpeed) ,接下來(lái)Control+F看看recordSpeed在哪里調(diào)用了。
可以看到在statPush方法里面用到了:

statPush整個(gè)流程的描述:

  • 判斷byteSpeed(bps)和recordSpeed(tps)是否都大于0?如果不是,則退出;
  • 根據(jù)當(dāng)前的byteSpeed和設(shè)定的byteSpeed對(duì)比,求出睡眠時(shí)間(公式:currentByteSpeed * interval / this.byteSpeed- interval;)
  • 根據(jù)當(dāng)前的recordSpeed和設(shè)定的recordSpeed對(duì)比,求出睡眠時(shí)間(公式:currentRecordSpeed * interval / this.recordSpeed - interval;)
  • 取休眠時(shí)間最大值;
  • Thread.sleep(sleepTime)來(lái)休眠;
  • 實(shí)現(xiàn)限速。
下面貼上statPush的完整代碼:


調(diào) 優(yōu)

首先我們知道,傳輸受兩個(gè)因素影響:

  • 網(wǎng)絡(luò)本身的帶寬等硬件因素造成的影響;
  • DataX本身的參數(shù)。
即當(dāng)覺得DataX傳輸速度慢時(shí),需要從上述兩個(gè)個(gè)方面著手開始排查。

3.1 網(wǎng)絡(luò)本身的帶寬等硬件因素造成的影響

此部分主要需要了解網(wǎng)絡(luò)本身的情況,即從源端到目的端的帶寬是多少(實(shí)際帶寬計(jì)算公式),平時(shí)使用量和繁忙程度的情況,從而分析是否是本部分造成的速度緩慢。以下提供幾個(gè)思路:

  • 可使用從源端到目的端scp,python http,nethogs等觀察實(shí)際網(wǎng)絡(luò)及網(wǎng)卡速度;
  • 結(jié)合監(jiān)控觀察任務(wù)運(yùn)行時(shí)間段時(shí),網(wǎng)絡(luò)整體的繁忙情況,來(lái)判斷是否應(yīng)將任務(wù)避開網(wǎng)絡(luò)高峰運(yùn)行;
  • 觀察任務(wù)機(jī)的負(fù)載情況,尤其是網(wǎng)絡(luò)和磁盤IO,觀察其是否成為瓶頸,影響了速度。

3.2 DataX本身的參數(shù)

1)全局

全局:提升每個(gè)channel的速度**
在DataX內(nèi)部對(duì)每個(gè)Channel會(huì)有嚴(yán)格的速度控制,分兩種,一種是控制每秒同步的記錄數(shù),另外一種是每秒同步的字節(jié)數(shù),默認(rèn)的速度限制是1MB/s,可以根據(jù)具體硬件情況設(shè)置這個(gè)byte速度或者record速度,一般設(shè)置byte速度,比如:我們可以把單個(gè)Channel的速度上限配置為5MB,舉例:
Json:
{
   "core":{
        "transport":{
            "channel":{
                "speed":{
                  "channel": 2, 此處為數(shù)據(jù)導(dǎo)入的并發(fā)度,建議根據(jù)服務(wù)器硬件進(jìn)行調(diào)優(yōu)
                  "record":-1,此處解除對(duì)讀取行數(shù)的限制
                  "byte":-1,此處解除對(duì)字節(jié)的限制
                  "batchSize":204每次讀取batch的大小
                }
            }
        }
    },
    "job":{
            ...
        }
    }

2)局部

局部:提升DataX Job內(nèi)Channel并發(fā)數(shù)**
并發(fā)數(shù)=taskGroup的數(shù)量每一個(gè)TaskGroup并發(fā)執(zhí)行的Task數(shù) (默認(rèn)單個(gè)任務(wù)組的并發(fā)數(shù)量為5)。

提升job內(nèi)Channel并發(fā)有三種配置方式:

  • 配置全局Byte限速以及單Channel Byte限速,Channel個(gè)數(shù) = 全局Byte限速 / 單Channel Byte限速。
  • 配置全局Record限速以及單Channel Record限速,Channel個(gè)數(shù) = 全局Record限速 / 單Channel Record限速。
  • 直接配置Channel個(gè)數(shù)。

配置含義:

  • job.setting.speed.channel : channel并發(fā)數(shù);
  • job.setting.speed.record : 全局配置channel的record限速;
  • job.setting.speed.byte:全局配置channel的byte限速。
  • core.transport.channel.speed.record:?jiǎn)蝐hannel的record限速;
  • core.transport.channel.speed.byte:?jiǎn)蝐hannel的byte限速。
舉例:
Json:
"setting": {
            "speed": {
                "channel": 2,
                "record":-1,
                "byte":-1,
                "batchSize":2048
            }
        }
    }
}
# channel增大,為防止OOM,需要修改datax工具的datax.py文件。
# 如下所示,可根據(jù)任務(wù)機(jī)的實(shí)際配置,提升-Xms與-Xmx,來(lái)防止OOM。
# tunnel并不是越大越好,過(guò)分大反而會(huì)影響宿主機(jī)的性能。
DEFAULT_JVM = "-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=%s/log"
 % (DATAX_HOME)

注意事項(xiàng):

此處根據(jù)服務(wù)器配置進(jìn)行調(diào)優(yōu),切記不可太大!否則直接Exception。以上為調(diào)優(yōu),應(yīng)該是可以針對(duì)每個(gè)json文件都可以進(jìn)行調(diào)優(yōu)。

當(dāng)提升DataX Job內(nèi)Channel并發(fā)數(shù)時(shí),調(diào)整JVM堆參數(shù),原因如下:

  • 當(dāng)一個(gè)Job內(nèi)Channel數(shù)變多后,內(nèi)存的占用會(huì)顯著增加,因?yàn)镈ataX作為數(shù)據(jù)交換通道,在內(nèi)存中會(huì)緩存較多的數(shù)據(jù)。
  • 例如Channel中會(huì)有一個(gè)Buffer,作為臨時(shí)的數(shù)據(jù)交換的緩沖區(qū),而在部分Reader和Writer的中,也會(huì)存在一些Buffer,為了防止jvm報(bào)內(nèi)存溢出等錯(cuò)誤,調(diào)大jvm的堆參數(shù)。
  • 通常我們建議將內(nèi)存設(shè)置為4G或者8G,這個(gè)也可以根據(jù)實(shí)際情況來(lái)調(diào)整。
  • 調(diào)整JVM xms xmx參數(shù)的兩種方式:一種是直接更改datax.py;另一種是在啟動(dòng)的時(shí)候,加上對(duì)應(yīng)的參數(shù),如下:python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" XXX.json。

Channel個(gè)數(shù)并不是越多越好,原因如下:

  • Channel個(gè)數(shù)的增加,帶來(lái)的是更多的CPU消耗以及內(nèi)存消耗。
  • 如果Channel并發(fā)配置過(guò)高導(dǎo)致JVM內(nèi)存不夠用,會(huì)出現(xiàn)的情況是發(fā)生頻繁的Full GC,導(dǎo)出速度會(huì)驟降,適得其反。

備注:

MysqlReader進(jìn)行數(shù)據(jù)抽取時(shí),如果指定splitPk,表示用戶希望使用splitPk代表的字段進(jìn)行數(shù)據(jù)分片,DataX因此會(huì)啟動(dòng)并發(fā)任務(wù)進(jìn)行數(shù)據(jù)同步,這樣可以大大提供數(shù)據(jù)同步的效能,splitPk不填寫,包括不提供splitPk或者splitPk值為空,DataX視作使用單通道同步該表數(shù)據(jù)。

結(jié)語(yǔ):

學(xué)習(xí)之路沒有固定的,先了解原理,再根據(jù)原理及執(zhí)行過(guò)程開始研究,DataX是開源軟件,能直接看到開發(fā)者的思路,更能對(duì)其進(jìn)行研究和修改,使其更適合我們的工作。


本文作者:孫振興(上海新炬中北團(tuán)隊(duì))

本文來(lái)源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129097.html

相關(guān)文章

  • DataPipeline |《Apache Kafka實(shí)戰(zhàn)》作者胡夕:Apache Kafka監(jiān)控與

    摘要:主機(jī)監(jiān)控個(gè)人認(rèn)為對(duì)于主機(jī)的監(jiān)控是最重要的。在實(shí)際監(jiān)控時(shí)可以有意識(shí)地驗(yàn)證這一點(diǎn)。另外還有兩個(gè)線程池空閑使用率小關(guān)注,最好確保它們的值都不要低于,否則說(shuō)明已經(jīng)非常的繁忙。此時(shí)需要調(diào)整線程池線程數(shù)。 showImg(https://segmentfault.com/img/bVbgpkO?w=1280&h=720); 胡夕,《Apache Kafka實(shí)戰(zhàn)》作者,北航計(jì)算機(jī)碩士畢業(yè),現(xiàn)任某互金...

    lvzishen 評(píng)論0 收藏0
  • DataX在有贊大數(shù)據(jù)平臺(tái)實(shí)踐

    摘要:與大數(shù)據(jù)體系交互上報(bào)運(yùn)行統(tǒng)計(jì)數(shù)據(jù)自帶了運(yùn)行結(jié)果的統(tǒng)計(jì)數(shù)據(jù),我們希望把這些統(tǒng)計(jì)數(shù)據(jù)上報(bào)到元數(shù)據(jù)系統(tǒng),作為的過(guò)程元數(shù)據(jù)存儲(chǔ)下來(lái)。基于我們的開發(fā)策略,不要把有贊元數(shù)據(jù)系統(tǒng)的嵌入源碼,而是在之外獲取,截取出打印的統(tǒng)計(jì)信息再上報(bào)。一、需求 有贊大數(shù)據(jù)技術(shù)應(yīng)用的早期,我們使用 Sqoop 作為數(shù)據(jù)同步工具,滿足了 MySQL 與 Hive 之間數(shù)據(jù)同步的日常開發(fā)需求。 隨著公司業(yè)務(wù)發(fā)展,數(shù)據(jù)同步的場(chǎng)景越...

    JerryWangSAP 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<