《Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(第3版)》全套教學(xué)課件_第1頁
《Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(第3版)》全套教學(xué)課件_第2頁
《Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(第3版)》全套教學(xué)課件_第3頁
《Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(第3版)》全套教學(xué)課件_第4頁
《Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(第3版)》全套教學(xué)課件_第5頁
已閱讀5頁,還剩386頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章Hadoop概述第1章-Hadoop概述第2章-Hadoop安裝與配置管理第3章-HDFS技術(shù)第4章-Yarn技術(shù)第5章-MapReduce技術(shù)第6章-HadoopI_O操作第7章-海量數(shù)據(jù)庫HBase技術(shù)第8章-ZooKeeper技術(shù)第9章-分布式數(shù)據(jù)倉庫技術(shù)Hive第10章-Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop第11章-Hadoop實(shí)時(shí)數(shù)據(jù)處理技術(shù)全套可編輯PPT課件1.Hadoop起源-LOGONutchGFS分布式存儲(chǔ)系統(tǒng)論文MapReduce分布式處理技術(shù)論文200420031.Hadoop起源-發(fā)展歷程1.Hadoop起源-發(fā)展歷程1.Hadoop起源–設(shè)計(jì)思想1.使用普通機(jī)器高性能,低成本2.數(shù)據(jù)冗余(HDFS)3.并行化處理(MR)4.移動(dòng)計(jì)算海量數(shù)據(jù)的情況下移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更高效2.Hadoop體系架構(gòu)–基本組件2.Hadoop體系架構(gòu)–生態(tài)3.Hadoop與分布式開發(fā)C/SB/S3.Hadoop與分布式開發(fā)hadoop應(yīng)用開發(fā)MapperReducer實(shí)現(xiàn)實(shí)現(xiàn)4.Hadoop應(yīng)用案例1、Hadoop在中國傳統(tǒng)文化的應(yīng)用2、Hadoop在搜索引擎中的應(yīng)用3、Hadoop在電商平臺(tái)中的應(yīng)用4.Hadoop應(yīng)用案例1、Hadoop在中國傳統(tǒng)文化的應(yīng)用文化遺產(chǎn)保護(hù):Hadoop可以用于存儲(chǔ)和管理大量的文化遺產(chǎn)數(shù)據(jù),例如歷史建筑、文物和藝術(shù)品等。這些數(shù)據(jù)可以被組織、分析和可視化,以幫助文化機(jī)構(gòu)和研究人員更好地了解和保護(hù)中國傳統(tǒng)文化。古籍?dāng)?shù)字化:Hadoop可以用于處理大規(guī)模的古籍?dāng)?shù)據(jù),包括掃描、OCR、文字識(shí)別和文本分析等。這有助于加快古籍?dāng)?shù)字化的進(jìn)程,使得更多的人能夠方便地訪問和研究中國傳統(tǒng)文化。民俗文化研究:Hadoop可以用于分析大規(guī)模的民俗文化數(shù)據(jù),例如節(jié)日慶典、民間傳說和習(xí)俗等。這可以幫助研究人員更好地了解和保護(hù)中國傳統(tǒng)的民俗文化,促進(jìn)文化多樣性的發(fā)展。語言文化保護(hù):Hadoop可以用于處理大規(guī)模的語言數(shù)據(jù),例如語音、文本和圖像等。這可以幫助保護(hù)和傳承中國傳統(tǒng)的語言文化,例如方言和少數(shù)民族語言等??偟膩碚f,Hadoop可以為中國傳統(tǒng)文化的保護(hù)、研究和傳承提供支持,幫助我們更好地了解和珍惜這些文化遺產(chǎn)。4.Hadoop應(yīng)用案例2、Hadoop在搜索引擎中的應(yīng)用

百度作為全球最大的中文搜索引擎公司,提供基于搜索引擎的各種產(chǎn)品,包括以網(wǎng)絡(luò)搜索為主的功能性搜索,以貼吧為主的社區(qū)搜索,針對(duì)區(qū)域、行業(yè)的垂直搜索、MP3音樂搜索以及百科等,幾乎覆蓋了中文網(wǎng)絡(luò)世界中所有的搜索需求。百度對(duì)海量數(shù)據(jù)處理的要求是比較高的,要在線下對(duì)數(shù)據(jù)進(jìn)行分析,還要在規(guī)定的時(shí)間內(nèi)處理完并反饋到平臺(tái)上。百度在互聯(lián)網(wǎng)領(lǐng)域的平臺(tái)需求要通過性能較好的云平臺(tái)進(jìn)行處理,Hadoop就是很好的選擇。在百度,Hadoop主要應(yīng)用于日志的存儲(chǔ)和統(tǒng)計(jì);網(wǎng)頁數(shù)據(jù)的分析和挖掘;商業(yè)分析,如用戶的行為和廣告關(guān)注度等;在線數(shù)據(jù)的反饋,及時(shí)得到在線廣告的點(diǎn)擊情況;用戶網(wǎng)頁的聚類,分析用戶的推薦度及用戶之間的關(guān)聯(lián)度。4.Hadoop應(yīng)用案例3、Hadoop在電商平臺(tái)中的應(yīng)用

在eBay上存儲(chǔ)著上億種商品的信息,而且每天有數(shù)百萬種的新商品在增加,因此需要用云系統(tǒng)來存儲(chǔ)和處理PB級(jí)別的數(shù)據(jù),而Hadoop則是個(gè)很好的選擇。Hadoop是建立在商業(yè)硬件上的容錯(cuò)、可擴(kuò)展、分布式的云計(jì)算框架,eBay利用Hadoop建立了一個(gè)大規(guī)模的集群系統(tǒng)——Athena,它被分為5層,如圖所示。TheEnd第2章Hadoop安裝與配置管理15掌握集群安裝過程原理熟悉SSH免密碼登錄原理了解Hadoop的關(guān)鍵配置選項(xiàng)

