Hadoop壓縮演算法snappy
阿新 • • 發佈:2019-02-05
Snappy的前身是Zippy。雖然只是一個數據壓縮庫,它卻被Google用於許多內部專案程,其中就包括BigTable,MapReduce和RPC。Google宣稱它在這個庫本身及其演算法做了資料處理速度上的優化,作為代價,並沒有考慮輸出大小以及和其他類似工具的相容性問題。Snappy已經被Google開源,作為一個壓縮庫,它可以利用單顆Intel Corei7處理器核心處理至少每秒250MB~500MB的資料流。Google極力讚揚Snappy的各種優點,Snappy從一開始就被“設計為即便遇到損壞或者惡意的輸入檔案都不會崩潰”,而且被Google在生產環境中用於壓縮PB級的資料。其健壯性和穩定程度可見一斑。
下載:http://code.google.com/p/snappy/downloads/list
配置:
設定LD_LIBRARY_PATH環境變數或者java.library.path屬性hadoop native library: $HADOOP_HOME/lib/native/Linux-amd64-64/
測試:
String codecClassname = "org.apache.hadoop.io.compress.SnappyCodec"; Class codecClass = Class.forName(codecClassname); Configuration conf = new Configuration(); CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, conf); String fileinName = args[0]; String fileoutName = fileinName + codec.getDefaultExtension(); FileOutputStream fileout = new FileOutputStream(fileoutName); CompressionOutputStream out = codec.createOutputStream(fileout); FileInputStream filein = new FileInputStream(fileinName); IOUtils.copyBytes(filein,out,4096,false); out.finish(); out.close(); filein.close();
INFO util.NativeCodeLoader: Loaded the native-hadoop library native hadoop loaded.
WARN snappy.LoadSnappy: Snappy native library is available
INFO snappy.LoadSnappy: Snappy native library loaded