복붙노트

[HADOOP] 원격 파일을 로컬 디스크에 복사하지 않고 hadoop에 저장

HADOOP

원격 파일을 로컬 디스크에 복사하지 않고 hadoop에 저장

나는 그들이 생성되는 즉시 데이터를 hadoop에 넣기위한 쉘 스크립트를 작성하고있다. 내 마스터 노드에 ssh 할 수 있고, 거기에있는 폴더에 파일을 복사 한 다음 hadoop에 넣을 수있다. 마스터 노드의 로컬 디스크에 파일을 복사하지 않으려는 쉘 명령을 찾고 있습니다. 내가 무엇을 필요로하는지 더 잘 설명하기 위해, 당신은 내가 지금까지 가지고있는 것을 발견 할 수있다.

1) 파일을 마스터 노드의 로컬 디스크에 복사합니다.

scp test.txt username@masternode:/folderName/

이미 키를 사용하여 SSH 연결을 설정했습니다. 따라서 비밀번호를 입력하지 않아도됩니다.

2) ssh를 사용하여 hadoop put 명령을 원격으로 실행할 수 있습니다.

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"

내가 찾고있는 건 파이프 /이 두 단계를 하나로 결합하고 masterNode의 로컬 디스크에있는 파일의 로컬 복사본을 건너 뛰는 것이다.

감사

다른 말로하면, 내가 할 수있는 방식으로 몇 가지 명령을 파이프하고 싶다.

해결법

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

    1.시도해보십시오 (테스트되지 않음).

    시도해보십시오 (테스트되지 않음).

    cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/"
    

    비슷한 방법을 사용하여 디렉토리를 복사했습니다.

    tar cf - . | ssh remote "(cd /destination && tar xvf -)"
    

    이것은 local-tar의 결과를 remote-tar의 입력으로 보낸다.

  2. ==============================

    2.데이터를 생성 한 노드는 각 클러스터 노드 (이름 노드와 모든 데이터 노드)에 도달 할 수 있습니다.

    데이터를 생성 한 노드는 각 클러스터 노드 (이름 노드와 모든 데이터 노드)에 도달 할 수 있습니다.

    데이터 연결이 있다면, 데이터가 생성 된 머신에서 hadoop fs -put 명령을 실행할 수 있습니다 (hadoop 바이너리가 이미 설치되어 있다고 가정).

    #> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/
    
  3. ==============================

    3.Hadoop은 몇 가지 REST 인터페이스를 제공한다. 후프와 WebHDFS를 확인하십시오. 비 Hadoop 환경에서 파일을 사용하여 파일을 마스터에 복사하지 않고 파일을 복사 할 수 있어야합니다.

    Hadoop은 몇 가지 REST 인터페이스를 제공한다. 후프와 WebHDFS를 확인하십시오. 비 Hadoop 환경에서 파일을 사용하여 파일을 마스터에 복사하지 않고 파일을 복사 할 수 있어야합니다.

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

    4.(테스트되지 않음)

    (테스트되지 않음)

    데이터를 생성 한 노드가 인터넷에 액세스 할 수 있기 때문에 아마도 hadoop 클라이언트 노드 소프트웨어를 설치 한 다음 클러스터에 추가 할 수 있습니다. 보통의 hadoop fs -put을 수행 한 후 임시 노드를 연결 해제하고 제거하십시오. 그러면 hadoop 시스템은 너프 럼 클러스터 내부에서 파일 블록을 자동으로 복제합니다.

  5. from https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk by cc-by-sa and MIT license