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;
}
댓글
댓글 쓰기