기본 콘텐츠로 건너뛰기

[Hadoop] Snappy 설치

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;
 }

댓글

이 블로그의 인기 게시물

[Android] Android Studio Github 설정하기

1. Settings File > Settings 2. Version Control 메뉴 or 검색창에서 git 입력 3. 사용중인 Github 계정 및 비번을 입력하고 'Apply' > 'OK'색에서 'git' 검색 4. VCS > Checkout from Version Control > Github 5. Clone Repository에 Checkout 받을 프로젝트를 선택한 후, 'Clone'을 실행

knapsack problem (배낭문제)

Knapsack Problem Definition in Wikipedia 배낭 문제 ( Knapsack Problem   냅색 프라블럼 [ * ] )는  조합 최적화 의 유명한 문제이다. 간단하게 말하면, 한 여행가가 가지고 가는 배낭에 담을 수 있는 무게의 최댓값이 정해져 있고, 일정 가치와 무게가 있는 짐들을 배낭에 넣을 때, 가치의 합이 최대가 되도록 짐을 고르는 방법을 찾는 문제이다. 이 배낭문제는 짐을 쪼갤 수 있는 경우(무게가  소수 일 수 있는 경우)와 짐을 쪼갤 수 없는 경우(이 경우 짐의 무게는 0 이상의 정수만 가능) 두 가지로 나눌 수 있는데, 짐을 쪼갤 수 있는 경우의 배낭문제를  분할가능 배낭문제 ( Fractional Knapsack Problem ), 짐을 쪼갤 수 없는 경우의 배낭문제를  0-1 배낭문제 (0-1  Knapsack Problem )라 부른다. 이 문제는 쪼갤 수 있는 경우에는  그리디 알고리즘 으로  다항 시간 에, 쪼갤 수 없는 경우에는  동적계획법 (Dynamic Programming)등으로  의사 다항 시간 에 풀 수 있다. 단, 쪼갤 수 없는 경우는  NP-완전 이기 때문에 알려진 다항 시간 알고리즘은 없고,  FPTAS 만 존재한다. 배낭 문제에 대한 FPTAS는  오스카 이바라 와  김철언 이  1975년 에 개발하였다. ZeroDivision Error https://airbrake.io/blog/python-exception-handling/zerodivisionerror-2 Greedy metrics