HDFS 의 작업 원리
8796 단어 빅 데이터
2. hdfs 파일 설명도 읽 기
3. namenode 메타 데이터 관리 메커니즘
4. hdfs 의 자바 클 라 이언 트 단 hdfs dfsadmin - report 인쇄 클 러 스 터 의 상태
package hadoop.hdfs;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.junit.Before; import org.junit.Test;
import java.io.IOException; import java.net.URI; import java.util.Iterator; import java.util.Map;
/**
conf=new Configuration();
// conf.set(“fs.defaultFS”,“hdfs://master:9000"); / / 이 방식 은 실행 할 때 사용 자 를 지정 하 는 매개 변 수 를 추가 해 야 합 니 다. - DADOOP USER NAME = hadop fs = FileSystem. get (new URI (")hdfs://192.168.186.5:9000"), conf," hadop ");} / * 업로드 파일 * / @ Test public void testUpload () throws Exception {fs. copyFromLocalFile (new Path ()"D: \ 빅 데이터 \ 빅 데이터 세트 (공유 됨) \ 문서 자료 \ \ day 06 \ \ day 06 \ \ hadoop 2.4.1 클 러 스 터 구축. txt"), new Path ("/ test 1. txt"), fs. close ();} / * 파일 다운로드 * / @ Test public void testDownload () throws IOException {fs. copyToLocalFile ("/ test 1. txt"), new Path ("d: \"), fs. close ();} / 인쇄 매개 변수 * / @ Test public void test Conf (){ Iterator> it = conf.iterator(); while (it.hasNext()){ Map.Entry next = it.next(); System.out.println(next.getKey()+":"+next.getValue()); } } @Test public void testMkdir() throws IOException { boolean mkdirs = fs.mkdirs(new Path("/testMkdir")); System.out.println(mkdirs); fs.close(); } @Test public void testDelete() throws IOException {/ / 두 번 째 인 자 는 boolean delete = fs. delete (new Path ("/ testMkdir"), true 를 재 귀적 으로 삭제 할 지 여 부 를 표시 합 니 다. System. out. println (delete);} / * 재 귀적 으로 데 이 터 를 볼 때 * 데이터 양 이 많 을 때 되 돌아 오 는 것 은 교체 기 입 니 다. 교체 기 는 데 이 터 를 저장 하지 않 기 때 문 입 니 다 * / @ Test public void testLs () throws IOException {RemoteIterator ls = fs. listFiles (new Path ("/"), true); while(ls.hasNext()){ LocatedFileStatus next = ls.next(); System.out.println(“blocksize”+next.getBlockSize()); System.out.println(“owner”+next.getOwner()); System.out.println(“replication”+next.getReplication()); System.out.println(“Permission”+next.getPermission()); System.out.println(“name”+next.getPath().getName()); System. out. println ("--- --- ---"); / * 파일 의 블록 위치 정보 * / BlockLocation [] bl = next. getBlockLocations (); for (BlockLocation b: bl) {String [] hosts = b. getHosts (); b. getOffset ();}} / * 반환 수 근거 * / @ Test public void testLs 2 () throws IOException {FileStatus [] f = fs. list Status (new Path ("/"); for (FileStatus file: f){ System.out.println(file.getPath().getName()); } } }
2. 흐 르 는 방식 으로 package hadop. hdfs;
import org.apache.commons.io.IOUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Before; import org.junit.Test;
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI;
/**
conf=new Configuration();
fs=FileSystem.get(new URI("hdfs://192.168.186.5:9000"),conf,"hadoop");
} / *5. 정시 채집 일 스 크 립 트 \ #! / bin / bash
#set java env export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51 export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH
#set hadoop env export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.4 export PATH= H A D O O P H O M E / b i n : {HADOOP_HOME}/bin: HADOOPHOME/bin:{HADOOP_HOME}/sbin:$PATH
\ # 버 전 1 의 문제: \ # Hadoop 클 러 스 터 에 올 렸 지만 원본 파일 은 그대로 있 습 니 다. 어떻게 처리 합 니까? \ # 로그 파일 의 이름 은 모두 xxxx. log 1 입 니 다. 파일 을 다시 업로드 할 때 hdfs 에 이미 존재 하기 때문에 오 류 를 보고 합 니 다. 어떻게 처리 합 니까?
\ # 버 전 1 문 제 를 어떻게 해결 합 니까?
1. 먼저 업로드 할 파일 을 업로드 할 디 렉 터 리 로 이동
2. 파일 을 업로드 할 디 렉 터 리 로 이동 할 때 파일 이름 을 일정한 형식 으로 바 꿉 니 다.
/export/software/hadoop.log1 /export/data/click_log/xxxxx_click_log_{date}
\ # 로그 파일 에 저 장 된 디 렉 터 리 log src dir = / home / hadop / logs / log /
\ # 업로드 할 파일 에 저 장 된 디 렉 터 리 log toupload dir = / home / hadop / logs / toupload /
\ # 로그 파일 이 hdfs 에 업로드 되 는 루트 hdfs root dir = / data / clickLog / 20151226 /
\ # 환경 변수 정 보 를 출력 echo "envs: hadop home: $HADOOP HOME"
\ # 로그 파일 의 디 렉 터 리 를 읽 고 업로드 할 파일 이 있 는 지 판단 합 니 다 echo "log src dir:" $log src dir ls l o g s r c d i r 8739 ° w h i l e r e a d f i l e N a m e d o i f ["log src dir | while read fileName do if [[" logs rcd ir 8739 ° whilereadfileNamedoif [[["fileName" = access. log. *]; then \ # if ["access. log" = "$fileName"]; then date =
date +%Y_%m_%d_%H_%M_%S
\ # 업로드 할 디 렉 터 리 로 파일 을 이동 하고 이름 을 바 꿉 니 다 \ # 인쇄 정보 echo "moving l o g s r c i r log src dir logs rcd irfileName to KaTeX parse error: expected group after '' at position 33:.. xxxx click log̲fileName”$date" mv l o g s r c d i r log_src_dir logsrcdirfileName KaTeX parse error: Expected group after '_' at position 33: …xxxxx_click_log_̲fileName "$date \ # 업로드 할 파일 path 를 목록 파일 에 기록 합 니 다 willDoing echo KaTeX parse error: Expected group after '' at position 33:... xxxx click log̲fileName"$date >> l o g t o u p l o a d d i r " w i l l D o i n g . " log_toupload_dir"willDoing." logtouploaddir"willDoing."date fi done \ # 목록 파일 을 찾 으 면 willDoing ls KaTeX parse error: 예상 되 는 'EOF', got '\ #' 위치 89:... read line do \ #̲인쇄 정보 echo "tou... line \ # 업로드 대기 파일 목록 willDoing 을 willDoing COPY mv l o g t o u p l o a d i r log toupload dir logt oupload irline l o g t o u p l o a d i r log toupload dir logt oupload irline" COPY "\ # 목록 파일 읽 기 willDoing COPY 내용 (업로드 대기 파일 이름 하나)이 곳 의 line 은 목록 에 업로드 할 파일 의 path cat l o g t o u p l o a d i r log toupload dir logt oupload irline "COPY" | while read line do \ # 인쇄 정보 echo "puting... l i n e t o h d f s p a t h.... line to hdfs path.... linetohdfspath.... hdfs root dir" hadoop fs -put $line $hdfs_root_dir done mv l o g t o u p l o a d d i r log_toupload_dir logtouploaddirline"COPY" l o g t o u p l o a d d i r log_toupload_dir logtouploaddirline"DONE" done
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.