大數(shù)據(jù)存儲與處理第四講_第1頁
大數(shù)據(jù)存儲與處理第四講_第2頁
大數(shù)據(jù)存儲與處理第四講_第3頁
大數(shù)據(jù)存儲與處理第四講_第4頁
大數(shù)據(jù)存儲與處理第四講_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

HDFS實戰(zhàn)

1Hadoop運行模式Hadoop偽分布式安裝HDFS命令行工具HDFS安全模式啟動、停止HDFS服務如何查看HDFS日志如何查看HDFSWeb控制臺HDFS參數(shù)配置2單機在一個Java進程內(nèi)模擬Hadoop的各個角色偽分布式由各個Java進程來模擬Hadoop的各個角色集群環(huán)境Hadoop運行模式3Hadoopshell$HADOOP_HOME_BASE/bin/hadoopfs<args>FSshell使用URIs地址Schema://autority/path例如hdfs://namenodehost:port/folder1/folder2如果不指定schema,則使用配置文件中的默認地址可以使用hadoopfs–help查看所有命令HDFS命令行工具4用途顯示一個或多個文件內(nèi)容到控制臺使用方法hadoopfs-catURI[URI...]例子:hadoopfs-cathdfs://host1:port1/file1hdfs://host2:port2/file2hadoopfs-cat/user/hadoop/file4cat5用途將本地一個或多個文件導入HDFS以上兩個命令唯一的不同時copyFromLocal的源只能是本地文件,而put可以讀取stdin的數(shù)據(jù)使用方法hadoopfs-put/copyFromLocal<localsrc>URI例子:hadoopfs-putlocal/user/hadoop/hadoophadoopfs-putlocalfile1localfile2/user/hadoop/hadoopdirhadoopfs-putlocalhadoopfs-put-hdfs://host:port/hadoop/hadoopput/copyFromLocal6用途將HDFS中的一個或多個文件導出到本地文件系統(tǒng)使用方法hadoopfs-get/copyToLocal[-ignorecrc][-crc]URI<localsrc>例子:hadoopfs-get/user/hadoop/hadoophadoopfs-gethdfs://host:port/user/hadoop/get/copyToLocal7用途列出文件夾目錄信息lsr遞歸顯示文件子目錄使用方法hadoopfs-ls/lsrURI例子:ls/lsr[hadoop@master]$hadoopfs-ls/user/hadoopdrwxr-xr-x-hadoopsupergroup02012-05-1417:24/user/hadoop/a[hadoop@master]$hadoopfs-lsr/user/hadoopdrwxr-xr-x-hadoopsupergroup02012-05-1417:24/user/hadoop/a-rw-r--r--2hadoopsupergroup472012-05-1417:24/user/hadoop/a/oct.sh-rw-r--r--2hadoopsupergroup62012-05-1417:24/user/hadoop/a/x.sh8用法hadoopfsck[GENERIC_OPTIONS]<path>[-move|-delete|-openforwrite][-files[-blocks[-locations|-racks]]]檢查dfs的文件的健康狀況只能運行在master上fsck[hadoop@master]$hadoopfsck/user/hadoopFSCKstartedbyhadoopfrom/7forpath/user/hadoopatFriJun1517:11:50CST2012./user/hadoop/a/oct.sh:Underreplicatedblk_-3537883739360629007_1303.TargetReplicasis2butfound1replica(s)../user/hadoop/a/x.sh:Underreplicatedblk_86643771_1304.TargetReplicasis2butfound1replica(s).9fsckStatus:HEALTHYTotalsize:57697BTotaldirs:5Totalfiles:6Totalblocks(validated):5(avg.blocksize11539B)Minimallyreplicatedblocks:5(100.0%)Over-replicatedblocks:0(0.0%)Under-replicatedblocks:5(100.0%)Mis-replicatedblocks:0(0.0%)Defaultreplicationfactor:2Averageblockreplication:1.0Corruptblocks:0Missingreplicas:2(100.0%)Numberofdata-nodes:1Numberofracks:1FSCKendedatFriJun1517:11:50CST2012in3milliseconds10用法hadoopdfsadmin[command]hadoopdfsadmin-help可以列出所有的可用命令主要的有一下幾個-safemode安全模式操作-report報告集群DFS的運行情況可以使用hadoopdfsadmin-help查看所有命令的用法dfsadmin11指文件系統(tǒng)所處的一種只讀的安全模式HDFS啟動時會在safemode狀態(tài)相關(guān)命令:HDFS的SafeMode$hadoopdfsadmin-safemodeget#安全模式當前狀態(tài)信息$hadoopdfsadmin-safemodeenter#進入安全模式$hadoopdfsadmin-safemodeleave#解除安全模式$hadoopdfsadmin-safemodewait#掛起,直到安全模式結(jié)束12NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartsecondarynamenodeDataNode同時啟動:$HADOOP_HOME_BASE/bin/hadoop-daemons.shstartdatanode單臺啟動:$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/start-dfs.shHDFS服務啟動13NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopsecondarynamenodeDataNode同時關(guān)閉:$HADOOP_HOME_BASE/bin/hadoop-daemons.shstopdatanode單臺關(guān)閉:$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/stop-dfs.shHDFS服務關(guān)閉14NameNode位置:$HADOOP_HOME_BASE/logs/hadoop-$USER-namenode-$HOSTNAME.log命令:tail-fn100$HADOOP_HOME_BASE/logs/hadoop-$USER-namenode-$HOSTNAME.logDataNode位置:$HADOOP_HOME_BASE/logs/hadoop-$USER-datanode-$HOSTNAME.log命令:tail-fn100$HADOOP_HOME_BASE/logs/hadoop-$USER-datanode-$HOSTNAME.log設置Log文件

