복붙노트

[HADOOP] Hadoop Streaming을 LZO 압축 시퀀스 파일과 함께 사용하는 방법?

HADOOP

Hadoop Streaming을 LZO 압축 시퀀스 파일과 함께 사용하는 방법?

Amazon의 Elastic Map Reduce를 사용하여 Google ngrams 데이터 세트로 놀고 싶습니다. http://aws.amazon.com/datasets/8172056142375670에 공용 데이터 세트가 있으며 Hadoop 스트리밍을 사용하고 싶습니다.

입력 파일의 경우 "Amazon S3의 단일 객체에 데이터 세트를 저장합니다.이 파일은 블록 레벨 LZO 압축을 사용하는 시퀀스 파일 형식으로되어 있습니다. 시퀀스 파일 키는 LongWritable로 저장된 데이터 세트의 행 번호이며 값은 TextWritable로 저장된 원시 데이터입니다. "

Hadoop Streaming으로 이러한 입력 파일을 처리하려면 어떻게해야합니까?

내 인수에 추가 "-inputformat SequenceFileAsTextInputFormat"을 추가하려고 시도했지만 작동하지 않는 것처럼 보입니다. 내 작업이 불특정 이유로 실패합니다. 제가 놓친 다른 주장이 있습니까?

나는 매퍼 (mapper)와 감속기 (reducer) 모두로 매우 간단한 신원을 사용하려고 시도했다.

#!/usr/bin/env ruby

STDIN.each do |line|
  puts line
end

그러나 이것은 효과가 없습니다.

해결법

  1. ==============================

    1.lzo는 탄성 mapreduce의 일부로 패키지되어 있으므로 설치할 필요가 없습니다.

    lzo는 탄성 mapreduce의 일부로 패키지되어 있으므로 설치할 필요가 없습니다.

    방금 시도했는데 작동합니다 ...

     hadoop jar ~hadoop/contrib/streaming/hadoop-streaming.jar \
      -D mapred.reduce.tasks=0 \
      -input s3n://datasets.elasticmapreduce/ngrams/books/20090715/eng-all/1gram/ \
      -inputformat SequenceFileAsTextInputFormat \
      -output test_output \
      -mapper org.apache.hadoop.mapred.lib.IdentityMapper
    
  2. ==============================

    2.라이선스 문제로 인해 Lazo 압축이 Hadoop 0.20.x에서 제거되었습니다. lzo로 압축 된 시퀀스 파일을 처리하려면 hadoop 클러스터에 lzo 네이티브 라이브러리를 설치하고 구성해야합니다.

    라이선스 문제로 인해 Lazo 압축이 Hadoop 0.20.x에서 제거되었습니다. lzo로 압축 된 시퀀스 파일을 처리하려면 hadoop 클러스터에 lzo 네이티브 라이브러리를 설치하고 구성해야합니다.

    Kevin의 Hadoop-lzo 프로젝트는 제가 알고있는 현재 작업 솔루션입니다. 나는 그것을 시도했다. 그것은 작동합니다.

    OS에서 lzo-devel 패키지를 설치하십시오 (아직 완료하지 않은 경우). 이 패키지들은 OS 레벨에서 lzo 압축을 가능하게하지 않고 hadoop lzo 압축이 작동하지 않습니다.

    hadoop-lzo readme에 지정된 지시 사항을 따라 컴파일하십시오. 빌드가 끝나면 hadoop-lzo-lib jar와 hadoop lzo 네이티브 라이브러리를 얻을 수 있습니다. 클러스터가 구성된 시스템 (또는 동일한 아치 시스템)에서 컴파일해야합니다.

    Hadoop 표준 네이티브 라이브러리도 필요합니다.이 라이브러리는 기본적으로 리눅스 배포본에서 제공됩니다. solaris를 사용한다면 표준 hadoop 네이티브 라이브러리를 얻기 위해 소스에서 inoop을 빌드해야합니다.

    모든 변경이 완료되면 클러스터를 다시 시작하십시오.

  3. ==============================

    3.이 https://github.com/kevinweil/hadoop-lzo를 참조하십시오.

    이 https://github.com/kevinweil/hadoop-lzo를 참조하십시오.

  4. ==============================

    4.이상한 결과가 lzo를 사용하고 내 문제가 다른 코덱으로 해결됩니다.

    이상한 결과가 lzo를 사용하고 내 문제가 다른 코덱으로 해결됩니다.

    -D mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
    

    그런 다음 일이 제대로 작동합니다. -inputformat을 변경할 필요는 없습니다.

    Version: 0.20.2-cdh3u4, 214dd731e3bdb687cb55988d3f47dd9e248c5690
    
  5. from https://stackoverflow.com/questions/5060967/how-to-use-hadoop-streaming-with-lzo-compressed-sequence-files by cc-by-sa and MIT license