使用tar+pigz+ssh實現大資料的高效傳輸
以前我們跨主機拷貝大資料的時候,比如要拷貝超過100GB的mysql原始資料,我們通常的做法如下:
- 在源端打包壓縮為tar.gz檔案
- 採用scp或者rsync等方式拷貝到目標主機
- 在目標主機解壓檔案
這三個過程是同步阻塞,即不能同時非同步執行,導致效率低下。
現在我們將過程優化為以資料流的方式,同時執行(非阻塞模式),則效率一般可以提高到原來的3倍以上,具體實現如下:
磁碟讀取---->打包---->壓縮------>傳輸---->解壓縮-->拆包---->落盤
|->tar |->gzip |->ssh |->gzip |->tar
比如我要將本地的test目錄拷貝到“目標IP”的的data目錄,則命令如下:
tar -c test/ |pigz |ssh -c arcfour128 目標IP "gzip -d|tar -xC /data"
當然,這裡的解壓過程仍然用了效率比較低下的gzip,如果將解壓工具換成lz4(但需要單獨編譯安裝),則效率可以再提高不少。
如果不需要解壓,則命令變為:
tar -c test/ |pigz |ssh -c arcfour128 目標IP "cat >/data/test.tar.gz"
注:因為採用了流式壓縮,解壓過程必須加上-i引數,及tar –ixf /data/test.tar.gz 。
說明: pigz是一個高效的壓縮工具,可以將多核CPU的每一分剩餘效能都用來做壓縮計算。而傳統的gzip則只能用單核CPU。比如一臺2個8core cpu伺服器採用pigz和gzip壓縮相同的資料,一般效能差距至少在7-8倍以上(一般不會達到理論的16倍,因為受限於磁碟的讀寫速度和記憶體等資源)。
相關文章
- 簡單實現TCP下的大檔案高效傳輸TCP
- 【實驗】利用可傳輸表空間技術實現資料的高效遷移
- Protobuf: 高效資料傳輸的秘密武器
- java大資料處理:如何使用Java技術實現高效的大資料處理Java大資料
- 解密Protobuf:高效資料傳輸的秘密武器解密
- 生物製藥行業資料內外網傳輸 如何實現高效資料交換和管理?行業
- window.name實現的跨域資料傳輸跨域
- 企業大資料傳輸方式,鐳速提供大資料傳輸解決方案大資料
- 利用C++ 設計快取佇列實現高效傳輸相機資料(SampleBuffer)C++快取佇列
- 用Flask實現視訊資料流傳輸Flask
- 【流式傳輸】使用Spring Boot實現ChatGpt流式傳輸Spring BootChatGPT
- Xamarin Essentials教程實現資料的傳輸功能例項
- Android使用Socket(Tcp/Udp)協議進行資料傳輸(傳輸大檔案)AndroidTCPUDP協議
- 【分段傳輸】c#使用IAsyncEnumerable實現流式分段傳輸C#
- 助力大資料行業發展的強大支撐——鐳速傳輸資料傳輸引擎大資料行業
- IC設計資料傳輸 如何能保障安全高效?
- 劃分安全域後 高效、可控的檔案傳輸如何實現?
- 跨國大檔案傳輸需要哪些方面?怎麼實現資料快速傳輸?
- 使用RMAN實現可傳輸的表空間
- Netty使用Google Protocol Buffer完成伺服器高效能資料傳輸NettyGoProtocol伺服器
- 使用Oracle可傳輸表空間的特性複製資料(3)跨平臺的傳輸實踐Oracle
- 大規模資料傳輸,知易行難 — 資料傳輸與 ETL 平臺的架構演進架構
- 讓機臺資料傳輸更高效可靠,一文了解!
- 大模型推理指南:使用 vLLM 實現高效推理大模型
- iPaas資料傳輸的方式
- 保險行業需要一個安全的大資料傳輸行業大資料
- 大資料傳輸高速發展推動企業現代化程式大資料
- 大檔案資料如何做到安全傳輸?
- 高效資料傳輸:Java透過繫結快速將資料匯出至ExcelJavaExcel
- 使用EXPDP IMPDP傳輸不同資料庫的不同表空間(新增網路傳輸)資料庫
- 使用 Postgres、Debezium 和 Kafka 流式傳輸資料Kafka
- 使用Pandas IO工具流式傳輸源資料
- 使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取IBM
- 使用Oracle可傳輸表空間的特性複製資料(7)實戰RMAN備份傳輸表空間Oracle
- 模擬資料傳輸常用方式PK,最安全高效的還得是它!
- 從零手寫實現 nginx-07-大檔案傳輸 分塊傳輸(chunked transfer)/ 分頁傳輸(paging)Nginx
- Arctic助力傳媒實現低成本的大資料準實時計算大資料
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移