的大小和數(shù)量修改core-site.xml中的參數(shù)hadoop.loghadoop.log如何查看HDFS日志15

查看不同組件的日志級別hadoopdaemonlog-getlevelhost:portpackageName設置組件的日志級別

hadoopdaemonlog–setlevlehost:portpackageNamelevel“l(fā)evel”DEBUG,INFO,ERROR,FATAL

端口為前臺頁面的端口,缺省為50070組件名稱(packageName)node.NameNodeorg.apache.hadoop.hdfs.server.datanode.DataNodeorg.apache.hadoop.hdfsorg.apache.hadoop如何設置日志級別16訪問:http://<NameNodehostname>:<port>如何查看HDFSWeb控制臺17.dir NameNode元數(shù)據(jù)存放位置默認值:使用core-site.xml中的hadoop.tmp.dir/dfs/namedfs.block.size對于新文件切分的大小,單位byte。默認是64M,建議是128M。每一個節(jié)點都要指定,包括客戶端。默認值:67108864dfs.data.dirDataNode在本地磁盤存放block的位置,可以是以逗號分隔的目錄列表,DataNode循環(huán)向磁盤中寫入數(shù)據(jù),每個DataNode可單獨指定與其它DataNode不一樣默認值:${hadoop.tmp.dir}/dfs/dataHDFShdfs-site.xml參數(shù)配置18node.handler.countNameNode用來處理來自DataNode的RPC請求的線程數(shù)量建議設置為DataNode數(shù)量的10%,一般在10~200個之間如設置太小,DataNode在傳輸數(shù)據(jù)的時候日志中會報告“connectonrefused"信息在NameNode上設定默認值:10dfs.datanode.handler.countDataNode用來連接NameNode的RPC請求的線程數(shù)量取決于系統(tǒng)的繁忙程度設置太小會導致性能下降甚至報錯在DataNode上設定默認值:3dfs.datanode.max.xcieversDataNode可以同時處理的數(shù)據(jù)傳輸連接數(shù)默認值:256建議值:4096HDFShdfs-site.xml參數(shù)配置19dfs.permissions

如果是true則檢查權(quán)限,否則不檢查(每一個人都可以存取文件)于NameNode上設定默認值:truedfs.datanode.du.reserved 在每個卷上面HDFS不能使用的空間大小在每個DataNode上面設定默認值:0建議為10737418240,即10G。需要結(jié)合MapReduce場景設置。dfs.datanode.failed.volumes.toleratedDataNode可以容忍損塊的磁盤數(shù)量,超過這個數(shù)量DataNode將會離線,所有在這個節(jié)點上面的block將會被重新復制默認是0,但是在有多塊磁盤的時候一般會增大這個值dfs.replication在文件被寫入的時候,每一塊將要被復制多少份默認是3份。建議3份在客戶端上設定通常也需要在DataNode上設定HDFShdfs-site.xml參數(shù)配置20文件系統(tǒng)的名字。通常是NameNode的hostname與port需要在每一個需要訪問集群的機器上指定,包括集群中的節(jié)點例如:hdfs://<your_namenode>:9000/fs.checkpoint.dir以逗號分隔的文件夾列表,SecondNameNode用來存儲checkpointimage文件如果多于一個文件夾,那么都會被寫入數(shù)據(jù)需要在SecondNameNode上設定默認值:${hadoop.tmp.dir}/dfs/namesecondaryhadoop.tmp.dir HDFS與本地磁盤的臨時文件默認是/tmp/hadoop-${}.需要在所有的節(jié)點中設定HDFScore-site.xml參數(shù)配置21erval當一個文件被刪掉后,它會被放到用戶目錄的.Trash目錄下,而不是立即刪掉經(jīng)過此參數(shù)設置的分鐘數(shù)之后,再刪掉數(shù)據(jù)默認是0,禁用此功能,建議1440(一天)io.設定在讀寫數(shù)據(jù)時的緩存大小,應該為硬件分頁大小的2倍默認是4096,建議為65536(64K)HDFScore-site.xml參數(shù)配置22HDFS-javaapi使用23HDFS開發(fā)基本步驟HDFSJavaAPI詳解ConfigurationPathStream、IOUtilsHDFSJavaAPI使用場景示例24實例化Configuration實例化根據(jù)配置文件選擇使用本地或分布式文件系統(tǒng)文件或目錄操作Stream