掌握動(dòng)態(tài)管理節(jié)點(diǎn)方法學(xué)習(xí)目標(biāo)168/21/2024參考書178/21/2024準(zhǔn)備與配置安裝環(huán)境188/21/2024安裝虛擬機(jī)和Linux,虛擬機(jī)推薦使用vmware,PC可以使用workstation,服務(wù)器可以使用ESXi,在管理上比較方便。ESXi還可以通過拷貝鏡像文件復(fù)制虛擬機(jī),復(fù)制后自動(dòng)修改網(wǎng)卡號(hào)和ip,非??旖?。如果只是實(shí)驗(yàn)用途,硬盤大約預(yù)留20-30G空間。以Centos為例,分區(qū)可以選擇默認(rèn),安裝選項(xiàng)選擇DesktopGnome,以及Server、ServerGUI即可。其它Linux,注意選項(xiàng)里應(yīng)包括ssh,vi(用于編輯配置文件),perl等(有些腳本里包含perl代碼需要解析)到Oracle官網(wǎng)下載javajdk安裝包,并且進(jìn)行安裝集群的概念198/21/2024計(jì)算機(jī)集群是一種計(jì)算機(jī)系統(tǒng),

它通過一組松散集成的計(jì)算機(jī)軟件和/或硬件連接起來高度緊密地協(xié)作完成計(jì)算工作。集群系統(tǒng)中的單個(gè)計(jì)算機(jī)通常稱為節(jié)點(diǎn),通常通過局域網(wǎng)連接。集群技術(shù)的特點(diǎn):通過多臺(tái)計(jì)算機(jī)完成同一個(gè)工作。達(dá)到更高的效率兩機(jī)或多機(jī)內(nèi)容、工作過程等完全一樣。如果一臺(tái)死機(jī),另一臺(tái)可以起作用三種運(yùn)行模式208/21/2024單機(jī)模式:安裝簡單,幾乎不用作任何配置,但僅限于調(diào)試用途

偽分布模式:在單節(jié)點(diǎn)上同時(shí)啟動(dòng)namenode、datanode、jobtracker、tasktracker、secondarynamenode等5個(gè)進(jìn)程,模擬分布式運(yùn)行的各個(gè)節(jié)點(diǎn)完全分布式模式:正常的Hadoop集群,由多個(gè)各司其職的節(jié)點(diǎn)構(gòu)成機(jī)器分配218/21/2024機(jī)器名偽分布式模式的安裝和配置步驟228/21/2024

下載并解壓Hadoop安裝包

進(jìn)入Hadoop的解壓目錄,編輯conf/hadoop-env.sh文件(注意不同版本后配置文件的位置有所變化)編輯conf目錄下core-site.xml、hdfs-site.xml和mapred-site.xml三個(gè)核心配置文件配置ssh,生成密鑰,使到ssh可以免密碼連接localhost格式化HDFS使用bin/start-all.sh啟動(dòng)Hadoop使用bin/stop-all.sh關(guān)閉HadoopStep1:各服務(wù)器安裝JDK238/21/2024上傳jdk-6u24-linux-i586.bin(下載的jdk文件)到/home/#cd/home/#./jdk-6u24-linux-i586.bin#mvjdk-6u24-linux-i586.binjdk#vi/etc/profile,在文件尾部添加exportJAVA_HOME=/home/jdkexportPATH=$JAVA_HOME/bin:$PATH保存退出#source/etc/profile#java-versionStep2:各服務(wù)器的網(wǎng)絡(luò)設(shè)置248/21/2024修改機(jī)器名#hostname<機(jī)器名>#vi/etc/sysconfig/networkHOSTNAME=<機(jī)器名>保存退出,重啟修改/etc/hosts修改/etc/sysconfig/network-scripts/相應(yīng)的網(wǎng)絡(luò)配置關(guān)閉防火墻#serviceiptablesstopifcfg-eth0文件參考:DEVICE="eth0"BOOTPROTO="static"ONBOOT="yes"TYPE="Ethernet"IPADDR=40PREFIX=24GATEWAY=hosts文件參考:40hadoop041hadoop142hadoop243hadoop3C:\WINDOWS\system32\drivers\etc\hostsStep3:SSH免密碼登錄258/21/2024從namenode到本身及各datanode免密碼登錄在各機(jī)器上執(zhí)行#ssh-keygen-b1024-trsa一路回車在~/.ssh/生成文件id_rsaid_rsa.pub在namenode機(jī)器上執(zhí)行:#cd~/.ssh/#scpid_rsa.pubroot@<各datanode的IP>:/home在各datanode機(jī)器上執(zhí)行:#cd/home/#catid_rsa.pub>>/root/.ssh/authorized_keys

Hadoop運(yùn)行過程中需要管理遠(yuǎn)端Hadoop守護(hù)進(jìn)程,在Hadoop啟動(dòng)以后,NameNode是通過SSH(SecureShell)來無密碼登錄啟動(dòng)和停止各個(gè)DataNode上的各種守護(hù)進(jìn)程的同樣原理,DataNode上也能使用SSH無密碼登錄到NameNode。Step4:在namenode安裝Hadoop268/21/2024用軟件上傳hadoop文件到節(jié)點(diǎn)/home/hadoop目錄解壓文件#cd/home#tar-zxvfhadoop-*.tar.gz#mvhadoop-*hadoop修改/etc/profile#vi/etc/profileexportJAVA_HOME=/home/javaexportHADOOP_HOME=/home/hadoopexportPATH=$JAVA_HOME/bin:$PATH::$HADOOP_HOME/bin保存退出#source/etc/profileStep5:修改Hadoop的配置文件278/21/2024Step5:修改Hadoop的配置文件288/21/2024修改conf/hadoop-env.shexportJAVA_HOME=/home/javaexportHADOOP_HEAPSIZE=1024exportHADOOP_PID_DIR=/home/hadoop/pids保存退出配置conf/core-site.xml,增加以下內(nèi)容<property><name></name><value>hdfs://hadoop0:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property>Step5:修改Hadoop的配置文件298/21/2024配置conf/hdfs-site.xml<property><name>dfs.replication</name><value>2</value></property><property><name>dfs.hosts.exclude</name><value>/home/hadoop/conf/excludes</value></property>配置conf/mapred-site.xml<property><name>mapred.job.tracker</name><value>hdfs://hadoop0:9001/</value></property>Step5:修改Hadoop的配置文件308/21/2024配置conf/mastersHadoop0配置conf/slaveshadoop1hadoop2hadoop3Step6:復(fù)制hadoop到各datanode并修改318/21/2024把hadoop0的hadoop目錄、jdk目錄、/etc/hosts、/etc/profile復(fù)制到hadoop1,hadoop2、hadoop3節(jié)點(diǎn)#cd$HADOOP_HOME/..#scp-rhadoophadoop1:/home#scp-rhadoophadoop2:/home#scp-rhadoophadoop3:/homeStep7:啟動(dòng)/停止Hadoop集群328/21/2024在hadoop0上第一次啟動(dòng)Hadoop,必須先格式化namenode#cd$HADOOP_HOME/bin#hadoopnamenode–format啟動(dòng)Hadoop#cd$HADOOP_HOME/bin#./start-all.sh如果啟動(dòng)過程,報(bào)錯(cuò)safemode相關(guān)的Exception執(zhí)行命令#hadoopdfsadmin-safemodeleave然后再啟動(dòng)Hadoop停止Hadoopcd$HADOOP_HOME/bin#./stop-all.sh終端查看集群狀態(tài):#hadoopdfsadmin-report增加節(jié)點(diǎn)338/21/20241.修改新節(jié)點(diǎn)的/etc/hosts,增加namenode的主機(jī)名與IP2.修改namenode的配置文件conf/slaves添加新增節(jié)點(diǎn)的ip或host3.在新節(jié)點(diǎn)的機(jī)器上,啟動(dòng)服務(wù)#cd$HADOOP_HOME/bin#./hadoop-daemon.shstartdatanode#./hadoop-daemon.shstarttasktracker4.在NameNode節(jié)點(diǎn)執(zhí)行#hadoopdfsadmin-refreshNodes5.均衡block在新節(jié)點(diǎn)上執(zhí)行(如果是增加多個(gè)節(jié)點(diǎn),只需在一個(gè)新節(jié)點(diǎn))#cd$HADOOP_HOME/bin#./start-balancer.sh注意事項(xiàng):1.必須確保slave的firewall已關(guān)閉;2.確保新的slave的ip已經(jīng)添加到master及其他slaves的/etc/hosts中,反之也要將master及其他slave的ip添加到新的slave的/etc/hosts中刪除節(jié)點(diǎn)348/21/2024在hadoop0上修改conf/hdfs-site.xml文件<property>

<name>dfs.hosts.exclude</name>

<value>/usr/local/hadoop/conf/excludes</value></property>確定要下架的機(jī)器dfs.hosts.exclude定義的文件內(nèi)容為,每個(gè)需要下線的機(jī)器,一行一個(gè)。強(qiáng)制重新加載配置#hadoopdfsadmin-refreshNodes關(guān)閉節(jié)點(diǎn)

hadoopdfsadmin-report可以查看到現(xiàn)在集群上連接的節(jié)點(diǎn)正在執(zhí)行Decommission,會(huì)顯示:

DecommissionStatus:Decommissioninprogress執(zhí)行完畢后,會(huì)顯示:

DecommissionStatus:Decommissioned再次編輯excludes文件一旦完成了機(jī)器下架,它們就可以從excludes文件移除了登錄要下架的機(jī)器,會(huì)發(fā)現(xiàn)DataNode進(jìn)程沒有了,但是TaskTracker依然存在,需要手工處理一下安全模式358/21/2024在分布式文件系統(tǒng)啟動(dòng)的時(shí)候,開始的時(shí)候會(huì)有安全模式,當(dāng)分布式文件系統(tǒng)處于安全模式的情況下,文件系統(tǒng)中的內(nèi)容不允許修改也不允許刪除,直到安全模式結(jié)

束。安全模式主要是為了系統(tǒng)啟動(dòng)的時(shí)候檢查各個(gè)DataNode上數(shù)據(jù)塊的有效性,同時(shí)根據(jù)策略必要的復(fù)制或者刪除部分?jǐn)?shù)據(jù)塊。運(yùn)行期通過命令也可以進(jìn)入

安全模式。在實(shí)踐過程中,系統(tǒng)啟動(dòng)的時(shí)候去修改和刪除文件也會(huì)有安全模式不允許修改的出錯(cuò)提示,只需要等待一會(huì)兒即可。NameNode在啟動(dòng)的時(shí)候首先進(jìn)入安全模式,如果datanode丟失的block達(dá)到一定的比例(1-dfs.safemode.threshold.pct),則系統(tǒng)會(huì)一直處于安全模式狀態(tài)即只讀狀態(tài)。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS啟動(dòng)的時(shí)候,如果DataNode上報(bào)的block個(gè)數(shù)達(dá)到了

元數(shù)據(jù)記錄的block個(gè)數(shù)的0.999倍才可以離開安全模式,否則一直是這種只讀模式。如果設(shè)為1則HDFS永遠(yuǎn)是處于SafeMode。hadoopdfsadmin-safemodeenter|leave|get|wait基準(zhǔn)測試368/21/2024hadoop-test-*.jarTestDFSIO-write-nrFiles10-fileSize1000hadoop-test-*.jarTestDFSIO-read-nrFiles10-fileSize1000集群監(jiān)控——Web378/21/2024查看MapReduce相關(guān)http://hadoop0:50030/查看HDFS相關(guān)Hadoop管理員命令388/21/2024hadoopjob–list#列出正在運(yùn)行的Jobhadoopjob–kill<job_id>#killjobhadoopfsck/#檢查HDFS塊狀態(tài),是否損壞hadoopfsck/-delete#檢查HDFS塊狀態(tài),刪除損壞塊hadoopdfsadmin–report#檢查HDFS狀態(tài),包括DN信息hadoopdfsadmin–safemodeenter|leaveTheEnd第3章HDFS技術(shù)什么是分布式文件系統(tǒng)和HDFSHDFS設(shè)計(jì)目標(biāo)HDFS的基本組件HDFS架構(gòu)圖和工作原理HDFS的shell操作java接口及常用api學(xué)習(xí)目標(biāo)412024/8/21分布式文件系統(tǒng)和HDFS

422024/8/21分布式文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。分布式文件系統(tǒng)的基于客戶機(jī)/服務(wù)器模式。通常,一個(gè)分布式文件系統(tǒng)提供多個(gè)供用戶訪問的服務(wù)器。分布式文件系統(tǒng)一般都會(huì)提供備份和容錯(cuò)的功能分布式文件系統(tǒng)一般都基于操作系統(tǒng)的本地文件系統(tǒng)ext3,ext4NTFS為什么需要分布式文件系統(tǒng)傳統(tǒng)文件系統(tǒng)最大的問題是容量和吞吐量的限制多用戶多應(yīng)用的并行讀寫是分布式文件系統(tǒng)產(chǎn)生的根源一塊硬盤的讀寫性能,比不上多塊硬盤同時(shí)讀寫的性能1HDD=75MB/sec1000HDDs=75GB/sec擴(kuò)充存儲(chǔ)空間的成本低廉可提供冗余備份可以為分布式計(jì)算提供基礎(chǔ)432024/8/21什么是HDFSHDFS=HadoopDistributedFileSystemHDFS是一個(gè)使用Java實(shí)現(xiàn)的、分布式的、可橫向擴(kuò)展的文件系統(tǒng)是Hadoop的核心組件基于*nix442024/8/21HDFS的設(shè)計(jì)目標(biāo)基于廉價(jià)的普通硬件,可以容忍硬件出錯(cuò)系統(tǒng)中的某一臺(tái)或幾臺(tái)服務(wù)器出現(xiàn)故障的時(shí)候,系統(tǒng)仍可用且數(shù)據(jù)保持完整大數(shù)據(jù)集(大文件)HDFS適合存儲(chǔ)大量文件,總存儲(chǔ)量可以達(dá)到PB,EB級(jí)HDFS適合存儲(chǔ)大文件,單個(gè)文件大小一般在百M(fèi)B級(jí)之上文件數(shù)目適中簡單的一致性模型HDFS應(yīng)用程序需要一次寫入,多次讀取一個(gè)文件的訪問模式支持追加(append)操作,但無法更改已寫入數(shù)據(jù)順序的數(shù)據(jù)流訪問HDFS適合用于處理批量數(shù)據(jù),而不適合用于隨機(jī)定位訪問側(cè)重高吞吐量的數(shù)據(jù)訪問,可以容忍數(shù)據(jù)訪問的高延遲為把“計(jì)算”移動(dòng)到“數(shù)據(jù)”提供基礎(chǔ)和便利452024/8/21HDFS的特點(diǎn)(1)簡單一致性(2)故障檢測和自動(dòng)恢復(fù)(3)流式數(shù)據(jù)訪問(4)支持超大文件(5)優(yōu)化的讀?。?)數(shù)據(jù)完整性462024/8/21HDFS架構(gòu)HDFS是典型的主從架構(gòu),一個(gè)主節(jié)點(diǎn)(NameNode或者M(jìn)etadataNode),負(fù)責(zé)系統(tǒng)命名空間(NameSpace)的管理、客戶端文件操作的控制和存儲(chǔ)任務(wù)的管理分配;多個(gè)從節(jié)點(diǎn)或者說是數(shù)據(jù)節(jié)點(diǎn)(DataNode),提供真實(shí)文件數(shù)據(jù)的物理支持。HDFS架構(gòu)塊元數(shù)據(jù)NameNodeDataNode客戶端塊(Block)在傳統(tǒng)的塊存儲(chǔ)介質(zhì)中,塊是讀寫的最小數(shù)據(jù)單位(扇區(qū))傳統(tǒng)文件系統(tǒng)基于存儲(chǔ)塊進(jìn)行操作為了節(jié)省文件分配表空間,會(huì)對(duì)物理存儲(chǔ)塊進(jìn)行整合,一般大小為4096字節(jié)HDFS也使用了塊的概念,但是默認(rèn)大小設(shè)為64M字節(jié)可針對(duì)每個(gè)文件配置,由客戶端指定每個(gè)塊有一個(gè)自己的全局IDHDFS將一個(gè)文件分為一個(gè)或數(shù)個(gè)塊來存儲(chǔ)每個(gè)塊是一個(gè)獨(dú)立的存儲(chǔ)單位以塊為單位在集群服務(wù)器上分配存儲(chǔ)與傳統(tǒng)文件系統(tǒng)不同的是,如果實(shí)際數(shù)據(jù)沒有達(dá)到塊大小,則并不實(shí)際占用磁盤空間如果一個(gè)文件是200M,則它會(huì)被分為4個(gè)塊:64+64+64+8492024/8/21使用塊的好處當(dāng)一個(gè)文件大于集群中任意一個(gè)磁盤的時(shí)候,文件系統(tǒng)可以充分利用集群中所有的磁盤管理塊使底層的存儲(chǔ)子系統(tǒng)相對(duì)簡單塊更加適合備份,從而為容錯(cuò)和高可用性的實(shí)現(xiàn)帶來方便502024/8/21塊的冗余備份每個(gè)塊在集群上會(huì)存儲(chǔ)多份(replica)默認(rèn)復(fù)制份數(shù)為3可針對(duì)每個(gè)文件配置,由客戶端指定可動(dòng)態(tài)修改某個(gè)塊的所有備份都是同一個(gè)ID系統(tǒng)無需記錄“哪些塊其實(shí)是同一份數(shù)據(jù)”系統(tǒng)可以根據(jù)機(jī)架的配置自動(dòng)分配備份位置第一份在集群的某個(gè)機(jī)架的某臺(tái)機(jī)器上其他兩份在另外的一個(gè)機(jī)架的兩臺(tái)機(jī)器上此策略是性能與冗余性的平衡機(jī)架信息需要手工配置512024/8/21HDFS的元數(shù)據(jù)元數(shù)據(jù)包括文件系統(tǒng)目錄樹信息

文件名,目錄名

文件和目錄的從屬關(guān)系

文件和目錄的大小,創(chuàng)建及最后訪問時(shí)間

權(quán)限文件和塊的對(duì)應(yīng)關(guān)系

文件由哪些塊組成塊的存放位置機(jī)器名,塊IDHDFS對(duì)元數(shù)據(jù)和實(shí)際數(shù)據(jù)采取分別存儲(chǔ)的方法元數(shù)據(jù)存儲(chǔ)在一臺(tái)指定的服務(wù)器上(NameNode)實(shí)際數(shù)據(jù)儲(chǔ)存在集群的其他機(jī)器的本地文件系統(tǒng)中(DataNode)2024/8/2152NameNodeNameNode是用來管理文件系統(tǒng)命名空間的組件一個(gè)HDFS集群只有一臺(tái)NameNode一個(gè)HDFS集群只有一個(gè)命名空間,一個(gè)根目錄NameNode上存放了HDFS的元數(shù)據(jù)一個(gè)HDFS集群只有一份元數(shù)據(jù)目前有單點(diǎn)故障的問題元數(shù)據(jù)保存在NameNode的內(nèi)存當(dāng)中,以便快速查詢1G內(nèi)存大致可以存放1,000,000個(gè)塊對(duì)應(yīng)的元數(shù)據(jù)信息按缺省每塊64M計(jì)算,大致對(duì)應(yīng)64T實(shí)際數(shù)據(jù)2024/8/2153DataNode塊的實(shí)際數(shù)據(jù)存放在DataNode上每個(gè)塊會(huì)在本地文件系統(tǒng)產(chǎn)生兩個(gè)文件,一個(gè)是實(shí)際的數(shù)據(jù)文件,另一個(gè)是塊的附加信息文件,其中包括數(shù)據(jù)的校驗(yàn)和,生成時(shí)間DataNode通過心跳包(Heartbeat)與NameNode通訊客戶端讀取/寫入數(shù)據(jù)的時(shí)候直接與DataNode通信2024/8/2154HDFS客戶端需要訪問HDFS文件服務(wù)的用戶或應(yīng)用命令行客戶端同一個(gè)Hadoop安裝包API客戶端Java庫非POSIX接口封裝了通信細(xì)節(jié)2024/8/2155HDFS架構(gòu)圖2024/8/2156元數(shù)據(jù)的持久化NameNode里使用兩個(gè)非常重要的本地文件來保存元數(shù)據(jù)信息:fsimagefsimage里保存了文件系統(tǒng)目錄樹信息fsimage里保存了文件和塊的對(duì)應(yīng)關(guān)系editsedits保存文件系統(tǒng)的更改記錄(journal)當(dāng)客戶端對(duì)文件進(jìn)行寫操作(包括新建或移動(dòng))的時(shí)候,操作首先記入edits,成功后才會(huì)更改內(nèi)存中的數(shù)據(jù)并不會(huì)立刻更改硬盤上的fsimage塊的位置信息并不做持久化2024/8/2157元數(shù)據(jù)的載入和更新NameNode啟動(dòng)時(shí)通過fsimage讀取元數(shù)據(jù),載入內(nèi)存執(zhí)行edits中的記錄,在內(nèi)存中生成最新的元數(shù)據(jù)清空edits,保存最新的元數(shù)據(jù)到fsimage收集DataNode匯報(bào)的塊的位置信息NameNode運(yùn)行時(shí)

對(duì)文件創(chuàng)建和寫操作,記錄到edits更新內(nèi)存中的元數(shù)據(jù)收集DataNode匯報(bào)的塊的創(chuàng)建和復(fù)制信息2024/8/2158HDFS創(chuàng)建文件流程客戶端客戶端請求NameNode在命名空間中建立新的文件元信息如果不能創(chuàng)建文件則NameNode會(huì)返回失敗文件已存在資源不足如創(chuàng)建成功,客戶端得到此文件的寫保護(hù)鎖NameNodeNamenode檢查集群和文件狀態(tài)創(chuàng)建寫保護(hù)鎖來保證只有一個(gè)客戶端在操作該文件建立該文件的元信息把創(chuàng)建文件這個(gè)事件加入edits為該文件分配塊,以及塊的冗余備份位置2024/8/2159HDFS寫操作流程客戶端寫一個(gè)文件并不是直接寫到HDFS上HDFS客戶端接收用戶數(shù)據(jù),并把內(nèi)容緩存在本地當(dāng)本地緩存收集足夠一個(gè)HDFS塊大小的時(shí)候,客戶端同NameNode通訊注冊一個(gè)新的塊注冊塊成功后,NameNode會(huì)給客戶端返回一個(gè)DataNode的列表列表中是該塊需要存放的位置,包括冗余備份客戶端向列表中的第一個(gè)DataNode寫入塊當(dāng)完成時(shí),第一個(gè)DataNode向列表中的下個(gè)DataNode發(fā)送寫操作,并把數(shù)據(jù)已收到的確認(rèn)信息給客戶端,同時(shí)發(fā)送確認(rèn)信息給NameNode之后的DataNode重復(fù)之上的步驟當(dāng)列表中所有DataNode都接收到數(shù)據(jù)并且由最后一個(gè)DataNode校驗(yàn)數(shù)據(jù)正確性完成后,返回確認(rèn)信息給客戶端收到所有DataNode的確認(rèn)信息后,客戶端刪除本地緩存客戶端繼續(xù)發(fā)送下一個(gè)塊,重復(fù)以上步驟當(dāng)所有數(shù)據(jù)發(fā)送完成后,寫操作完成2024/8/2160HDFS寫操作流程圖2024/8/2161HDFS的讀操作流程客戶端與NameNode通訊獲取文件的塊位置信息,其中包括了塊的所有冗余備份的位置信息:DataNode的列表客戶端獲取文件位置信息后直接同有文件塊的DataNode通訊,讀取文件如果第一個(gè)DataNode無法連接,客戶端將自動(dòng)聯(lián)系下一個(gè)DataNode如果塊數(shù)據(jù)的校驗(yàn)值出錯(cuò),則客戶端需要向NameNode報(bào)告,并自動(dòng)聯(lián)系下一個(gè)DataNode2024/8/2162HDFS追加寫(append)的操作流程客戶端與NameNode通訊,獲得文件的寫保護(hù)鎖及文件最后一個(gè)塊的位置(DataNode列表)客戶端挑選一個(gè)DataNode作為主寫入節(jié)點(diǎn),并對(duì)其余節(jié)點(diǎn)上的該數(shù)據(jù)塊加鎖開始寫入數(shù)據(jù)與普通寫入流程類似,依次更新各個(gè)DataNode上的數(shù)據(jù)更新時(shí)間戳和校驗(yàn)和最后一個(gè)塊寫滿,并且所有備份塊都完成寫入后,向NameNode申請下一個(gè)數(shù)據(jù)塊2024/8/2163客戶端和HDFS服務(wù)器端配置文件的關(guān)系客戶端的配置文件名與服務(wù)器端相同,字段名也相同客戶端不會(huì)從HDFS集群端同步配置文件客戶端只使用部分配置信息dfs.block.sizedfs.replication如果客戶端沒有配置信息,則使用客戶端Hadoop程序包里的缺省值而不是服務(wù)器端的值2024/8/2164HDFS的安全性和用戶認(rèn)證缺省情況下,Hadoop不啟用認(rèn)證采用客戶端系統(tǒng)的登錄用戶名或可以通過API設(shè)置從而,雖然HDFS有權(quán)限控制,但并沒有安全性可言可以在NameNode上啟用用戶認(rèn)證目前只支持Kerberos可以與LDAP集成2024/8/2165SecondaryNameNode不是備份節(jié)點(diǎn)SecondaryNameNode的主要的工作是階段性的合并fsimage和edits文件,以此來控制edits的文件大小在合理的范圍為了縮短集群重啟時(shí)NameNode重建fsimage的時(shí)間在NameNode硬盤損壞的情況下,SecondaryNameNode也可用作數(shù)據(jù)恢復(fù),但絕不是全部一般情況下SecondaryNamenode運(yùn)行在不同與NameNode的主機(jī)上,并且它的內(nèi)存需求和NameNode是一樣的一個(gè)特殊的角色:SecondaryNameNode662024/8/21SecondaryNameNode的運(yùn)行過程SecondaryNameNode根據(jù)配置好的策略決定多久做一次合并fs.checkpoint.period和fs.checkpoint.size通知NameNode現(xiàn)在需要回滾edits日志,此時(shí)NameNode的新操作將寫入新的edits文件SecondaryNameNode通過HTTP從NameNode取得fsimage和editsSecondaryNameNode將fsimage載入內(nèi)存,執(zhí)行所有edits中的操作,新建新的完整的fsimageSecondaryNameNode將新的fsimage傳回NameNodeNameNode替換為新的fsimage并且記錄此checkpoint的時(shí)間2024/8/2167NameNode與SecondaryNameNode2024/8/2168HDFS服務(wù)進(jìn)程N(yùn)ameNodeSecondaryNameNodeDataNode使用jps查看HDFS服務(wù)進(jìn)程24913NameNode16566SecondaryNameNode15744DataNode2024/8/2169HDFS的未來發(fā)展高可用性多NameNode自治目前已在2.0版本中但還不夠成熟,在生產(chǎn)環(huán)境使用前需要多做測試2024/8/2170HDFS中所有對(duì)文件的操作都需要先通過NameNode,如果NameNode出現(xiàn)問題,這個(gè)集群將不可用維護(hù)硬件失效軟件失效操作失誤解決方案:為NameNode提供備份節(jié)點(diǎn)HDFS高可用性712024/8/21HDFS高可用性的實(shí)現(xiàn)方式2024/8/2172HDFS高可用性實(shí)現(xiàn)細(xì)節(jié)把元數(shù)據(jù)信息存在第三方地點(diǎn)只需保存fsimage和editsActiveNN和StandbyNN通過開源組件ZooKeeper來決定主從StandbyNN從第三方地點(diǎn)實(shí)時(shí)讀取edits當(dāng)ActiveNN失敗,切換到StandbyNN時(shí),StandbyNN需要確保讀取完所有edits之后才能對(duì)外提供服務(wù)塊位置信息Datanode同時(shí)匯報(bào)給兩個(gè)NameNode客戶端需要知道有兩個(gè)NameNode存在如果ActiveNamenode失效,客戶端可以自動(dòng)的將操作發(fā)往Standby節(jié)點(diǎn)2024/8/2173NameNode的自治(Federation)NameNode的瓶頸內(nèi)存客戶端的并發(fā)訪問解決方案拆分目錄樹共享DataNode資源池2024/8/2174普通NameNode的架構(gòu)層次2024/8/2175NameNode自治的實(shí)現(xiàn)方式2024/8/2176HDFS命令行工具HDFS安全模式啟動(dòng)、停止HDFS服務(wù)如何查看HDFS日志如何查看HDFSWeb控制臺(tái)HDFS參數(shù)配置HDFS實(shí)戰(zhàn)772024/8/21HDFS命令行工具HadoopFilesystemshell$HADOOP_HOME_BASE/bin/hadoopfs<args>FSshell使用URIs地址Schema://autority/path例如hdfs://namenodehost:port/folder1/folder2file:///home/tcloud/child如果不指定schema,則使用配置文件中的默認(rèn)地址可以使用hadoopfs–help查看所有命令2024/8/2178cat用途顯示一個(gè)或多個(gè)文件內(nèi)容到控制臺(tái)使用方法hadoopfs-catURI[URI...]例子:hadoopfs-cathdfs://host1:port1/file1hdfs://host2:port2/file2hadoopfs-catfile:///file3/user/hadoop/file42024/8/2179put/copyFromLocal用途將本地一個(gè)或多個(gè)文件導(dǎo)入HDFS以上兩個(gè)命令唯一的不同時(shí)copyFromLocal的源只能是本地文件,而put可以讀取stdin的數(shù)據(jù)使用方法hadoopfs-put/copyFromLocal<localsrc>URI例子:hadoopfs-putlocalfile.txt/user/hadoop/hadoopfile.txthadoopfs-putlocalfile1localfile2/user/hadoop/hadoopdirhadoopfs-putlocalfilehdfs://host:port/hadoop/hadoopfilehadoopfs-put-hdfs://host:port/hadoop/hadoopfilefromstdin2024/8/2180get/copyToLocal用途將HDFS中的一個(gè)或多個(gè)文件導(dǎo)出到本地文件系統(tǒng)使用方法hadoopfs-get/copyToLocal[-ignorecrc][-crc]URI<localsrc>例子:hadoopfs-get/user/hadoop/hadoopfilelocalfilehadoopfs-gethdfs://host:port/user/hadoop/filelocalfile2024/8/2181ls/lsr用途列出文件夾目錄信息lsr遞歸顯示文件子目錄使用方法hadoopfs-ls/lsrURI例子:[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.sh2024/8/2182fsck用法hadoopfsck[GENERIC_OPTIONS]<path>[-move|-delete|-openforwrite][-files[-blocks[-locations|-racks]]]檢查dfs的文件的健康狀況只能運(yùn)行在master上[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_8664072905926163771_1304.TargetReplicasis2butfound1replica(s).2024/8/2183fsckStatus: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:50CST2012in3milliseconds2024/8/2184dfsadmin用法hadoopdfsadmin[command]hadoopdfsadmin-help可以列出所有的可用命令主要的有一下幾個(gè)-safemode安全模式操作-report報(bào)告集群DFS的運(yùn)行情況可以使用hadoopdfsadmin-help查看所有命令的用法2024/8/2185HDFS的SafeMode指文件系統(tǒng)所處的一種只讀的安全模式HDFS啟動(dòng)時(shí)會(huì)在safemode狀態(tài)相關(guān)命令:$hadoopdfsadmin-safemodeget#安全模式當(dāng)前狀態(tài)信息$hadoopdfsadmin-safemodeenter#進(jìn)入安全模式$hadoopdfsadmin-safemodeleave#解除安全模式$hadoopdfsadmin-safemodewait#掛起,直到安全模式結(jié)束2024/8/2186HDFS服務(wù)啟動(dòng)NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartsecondarynamenodeDataNode同時(shí)啟動(dòng):$HADOOP_HOME_BASE/bin/hadoop-daemons.shstartdatanode單臺(tái)啟動(dòng):$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/start-dfs.sh2024/8/2187HDFS服務(wù)關(guān)閉NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopsecondarynamenodeDataNode同時(shí)關(guān)閉:$HADOOP_HOME_BASE/bin/hadoop-daemons.shstopdatanode單臺(tái)關(guān)閉:$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/stop-dfs.sh2024/8/2188如何查看HDFS日志NameNode位置:$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設(shè)置Log文件

的大小和數(shù)量修改core-site.xml中的參數(shù)hadoop.logfile.sizehadoop.logfile.count2024/8/2189如何設(shè)置日志級(jí)別

查看不同組件的日志級(jí)別hadoopdaemonlog-getlevelhost:portpackageName設(shè)置組件的日志級(jí)別

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

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

如果是true則檢查權(quán)限,否則不檢查(每一個(gè)人都可以存取文件)于NameNode上設(shè)定默認(rèn)值:truedfs.datanode.du.reserved 在每個(gè)卷上面HDFS不能使用的空間大小在每個(gè)DataNode上面設(shè)定默認(rèn)值:0建議為10737418240,即10G。需要結(jié)合MapReduce場景設(shè)置。dfs.datanode.failed.volumes.toleratedDataNode可以容忍損塊的磁盤數(shù)量,超過這個(gè)數(shù)量DataNode將會(huì)離線,所有在這個(gè)節(jié)點(diǎn)上面的block將會(huì)被重新復(fù)制默認(rèn)是0,但是在有多塊磁盤的時(shí)候一般會(huì)增大這個(gè)值dfs.replication在文件被寫入的時(shí)候,每一塊將要被復(fù)制多少份默認(rèn)是3份。建議3份在客戶端上設(shè)定通常也需要在DataNode上設(shè)定2024/8/2194HDFS

core-site.xml參數(shù)配置文件系統(tǒng)的名字。通常是NameNode的hostname與port需要在每一個(gè)需要訪問集群的機(jī)器上指定,包括集群中的節(jié)點(diǎn)例如:hdfs://<your_namenode>:9000/fs.checkpoint.dir以逗號(hào)分隔的文件夾列表,SecondNameNode用來存儲(chǔ)checkpointimage文件如果多于一個(gè)文件夾,那么都會(huì)被寫入數(shù)據(jù)需要在SecondNameNode上設(shè)定默認(rèn)值:${hadoop.tmp.dir}/dfs/namesecondaryhadoop.tmp.dir HDFS與本地磁盤的臨時(shí)文件默認(rèn)是/tmp/hadoop-${}.需要在所有的節(jié)點(diǎn)中設(shè)定2024/8/2195HDFS

core-site.xml參數(shù)配置erval當(dāng)一個(gè)文件被刪掉后,它會(huì)被放到用戶目錄的.Trash目錄下,而不是立即刪掉經(jīng)過此參數(shù)設(shè)置的分鐘數(shù)之后,再刪掉數(shù)據(jù)默認(rèn)是0,禁用此功能,建議1440(一天)io.file.buffer.size設(shè)定在讀寫數(shù)據(jù)時(shí)的緩存大小,應(yīng)該為硬件分頁大小的2倍默認(rèn)是4096,建議為65536(64K)2024/8/2196Eclipse開發(fā)環(huán)境介紹HDFS開發(fā)基本步驟HDFSJavaAPI詳解ConfigurationPathFileSystemStream、IOUtilsHDFSJavaAPI使用場景示例FuseHDFSWebHDFSRESTfulAPIHDFS-javaapi

使用972024/8/21

HDFS開發(fā)基本步驟實(shí)例化Configuration實(shí)例化FileSystem根據(jù)配置文件選擇使用本地或分布式文件系統(tǒng)文件或目錄操作Stream2024/8/2198Eclipse開發(fā)環(huán)境

菜單欄

按鈕欄

包導(dǎo)航區(qū)代碼編輯區(qū)

視圖切換按鈕相關(guān)關(guān)聯(lián)顯示區(qū)

代碼聯(lián)動(dòng)顯示區(qū)2024/8/2199Eclipse開發(fā)環(huán)境

2024/8/21100Eclipse開發(fā)環(huán)境填寫項(xiàng)目名稱2024/8/21101Eclipse開發(fā)環(huán)境2024/8/21102Eclipse開發(fā)環(huán)境建立第三方庫依賴文件夾-lib2024/8/21103Eclipse開發(fā)環(huán)境

拷貝項(xiàng)目所依賴的第三方類庫到lib文件夾2024/8/21104Eclipse開發(fā)環(huán)境把第三方類庫加到項(xiàng)目中的CLASSPATH下2024/8/21105Eclipse開發(fā)環(huán)境

可以看到剛加到CLASSPATH下的把第三方類庫2024/8/21106Eclipse開發(fā)環(huán)境

把src源代碼目錄刪除,根據(jù)類別建立源代碼及測試代碼目錄src/main/javajava源文件存放處src/main/resources配置文件存放處,如hadoop配置文件(core-site.xml)src/test/javajava測試代碼存放處src/test/resources測試代碼配置文件存放處

2024/8/21107Eclipse開發(fā)環(huán)境

新建Java類,可以使用HadoopAPI了2024/8/21108Eclipse開發(fā)環(huán)境在此編輯你的代碼2024/8/21109Eclipse開發(fā)環(huán)境選擇[File]=>Export,導(dǎo)出項(xiàng)目為一個(gè)jar包2024/8/21110Configuration包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手動(dòng)添加后加載的配置會(huì)覆蓋先加載的配置除了被指定為final的publicConfiguration(Configurationother)復(fù)制other參數(shù)信息2024/8/21111Configuration加載配置文件方法staticvoidaddDefaultResource(Stringname)添加默認(rèn)配置文件,配置文件加載的順序是根據(jù)添加的順序參數(shù)是文件名,文件是在classpath中voidaddResource(InputStreamin)voidaddResource(Pathfile)本地文件voidaddResource(Stringname)classpath中的文件voidaddResource(URLurl)2024/8/21112配置文件加載順序先加載缺省配置文件,再加載用戶定義的配置文件對(duì)于每一個(gè)文件只加載一次:第一個(gè)在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當(dāng)前作為hadoopjar…參數(shù)提交的JAR包2024/8/21113Configuration設(shè)置/獲取參數(shù)方法voidset(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)2024/8/21114Path包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:認(rèn)證信息,譬如user:pwd@host:portpath:文件或目錄名如參數(shù)不符合RFC2396,則拋出異常2024/8/21115Path常用方法intdepth()返回路徑的深度StringgetName()返回路徑上最后的資源名稱PathgetParent()返回父目錄,如果已是根目錄則返回nullPathsuffix(Stringsuffix)參數(shù)suffix給Path增加后綴返回加完后綴的Path實(shí)例getFileSystem(Configurationconf)返回該P(yáng)ath所屬的文件系統(tǒng)實(shí)例2024/8/21116FileSystem包org.apache.hadoop.fs構(gòu)造方法protectedFileSystem()FileSystem是一個(gè)抽象類,不能通過new來創(chuàng)建通過靜態(tài)get(Configurationconf)方法獲得FileSystem子類的實(shí)例fs.$scheme.implorg.apache.hadoop.hdfs.DistributedFileSystem主要子類LocalFileSystem本地文件系統(tǒng)DistributedFileSystem分布式文件系統(tǒng)2024/8/21117創(chuàng)建文件booleancreateNewFile(Pathf)不會(huì)覆蓋已有文件創(chuàng)建成功返回true,失敗返回falseFSDataOutputStreamcreate(Pathf)覆蓋已有文件創(chuàng)建文件并返回輸出流FSDataOutputStreamcreate(Pathf,booleanoverwrite)創(chuàng)建文件并返回輸出流FSDataOutputStreamcreate(Pathf,booleanoverwrite,intbuffer)FSDataOutputStreamcreate(Pathf,booleanoverwrite,int buffer,shortreplication,longblockSize)2024/8/21118打開文件FSDataInputStreamopen(Pathf)FSDataInputStreamopen(Pathf,intbufferSize)返回輸入流如果文件不存在會(huì)拋出異常不指定bufferSize時(shí),會(huì)從Configuration中讀取io.file.buffer.size,默認(rèn)為4096字節(jié)2024/8/21119文件追加FSDataOutputStreamappend(Pathf)FSDataOutputStreamappend(Pathf,intbufferSize)塊不足64M時(shí),會(huì)補(bǔ)足到64M塊達(dá)到64M之前,該塊不可見,ls看不到該塊新增的大小,也無法讀取不能同時(shí)多個(gè)writer追加同一個(gè)文件2024/8/21120從本地拷貝文件到HDFSvoidcopyFromLocalFile(Pathsrc,Pathdst)目標(biāo)文件存在,直接覆蓋voidcopyFromLocalFile(booleandelsrc,Pathsrc,Pathdst)根據(jù)參數(shù)delsrc,如果是true,拷貝完成之后直接刪除源文件voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Pathsrc,Pathdst)voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Path[]srcs,Pathdst)參數(shù)srcs指定多個(gè)本地文件或文件夾參數(shù)dst指定HDFS文件夾voidmoveFromLocalFile(Pathsrc,Pathdst)voidmoveFromLocalFile(Path[]srcs,Pathdst)2024/8/21121從HDFS拷貝文件到本地voidcopyToLocalFile(Pathsrc,Pathdst)voidcopyToLocalFile(booleandelsrc,Pathsrc,Pathdst)voidmoveToLocalFile(Pathsrc,Pathdst)沒有多文件拷貝函數(shù)會(huì)覆蓋已存在的本地文件dst2024/8/21122

創(chuàng)建目錄booleanmkdirs(Pathf)booleanmkdirs(Pathf,FsPermissionpermission)staticbooleanmkdirs(FileSystemfs,Pathdir,FsPermissionpermission)支持多級(jí)目錄同時(shí)創(chuàng)建(類似mkdir-p)默認(rèn)權(quán)限是755成功返回true目錄權(quán)限的含義r+x:

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論