데이터를 메타 데이터로 저장 한 다음 메타 데이터 기반으로 디자인하는 것이 더 좋습니다. 메타 데이터를 업데이트하면 앱 업데이트가 필요하다는 것을 의미하는 메타 데이터가 응용 프로그램의 디자인이나 구현에 포함되는 것과 반대가됩니다. 물론 메타 데이터 기반 애플리케이션을 어느 정도로 사용할 수 있는지에 대한 한계가 있습니다.
JSON과 같은 인코딩 스키마를 사용하는 등의 방식으로 메타 데이터를 임베드하거나 SeqFile에 예약 된 태그를 사용하여 메타 데이터를 설명하는 레코드가있는 것처럼 메타 데이터를 가질 수 있습니다 지정된 메타 데이타에 실제의 데이터의 키에 의해 사용되는 이름 공간과는 다른 독자적인 이름 공간이되도록 (듯이)합니다.
이 파일을 별도의 Hadoop 파일로 패키징할지 여부에 대한 권장 사항은 Hadoop이 파일을 분할 설정 (맵 단계 입력)으로 구성 설정을 통해 지시 할 수 있음을 명심하십시오. 따라서 하나의 큰 SeqFile도 여러 맵 작업에 의해 병렬로 처리 될 수 있습니다. 단일 hdfs 파일을 갖는 이점은 원래 데이터의 포함 단위와 더 유사하다는 것입니다.
키 유형 (즉, 텍스트 대 바이너리 사용 여부)에 대한 권장 사항은 키가 다른 값과 비교 될 것이라고 생각하십시오. 키가 작을수록 비교가 빠릅니다. 따라서 키의 빽빽한 버전을 저장할 수 있다면 바람직 할 것입니다. 마찬가지로, 첫 번째 바이트가 일반적으로 같지 않도록 키 레이아웃을 구성 할 수 있다면 성능에 도움이됩니다. 예를 들어 자바 클래스를 키로 직렬화하는 것은 권장되지 않습니다. 왜냐하면 텍스트 스트림이 클래스의 패키지 이름으로 시작하여 다른 모든 클래스와 같아서 파일에 키가 있기 때문입니다.
맵 스테이지가 입력마다 하나의 파일만을 사용한다고하는 주장은 실제로 잘못되었습니다. HDFS는 각 입력 파일을 가져 와서 여러 데이터 노드 사이에서 분할되는 블록으로 분해합니다. 이것이 문제가되는 유일한 경우는 파일 압축을 풀기 위해 전체 파일 (텍스트 용, 어쨌든)을 필요로하므로 압축이 관련되는 경우입니다. 그러나 시퀀스 파일은 개별 레코드 나 구분 된 블록을 압축하여이 문제를 해결하므로 파일을 분할 할 수 있습니다. 맵 작업의 수는 입력 파일의 수와 관련이 없습니다. – tedivm