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()));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 액세스 Hadoop 분산 파일 시스템 HDFS 구성 설명프로파일 m103은hdfs 서비스 주소로 바꿉니다. Java 클라이언트를 이용하여 HDFS의 파일을 액세스하려면 프로필hadoop-0.20.2/conf/core-site를 사용해야 합니다.xml입니다. 처음에 저는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.