hdata datax交流總結


http://blog.csdn.net/zlm838687/article/details/74781522

 

hdata datax交流總結

今天和阿里雲的同學就數據同步做了簡要的交流,下面就交流的內容做一個總結

分片相關

  1. datax目前可以支持單機(standalone)和集群模式(cluster).目前開源的是單機版本。無論是單機版本還集群版本,分片都是通過datax進行。集群模式會把分片包裝的taskGroup重新發給datax service, datax service會把新的taskGroup重新發給其他機器執行
  2. 根據算出的最大值、最小值和通道個數(相當於hdata的線程個數),可以計算出步長(step), 然后根據step,計算出各個分片的長度。
  3. datax split目前僅支持單一主鍵,且主鍵類型是int或者varchar類型
  4. 執行reader和writer最細力度的切分。需要注意到是,writer的切分結果要參照readre的結果,要達到切分后的結果數目相等,才能滿足1:1的通道模型。所以這里可以將reader和writer的配置整合到一起。為了避免順序給讀寫帶來的長尾效應,將整合的結果shuffle掉。 
  5. hbase的分片是通過region來實現的
  6. odps(他們的hadoop環境)是通過offset來實現的
  7. 分庫分表直接在表的層面划分,各個表之間沒有關系。我們交流的團隊目前是沒有使用canal增量同步數據的
  8. datax沒有斷點續傳,分布式一個錯,其他都錯。datax如果某一個task失敗會有重試,我們hdata目前還沒有。后面hdata可以改進下,可以減少整個任務重試的成本。

流控

  1. datax的流控不會出現尖峰的情況。他們內部會把每次sleep的時間調整的很短。具體sleep的時間他們是根據當前流量,超出峰值的流量等因素,根據他們內部算法實現的。我們自己的hdata早前都是固定sleep一秒的, 所以會出現峰值的情況。
  2. 數據源的流控超過了就不再下發任務

開發平台相關

  1. 多租戶,主賬號和子賬號,有多個角色(開發,運維,部署,方可,項目管理員),會有測試,預發等。
  2. SQL的補全是每個輸入會有ajax請求到后端(odps上)做語法分析. odps會根據語法樹找到和用戶最匹配的sql

總結

我們做的好的地方

  1. datax目前的進度匯報是基於task級別的,但是task級別的進度不能真正反映整個job的進度。我們目前hdata是進程級別的。可以真正的看到這個任務total read write completedPercent的情況
  2. datax的限流雖然把sleep的間隔調整為毫秒級別,但是個人覺得還是會出現短暫的分值情況。我們目前的限流首先會在數據庫級別做一下限流,降低數據庫的壓力,減少sql killer發送的頻率。還有我們目前限流的算法采用類似tcp擁堵的滑動窗口算法,快速下降慢速恢復。可以將流量控制在一個平穩的數值范圍內。

值的學習借鑒的地方

  1. hdata的分布式。大概想法是分片還是由hdata完成,然后hdata把分片的結果告訴調度,由調度進行二次分發到不同的hdata機器上進行執行
  2. hdata可以增加線程級別的重試。減少重跑出錯任務的代價
  3. 當前hdata支持容忍錯誤的條數,不支持容忍錯誤百分比。后期需要把這個功能坐上。
  4. hdata的智能分析還不夠強大。當前正在做。
  5. 數加的測試環境的數據都是讀取線上的數據的,只不過寫出的時候區分線上環境還是測試環境。我們后面做測試環境可以考慮下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM