關於大數據平台ETL可行性方案


今年做過兩個公司需求都遇到了實時流入hive的需求,storm入hive有幾種可行性方案。

1.storm直接寫入hive,storm下面有個stormhive的工具包,可以進行數據寫入hive。但是本人研究半天感覺並不是很好用,並且利用工具類也會在開發上靈活性被限制。

2.storm直接寫入hdfs,利用hive映射到hdfs數據塊上,此種方案可以分為利用storm hdfs工具類,但是用了一段時間發現此工具類也是限制性挺大,比如數據殘留,數據輪轉模式只有時間和大小,數據壓縮格式等限制。想改良這些只能自己去改良源碼,非常麻煩。當然也可以直接自己寫hdfs的工具類,工作量也是異常龐大,也見過類似項目,需要一直開啟文件讀取流,記錄文件狀態,開發難度比較高。而且很容易造成數據延遲,因為storm寫入hdfs並不是特別快。只能開啟高並發去解決此問題。會占據大量的節點端口。

3.最后公司采用一種新的方案是,根據ETL分區,建立不同的hbase表,而storm寫入hbase是比較簡單的而且速度上可以收集批次進行寫入,速度上會高速很多。然后每次hbase表完成后再建立hive-hbase表到hive中,如果涉及復查的查詢,需要把這種表進行select * 到一個純hive的表中進行操作。今天測試了30G 3E的數據量抽取大概需要半小時。想縮短時間可以利用spark和MR進行操作。因為抽取過程會產生大量的0KB文件在HDFS下。所以猜測還是MR數據傾斜造成。自己寫MRspark抽取應該會速度上快很多。

 


免責聲明!

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



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