수색…


비고

HDFS에 대한 좋은 설명과 작동 방식

구문에는 HDFS에서 사용할 수있는 명령어가 포함되어 있어야합니다.

HDFS - Hadoop 분산 파일 시스템

Hadoop 분산 파일 시스템 (Hadoop Distributed File System, HDFS)은 대규모 서버 클러스터에 걸쳐 확장 가능하고 안정적인 데이터 저장을 제공하는 Java 기반 파일 시스템입니다. HDFS, MapReduce 및 YARN은 Apache ™ Hadoop®의 핵심을 형성합니다.

HDFS는 여러 노드에 주어진 데이터 블록의 여러 복사본 (기본적으로 3 개)을 저장함으로써 높은 내결함성을 갖도록 설계되었습니다.

HDFS에서 파일 찾기

Hadoop Distributed 파일 시스템에서 파일을 찾으려면,

hdfs dfs -ls -R / | grep [search_term]

위의 명령에서,

-ls 는 파일 나열 용입니다.

-R 은 재귀 적 (하위 디렉토리를 반복)

/ 는 루트 디렉토리에서 의미합니다.

| 첫 번째 명령의 출력을 두 번째 명령으로 파이프하기

일치하는 문자열을 추출하는 grep 명령

[search_term] hadoop 파일 시스템의 모든 파일 목록에서 검색 할 파일 이름.

또는 아래 명령을 사용하여 일부 표현식을 찾아 적용 할 수도 있습니다.

hadoop fs -find / -name test -print

지정된 표현식과 일치하는 모든 파일을 찾고 선택한 조치를 적용합니다. 경로를 지정하지 않으면 현재 작업 디렉토리가 기본값이됩니다. 표현식을 지정하지 않으면 기본값은 -print입니다.

다음 기본식이 인식됩니다.

  • name pattern
  • iname pattern

파일의 기본 이름이 표준 파일 시스템 globbing을 사용하는 패턴과 일치하면 true로 평가됩니다. -iname이 사용되면 대 / 소문자를 구분하지 않습니다.

  • print
  • print0Always

true로 평가합니다. 현재 경로명을 표준 출력에 기록합니다. -print0 표현식을 사용하면 ASCII NULL 문자가 추가됩니다.

다음 연산자가 인식됩니다.

expression -a expression
expression -and expression
expression expression

HDFS 차단 및 분할

  1. HDFS의 블록 크기와 블록 : HDFS는 파일이로드 될 때마다 블록에 데이터를 저장하는 개념을 가지고 있습니다. 블록은 HDFS (또는 다른 모든 파일 시스템에서 데이터의 실제 파티션)입니다.

    파일이 HDFS에로드 될 때마다 블록으로 알려진 다른 부분으로 물리적으로 분할됩니다 (예 : 파일이 분할 됨). 블록 수는 hdfs-site.xmldfs.block.size 값에 따라 다릅니다.

    이상적으로 블록 크기는 64/128/256MB와 같은 큰 값으로 설정됩니다 (일반 FS에서는 4KB와 비교). 대부분의 Hadoop 2.x 배포에서 기본 블록 크기 값은 128MB입니다. 블록 크기가 더 커지는 이유는 Hadoop이 각 파일의 크기가 수백 메가 바이트에서 TeraBytes까지 인 PetaBytes 데이터를 처리하기 때문입니다.

    예를 들어 1024MB 크기의 파일이 있다고 가정 해보십시오. 블록 크기가 128MB 인 경우 각각 128MB의 8 블록을 얻게됩니다. 즉, namenode는 8 x 3 = 24 파일 (3은 복제 요소 임)의 메타 데이터를 저장해야합니다.

    블록 크기가 4KB 인 동일한 시나리오를 고려하십시오. 결과적으로 1GB / 4KB = 250000 블록이되며 namenode를 사용하여 단 1GB 파일의 750000 블록에 대한 메타 데이터를 저장해야합니다. 이러한 모든 메타 데이터 관련 정보는 메모리에 저장되므로 NameNode에 추가로드를 저장하려면 블록 크기를 늘리는 것이 좋습니다.

    이제 블록 크기는 1GB 등의 매우 높은 값으로 설정되지 않습니다. 이상적으로는 데이터의 각 블록에 대해 1 매퍼가 실행되기 때문입니다. 따라서 블록 크기를 1GB로 설정하면 병렬 처리가 중단되어 전반적인 처리 속도가 느려질 수 있습니다.

2.) HDFS의 분할 크기 : Hadoop 처리의 분할은 논리적 인 데이터 덩어리입니다. 파일을 블록으로 나눌 때, hadoop은 파일 bopundaries를 존중하지 않습니다. 블록 크기에 따라 데이터를 분할합니다. 400MB의 파일이 있고 4 줄이 있고 각 줄의 데이터가 100MB 인 경우 128 MB x 316 MB x 1 의 3 블록을 얻을 수 있습니다. 그러나 데이터 분할, 파일 / 레코드 경계를 염두에두고 입력 분할을 계산할 때 NLineInputFormat을 사용하는 경우이 경우 100 개의 입력 분할을 각각 4 NLineInputFormat 됩니다.

분할 크기는 속성 mapreduce.input.fileinputformat.split.maxsize 사용하여 작업별로 설정할 수도 있습니다.

Blocks 대 Splits에 대한 아주 좋은 설명은이 SO 답변 /



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow