HDFS 지식 포인트

5507 단어 Hadoop빅 데이터
  • HDFS 의 디자인, 장단 점
  • HDFS 명령 행 조작
  • HDFS JAVA Api
  • HDFS Web Console
  • HDFS 휴지통
  • HDFS 스냅 샷
  • HDFS 사용자 권한 관리
  • HDFS 할당량 관리
  • HDFS 안전 모드
  • HDFS 저층 원리
  • HDFS 의 디자인
    HDFS 즉 Hadoop 분산 파일 시스템 (Hadoop Distributed Filesystem) 은 스 트림 데이터 액세스 모드 로 초대형 파일 을 저장 하고 상업 용 하드웨어 클 러 스 터 에서 실행 되 며 네트워크 에 여러 대의 컴퓨터 에 저 장 된 파일 시스템 을 관리 합 니 다.장점: 다 중 던 전 사본 을 자동 으로 저장 한 후 데이터 데이터 위치 가 아 닌 일괄 처리 모 바 일 컴 퓨 팅 에 적합 한 데 이 터 를 자동 으로 복원 합 니 다. 계산 프레임 에 노출 되면 빅 데이터 처리 GB, TB 에 적합 합 니 다.심지어 PB 급 데이터 백만 규모 이상 의 파일 수량 10k + 노드 규모 스 트림 파일 은 한 번 에 여러 번 읽 고 데 이 터 를 유지 하 는 일치 성 을 구축 할 수 있 습 니 다. 저렴 한 기계 에서 다 중 복사 본 을 통 해 신뢰성 을 향상 시 키 고 잘못 사용 과 복구 체 제 를 제공 합 니 다.
    단점: 밀리초 단위 의 작은 파일 액세스 가 NameNode 를 차지 하 는 등 낮은 지연 데이터 접근 에 적합 하지 않 습 니 다.
    HDFS 명령 행 동작
    명령 설명 예시 - mkdir HDFS 에 디 렉 터 리 만 들 기 HDFS 에 디 렉 터 리 만 들 기 / data
     hdfs dfs -mkdir /data
    

    HDFS 상위 에 디 렉 터 리 / data / input 만 들 기
     hdfs dfs -mkdir -p /data/input
    

    - ls hdfs 파일 시스템 루트 디 렉 터 리 의 디 렉 터 리 와 파일 을 보 여 줍 니 다.
     hdfs dfs -ls /
    

    HDFS / data 디 렉 터 리 의 파일 과 디 렉 터 리 보기
     hdfs dfs -ls /data
    

    - ls - R hdfs 파일 시스템 의 모든 디 렉 터 리 와 파일 을 보 여 줍 니 다.
     hdfs dfs -ls -R /
    

    - put 파일 업로드 또는 키보드 입력 문자 에서 HDFS 로 컬 Linux 파일 data. txt 를 HDFS 로 업로드
     hdfs dfs -put data.txt /data/input
    

    키보드 입력 문자 에서 HDFS 로 저 장 된 파일
     hdfs dfs -put - /aaa.txt
    

    - moveFromLocal 은 put 와 유사 합 니 다. 명령 이 실 행 된 후 원본 파일 local src 가 삭제 되 고 키보드 에서 hdfs 파일 로 읽 을 수도 있 습 니 다.
    hdfs dfs -moveFromLocal data.txt /data/input
    

    - copy FromLocal 은 put 와 유사 하 며 키보드 에서 hdfs 파일 에 입력 한 hdfs dfs -
    copyFromLocal data.txt /data/input
    

    - get HDFS 의 파일 을 로 컬 로 복사
    hdfs dfs -get /data/inputdata.txt /root/
    

    - rm 매번 여러 파일 이나 디 렉 터 리 를 삭제 할 수 있 습 니 다.
        hdfs dfs -rm < hdfs file > ...       
        hdfs dfs -rm -r < hdfs dir>...       
    

    - getmerge 는 hdfs 가 지정 한 디 렉 터 리 에 있 는 모든 파일 을 정렬 한 후 local 에서 지정 한 파일 에 통합 합 니 다. 파일 이 존재 하지 않 을 때 자동 으로 생 성 됩 니 다. 파일 이 존재 할 때 내용 을 덮어 HDFS 상 / data / input 디 렉 터 리 에 있 는 모든 파일 을 로 컬 a. txt 파일 에 합 칩 니 다.
    hdfs dfs -getmerge /data/input /root/a.txt
    

    - cp HDFS 의 파일 복사
    - mv HDFS 의 파일 이동
    - count 는 hdfs 가 대응 하 는 경로 의 디 렉 터 리 개수, 파일 개수, 파일 총 크기 를 디 렉 터 리 개수, 파일 개수, 파일 총 크기, 입력 경로 로 표시 합 니 다.
    - du hdfs 대응 경로 의 모든 폴 더 와 파일 크기 표시
    hdfs dfs -du /
    

    - text, - cat 는 텍스트 파일 이나 일부 형식의 비 텍스트 파일 을 텍스트 형식 으로 출력 합 니 다.
    balancer 관리자 가 일부 DataNode 가 데 이 터 를 너무 많이 저장 하고 일부 DataNode 는 데 이 터 를 상대 적 으로 적 게 저장 하 는 것 을 발견 하면 상기 명령 을 사용 하여 내부 의 균형 과정 을 수 동 으로 시작 할 수 있 습 니 다.
    HDFS JAVA Api
    HDFS 에 디 렉 터 리 만 들 기
    //  HDFS     
    public static void createPath(Configuration conf) throws Exception {
        //      
        FileSystem fs = FileSystem.get(conf);
        //     
        boolean flag = fs.mkdirs(new Path("/demo1"));
        System.out.println("  ---------" + flag);
    }
    

    FileSystem API 를 통 해 데 이 터 를 읽 기 (파일 다운로드)
    //   FileSystem API    (    )
    public static void downFile(Configuration conf) throws Exception {
        //      
        FileSystem fs = FileSystem.get(conf);
        //        
        FSDataInputStream inputStream = fs.open(new Path("/demo/a.txt"));
        //        
        OutputStream outputStream = new FileOutputStream("D:\\demo\\a.txt");
        IOUtils.copyBytes(inputStream, outputStream, 1024);
    }
    

    데이터 쓰기 (파일 업로드)
    //     (    )
    public static void uploadFile(Configuration conf) throws Exception {
        //      
        FileSystem fs = FileSystem.get(conf);
        //        
        InputStream inputStream = new FileInputStream("D:\\\\demo\\\\a.txt");
        //        
        FSDataOutputStream outputStream = fs.create(new Path("/demo/b.txt"));
        IOUtils.copyBytes(inputStream, outputStream, 1024);
    }
    

    디 렉 터 리 및 파일 정보 보기
    //          
    public static void getFileInfo(Configuration conf) throws Exception {
        //      
        FileSystem fs = FileSystem.get(conf);
        //      file     
        FileStatus[] fileStatus = fs.listStatus(new Path("/demo"));
        for (FileStatus file : fileStatus) {
            String dir=file.isDirectory()?"  ":"  ";
            String name=file.getPath().getName();
            String path=file.getPath().toString();
            System.out.println(dir+"-----"+name+"------"+path);
            System.out.println(file.getAccessTime());
            System.out.println(file.getBlockSize());
            System.out.println(file.getGroup());
            System.out.println(file.getLen());
            System.out.println(file.getOwner());
        }
    }
    

    HDFS 군집 에 있 는 파일 의 위 치 를 찾 습 니 다.
    //       HDFS     
    public static void findFileBlockLocation(Configuration conf) throws Exception {
        //      
        FileSystem fs = FileSystem.get(conf);
        //    
        FileStatus fileStatus= fs.getFileStatus(new Path("/demo/a.txt"));
        //          ,     
        BlockLocation[] blockLocations=fs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
        for (BlockLocation block : blockLocations) {
            System.out.println(Arrays.toString(block.getHosts())+
                    "\t"+Arrays.toString(block.getNames()));
        }
    }
    

    좋은 웹페이지 즐겨찾기