What is Snappy?
- 구글에서 자체 개발한 압축 라이브러리- 라이브러리 주소 http://code.google.com/p/snappy
- 2015.01.05 현재 최신 버전은 snappy-1.1.1(?)
설치 과정
1. tar 파일 다운로드https://code.google.com/p/snappy/downloads/list?can=1&q=
2. tar 파일 압축 풀기
3. root 계정으로 snappy 설치
1) 개인적으로 설치한 fedora에 gcc컴파일러, g++ 컴파일러가 없어 함께 설치하였다.
- g++
yum install gcc-c++
- gcc
yum -y install gcc
2) snappy 폴더 이동
3) ./configure --enable-shared
4) make
5) sudo make install
4. snappy native library를 하둡에 복사한다.
1) cp /usr/local/bin/libsnappy.* $하둡홈/lib/native/Linux-amd64-64
2) cp /usr/local/bin/libsnappy*.* $하둡홈/lib/native/Linux-i386-32
가장 중요한 사실!!!!
- mac에서는 snappy 설치시 .so파일이 아닌 .dylib파일이 생성된다.- native library는 Cygwin, Mac OS X 환경에서 동작하지 않는다.(Native Libaries 참조)
Sample Source
@Override public int run(String[] args) throws Exception { JobConf conf = new JobConf(SequenceFileCreator.class); conf.setJobName("SequenceFileCreator"); conf.setMapperClass(DistanceMapper.class); conf.setNumReduceTasks(0); //입출력 경로 설정 FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); //출력 포맷을 SequenceFile로 설정 conf.setOutputFormat(SequenceFileOutputFormat.class); //출력 키를 항공 운항 거리(IntWritable)로 설정 conf.setOutputKeyClass(IntWritable.class); //출력 값을 라인(Text)으로 설정 conf.setOutputValueClass(Text.class); //시퀀스 파일 압축 포맷 설정 // SequenceFileOutputFormat.setCompressOutput(conf, true); // SequenceFileOutputFormat.setOutputCompressorClass(conf, SnappyCodec.class); // SequenceFileOutputFormat.setOutputCompressionType(conf, CompressionType.BLOCK); JobClient.runJob(conf); return 0; }
댓글
댓글 쓰기