복붙노트

[HADOOP] Hadoop에서 HDFS 위치 란 무엇입니까?

HADOOP

Hadoop에서 HDFS 위치 란 무엇입니까?

일부 온라인 자습서를 따른 후 Hadoop에서 WordCount 예제를 실행하려고합니다. 그러나 다음 명령을 실행할 때 파일이 우리의 로컬 파일 시스템에서 HDFS로 복사되는 위치가 명확하지 않습니다.

hadoop fs -copyFromLocal /host/tut/python-tutorial.pdf /usr/local/myhadoop-tmp/

다음 명령을 실행했을 때 python-tutorial.pdf가 여기 HDFS에 나열되어 있지 않습니다.

hadoop fs -ls

이것은 나를 혼란스럽게합니다. core-site.xml에 이미 "myhadoop-tmp"디렉토리를 지정했습니다. 나는이 디렉토리가 모든 입력 파일을 저장하기위한 HDFS 디렉토리가 될 것이라고 생각했다.

core-site.xml
=============
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/myhadoop-tmp</value>
    <description>A base for other temporary directories.</description>
</property>

내 컴퓨터에 HDFS가있는 경우가 아닌 경우? HDFS 디렉토리를 결정하는 구성은 무엇이며 입력 파일을 로컬 파일 시스템에서 HDFS로 복사 할 때 입력 파일의 위치는 어디입니까?

해결법

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

    1.이것은 dfs.datanode.data.dir 등록 정보에서 설정되며 기본값은 file : // $ {hadoop.tmp.dir} / dfs / data입니다 (자세한 내용은 여기 참조).

    이것은 dfs.datanode.data.dir 등록 정보에서 설정되며 기본값은 file : // $ {hadoop.tmp.dir} / dfs / data입니다 (자세한 내용은 여기 참조).

    그러나 문제는 HDFS에서 전체 경로를 사용하지 않는 것입니다. 대신 다음을 수행하십시오.

    hadoop fs -ls /usr/local/myhadoop-tmp/
    

    HDFS 내의 경로를 로컬 파일 시스템의 경로와 혼동하는 것처럼 보일 수도 있습니다. HDFS에서 파일은 / usr / local / myhadoop-tmp /에 있습니다. 로컬 시스템에서 (그리고 설정을 지정하면) / usr / local / myhadoop-tmp / dfs / data / 아래에 있습니다. 여기에는 HDFS에 정의 된 디렉토리 구조와 명명 규칙이 있습니다.이 규칙은 HDFS의 어떤 경로와도 독립적입니다. 또한 블록으로 나누어지고 각 블록에 고유 한 ID가 할당되므로 동일한 이름을 갖지 않습니다. 블럭 이름은 blk_1073741826과 같습니다.

    결론 : 데이터 노드가 사용하는 로컬 경로는 HDFS에서 사용하는 경로와 다릅니다. HDFS 메타 데이터 관리를 엉망으로 만들 수 있기 때문에 파일을 찾는 로컬 디렉토리로 이동할 수 있지만 그렇게해서는 안됩니다. hadoop 명령 줄 도구를 사용하여 HDFS 내의 파일을 복사 / 이동 / 읽기하고 HDFS의 논리 경로를 사용합니다. HDFS 내의 이러한 경로는 로컬 데이터 노드 스토리지에 사용 된 경로에 묶일 필요가 없습니다 (이 작업을 수행 할 이유가 없습니다).

  2. from https://stackoverflow.com/questions/19437550/what-is-the-hdfs-location-on-hadoop by cc-by-sa and MIT license