HDFS開發(fā)基本步驟25包org.apache.hadoop.conf構(gòu)造方法publicConfiguration()調(diào)用構(gòu)造方法Configuration(true)publicConfiguration(booleanloadDefaults)true:先加載缺省配置文件,再加載用戶指定文件(addResource)core-default.xml,core-site.xml以及通過addDefaultResource添加的文件名false:不加載缺省配置文件,需要通過addResource手動添加后加載的配置會覆蓋先加載的配置除了被指定為final的publicConfiguration(Configurationother)復制other參數(shù)信息Configuration26staticvoidaddDefaultResource(Stringname)添加默認配置文件,配置文件加載的順序是根據(jù)添加的順序參數(shù)是文件名,文件是在classpath中voidaddResource(InputStreamin)voidaddResource(Pathfile)本地文件voidaddResource(Stringname)classpath中的文件voidaddResource(URLurl)Configuration加載配置文件方法27先加載缺省配置文件,再加載用戶定義的配置文件對于每一個文件只加載一次:第一個在classpath出現(xiàn)的classpath的目錄順序$HADOOP_CONF_DIR$JAVA_HOME/lib/tools.jar如果$HADOOP_HOME目錄下有build目錄,則添加build下各子目錄$HADOOP_HOME/hadoop-core-*.jar$HADOOP_HOME/lib/*.jar用戶在hadoop-env.sh中定義的$HADOOP_CLASS_PATH當前作為hadoopjar…參數(shù)提交的JAR包配置文件加載順序28voidset(Stringname,Stringvalue)voidsetBoolean(Stringname,booleanvalue)voidsetInt(Stringname,Stringvalue)voidsetLong(Stringname,longvalue)voidsetFloat(Stringname,floatvalue)voidsetIfUnset(Stringname,Stringvalue)voidsetBooleanIfUnset(Stringname,booleanvalue)Stringget(Stringname)booleangetBoolean(Stringname,booleandefaultValue)Configuration設置/獲取參數(shù)方法29包org.apache.hadoop.fs構(gòu)造方法publicPath(StringpathString)publicPath(URIaUri)publicPath(Pathparent,Pathchild)publicPath(Stringparent,Stringchild)參數(shù)parent指定父目錄,參數(shù)child指定父目錄下的文件或子目錄publicPath(Stringscheme,Stringauthority,Stringpath)scheme:協(xié)議類型,譬如hdfs、file、s3authority:認證信息,譬如user:pwd@host:portpath:文件或目錄名如參數(shù)不符合RFC2396,則拋出異常Path30intdepth()返回路徑的深度StringgetName()返回路徑上最后的資源名稱PathgetParent()返回父目錄,如果已是根目錄則返回nullPathsuffix(Stringsuffix)參數(shù)suffix給Path增加后綴返回加完后綴的Path實例get(Configurationconf)返回該Path所屬的文件系統(tǒng)實例Path常用方法31包org.apache.hadoop.fs構(gòu)造方法protected()

是一個抽象類,不能通過new來創(chuàng)建通過靜態(tài)get(Configurationconf)方法獲得子類的實例fs.$scheme.implorg.apache.hadoop.hdfs.Distributed主要子類Local本地文件系統(tǒng)Distributed分布式文件系統(tǒng)32booleancreateNewf)不會覆蓋已有文件創(chuàng)建成功返回true,失敗返回falseFSDataOutputStreamcreate(Pathf)覆蓋已有文件創(chuàng)建文件并返回輸出流FSDataOutputStreamcreate(Pathf,booleanoverwrite)創(chuàng)建文件并返回輸出流FSDataOutputStreamcreate(Pathf,booleanoverwrite,intbuffer)FSDataOutputStreamcreate(Pathf,booleanoverwrite,int buffer,shortreplication,longblockSize)創(chuàng)建文件33FSDataInputStreamopen(Pathf)FSDataInputStreamopen(Pathf,intbufferSize)返回輸入流如果文件不存在會拋出異常不指定bufferSize時,會從Configuration中讀取io.,默認為4096字節(jié)打開文件34FSDataOutputStreamappend(Pathf)FSDataOutputStreamappend(Pathf,intbufferSize)塊不足64M時,會補足到64M塊達到64M之前,該塊不可見,ls看不到該塊新增的大小,也無法讀取不能同時多個writer追加同一個文件文件追加35voidcopyFromLocalFile(Pathsrc,Pathdst)目標文件存在,直接覆蓋voidcopyFromLocalFile(booleandelsrc,Pathsrc,Pathdst)根據(jù)參數(shù)delsrc,如果是true,拷貝完成之后直接刪除源文件voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Pathsrc,Pathdst)voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Path[]srcs,Pathdst)參數(shù)srcs指定多個本地文件或文件夾參數(shù)dst指定HDFS文件夾voidmoveFromLocalFile(Pathsrc,Pathdst)voidmoveFromLocalFile(Path[]srcs,Pathdst)從本地拷貝文件到HDFS36voidcopyToLocalFile(Pathsrc,Pathdst)voidcopyToLocalFile(booleandelsrc,Pathsrc,Pathdst)voidmoveToLocalFile(Pathsrc,Pathdst)沒有多文件拷貝函數(shù)會覆蓋已存在的本地文件dst從HDFS拷貝文件到本地37booleanmkdirs(Pathf)booleanmkdirs(Pathf,FsPermissionpermission)staticbooleanmkdirs(fs,Pathdir,FsPermissionpermission)支持多級目錄同時創(chuàng)建(類似mkdir-p)默認權(quán)限是755成功返回true目錄權(quán)限的含義r+x:

獲取文件列表w:創(chuàng)建(刪除)文件/子目錄

創(chuàng)建目錄38booleandelete(Pathf,booleanrecursive)刪除文件或目錄如果f是目錄,則參數(shù)recursive指定是否要遞歸刪除recursive是false,并且f不為空,會拋出異常刪除成功返回truef不存在時,會返回falsebooleandeleteOnExit(f)當關(guān)閉時,才會刪除如f是目錄,則遞歸刪除子目錄和文件booleanrename(Pathsrc,Pathdst)刪除及重命名39[]listStatus(Pathf)[]listStatus(Path[]dirs)[]listStatus(Pathf,PathFilterfilter)[]listStatus(Path[]dir,PathFilterfilter)列出文件或目錄的信息參數(shù)dir指定要查詢的多個目錄參數(shù)filter指定需要過濾規(guī)則PathFilter是一個接口,需要實現(xiàn)booleanaccept(Pathpath)方法,返回false,在返回結(jié)果中會過濾掉只返回列出指定目錄下的文件或目錄信息

信息包括:絕對路徑文件大小(單位:字節(jié))文件訪問時間塊大小、復制份數(shù)文件所屬用戶、組、訪問權(quán)限獲取文件或目錄信息40voidsetOwner(Pathp,Stringusername,Stringgroupname)設置文件或目錄所屬用戶及組參數(shù)p指定文件或目錄參數(shù)username,設置此文件或目錄的所屬用戶只返回列出指定目錄下的文件或目錄信息voidsetPermission(Pathp,FsPermissionpermission)設置文件或目錄權(quán)限參數(shù)p指定文件或目錄參數(shù)permission,指定權(quán)限,權(quán)限同linux權(quán)限雷同voidsetReplication(Pathf,shortreplication)設置文件復制份數(shù)參數(shù)f指定文件參數(shù)replication指定復制份數(shù)設置文件或目錄屬性41voidsetTimes(Pathf,longmtime,longatime)設置文件的修改及訪問時間參數(shù)f指定文件參數(shù)mtime,修改時間參數(shù)atime,訪問時間設置文件或目錄屬性42包org.apache.hadoop.fs繼承java.io.DataInputStream構(gòu)造方法publicFSDataInputStream(InputStreamin)輸入流對象實例化in參數(shù),輸入流的來源一般輸入流對象,通過方法獲得HDFS輸入流43包org.apache.hadoop.fs繼承java.io.DataOutputStream構(gòu)造方法publicFSDataOutputStream(OutputStreamout,stats)publicFSDataOutputStream(OutputStreamout,stats,longstartPosition)輸出流對象實例化out參數(shù),輸出流stats參數(shù)是對輸出流的相關(guān)的計數(shù),如bytesread,byteswrittenstats是對象startPosition參數(shù),開始寫入位置一般輸出流對象,通過方法HDFS輸出流44包org.apache.hadoop.fs構(gòu)造方法publicIOUtils()I/O幫助類,提供的都是靜態(tài)方法,不需要實例化

IOUtils構(gòu)造方法45publicstaticvoidcopyBytes(InputStreamin,outputStreamout,Configurationconf)publicstaticvoidcopyBytes(InputStreamin,outputStreamout,Configurationconf,booleanclose)從輸入流拷貝到輸出流參數(shù)in輸入流實例參數(shù)out輸出流實例參數(shù)conf,通過io.獲取緩存大小沒有設置io.,緩存默認為4096bytes參數(shù)close指定是否需要拷貝完成后,由此方法關(guān)閉輸入輸出流IOUtils拷貝流方法46publicstaticvoidcopyBytes(InputStreamin,outputStreamout,intbuffSize)publicstaticvoidcopyBytes(InputStreamin,outputStreamout,intbuffSize,booleanclose)publicstaticvoidcopyBytes(InputStreamin,outputStreamout,intlength,intbuffSize,booleanclose)從輸入流拷貝制定字節(jié)大小到輸出流參數(shù)in輸入流實例參數(shù)out輸出流實例參數(shù)length指定要拷貝的字節(jié)大小參數(shù)buffSize指定輸入輸出緩沖參數(shù)close指定是否需要拷貝完成后,由此方法關(guān)閉輸入輸出流IOUtils拷貝流方法47HDFS依賴Jar包來源集群中已部署的Hadoop路徑下$HADOOP_HOME_BASE/hadoop-core-1.0.0.jar$HADOOP_HOME_BASE/lib/*.jarJavaDoc位置集群中已部署Hadoop路徑下$HADOOP_HOME_BASE/docs/api/index.html

HDFS依賴的jar包及JavaDoc位置48創(chuàng)建HDFS文件(createNewFile)Configurationconfig=newConfiguration();hdfs=(config);Pathpath=newPath();booleanisCreated=hdfs.createNewFile(path);49從本地拷貝文件到HDFS(copyFromLocalFile)Configurationconfig=newConfiguration();hdfs=(config);PathsrcPath=newPath(srcFile);PathdstPath=newPath(dstFile);hdfs.copyFromLocalFile(srcPath,dstPath)50從HDFS讀取文件(open)Configurationconfig=newConfiguration();hdfs=(config);Pathpath=newPath(dstFile);FSDataInputStreaminputStream=hdfs.open(path);Textline=newText()LineReaderliReader=newLineReader(inputStream);while(liReader.readLine(line)>0){System.out.println(line);}inputStream.close();51追加方式寫入HDFS文件(append)Configurationconfig=newConfiguration();hdfs=(config);Pathpath=newPath(dstFile);FSDataOutputStreamout=hdfs.append(path);//在文件尾部,追加數(shù)據(jù)out.close();52列出目錄下的所有文件(listStatus)Configurationconfig=newConfiguration();hdfs=(config);Pathdir=newPath(dirName);[]=hdfs.listStatus(newPath[]{dir});53HDFS命令

HDFS中的文件權(quán)限:

讀權(quán)限(r)、寫權(quán)限(w)

執(zhí)行權(quán)限(x)(控制對目錄下的文件和子目錄的訪問)

HDFS的命令行格式:hadoop

fs

–cmd

<args>

cmd:具體的指令內(nèi)容

<args>:一系列可變的參數(shù)

命令catchmodchowncopyFromLocalcopyToLocalcpgetlsmkdirmoveFromLocalmvputrmtail

說明顯示非壓縮文件的內(nèi)容改變文件或目錄的訪問權(quán)限變更文件或目錄的所有者從本地復制文件到HDFS文件系統(tǒng)中從HDFS復制文件到本地復制文件或目錄從HDFS復制文件到本地列出文件和子目錄創(chuàng)建目錄將文件或目錄從本地移動到HDFS將文件或目錄源路徑移動到目的路徑將文件或目錄從本地移動復制HDFS刪除文件或空目錄顯示文件的最后1KB數(shù)據(jù)

示例-cat

hdfs:///file1-chmod

777

hdfs:///file1-chown

user1

hdfs:///file1-copyFromLocal

localf1

/usr/hadoop/file1-copyToLocal

/usr/hadoop/file1

localf1-cp

/usr/hadoop/file1

/usr/hadoop/file2-get

/usr/hadoop/file1

localf1-ls

/usr/hadoop/file1-mkdir

/usr/hadoop

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論