版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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ù)據(jù)處理技術(shù)全套可編輯PPT課件1.Hadoop起源-LOGONutchGFS分布式存儲系統(tǒng)論文MapReduce分布式處理技術(shù)論文200420031.Hadoop起源-發(fā)展歷程1.Hadoop起源-發(fā)展歷程1.Hadoop起源–設(shè)計思想1.使用普通機器高性能,低成本2.數(shù)據(jù)冗余(HDFS)3.并行化處理(MR)4.移動計算海量數(shù)據(jù)的情況下移動計算比移動數(shù)據(jù)更高效2.Hadoop體系架構(gòu)–基本組件2.Hadoop體系架構(gòu)–生態(tài)3.Hadoop與分布式開發(fā)C/SB/S3.Hadoop與分布式開發(fā)hadoop應用開發(fā)MapperReducer實現(xiàn)實現(xiàn)4.Hadoop應用案例1、Hadoop在中國傳統(tǒng)文化的應用2、Hadoop在搜索引擎中的應用3、Hadoop在電商平臺中的應用4.Hadoop應用案例1、Hadoop在中國傳統(tǒng)文化的應用文化遺產(chǎn)保護:Hadoop可以用于存儲和管理大量的文化遺產(chǎn)數(shù)據(jù),例如歷史建筑、文物和藝術(shù)品等。這些數(shù)據(jù)可以被組織、分析和可視化,以幫助文化機構(gòu)和研究人員更好地了解和保護中國傳統(tǒng)文化。古籍數(shù)字化:Hadoop可以用于處理大規(guī)模的古籍數(shù)據(jù),包括掃描、OCR、文字識別和文本分析等。這有助于加快古籍數(shù)字化的進程,使得更多的人能夠方便地訪問和研究中國傳統(tǒng)文化。民俗文化研究:Hadoop可以用于分析大規(guī)模的民俗文化數(shù)據(jù),例如節(jié)日慶典、民間傳說和習俗等。這可以幫助研究人員更好地了解和保護中國傳統(tǒng)的民俗文化,促進文化多樣性的發(fā)展。語言文化保護:Hadoop可以用于處理大規(guī)模的語言數(shù)據(jù),例如語音、文本和圖像等。這可以幫助保護和傳承中國傳統(tǒng)的語言文化,例如方言和少數(shù)民族語言等??偟膩碚f,Hadoop可以為中國傳統(tǒng)文化的保護、研究和傳承提供支持,幫助我們更好地了解和珍惜這些文化遺產(chǎn)。4.Hadoop應用案例2、Hadoop在搜索引擎中的應用
百度作為全球最大的中文搜索引擎公司,提供基于搜索引擎的各種產(chǎn)品,包括以網(wǎng)絡(luò)搜索為主的功能性搜索,以貼吧為主的社區(qū)搜索,針對區(qū)域、行業(yè)的垂直搜索、MP3音樂搜索以及百科等,幾乎覆蓋了中文網(wǎng)絡(luò)世界中所有的搜索需求。百度對海量數(shù)據(jù)處理的要求是比較高的,要在線下對數(shù)據(jù)進行分析,還要在規(guī)定的時間內(nèi)處理完并反饋到平臺上。百度在互聯(lián)網(wǎng)領(lǐng)域的平臺需求要通過性能較好的云平臺進行處理,Hadoop就是很好的選擇。在百度,Hadoop主要應用于日志的存儲和統(tǒng)計;網(wǎng)頁數(shù)據(jù)的分析和挖掘;商業(yè)分析,如用戶的行為和廣告關(guān)注度等;在線數(shù)據(jù)的反饋,及時得到在線廣告的點擊情況;用戶網(wǎng)頁的聚類,分析用戶的推薦度及用戶之間的關(guān)聯(lián)度。4.Hadoop應用案例3、Hadoop在電商平臺中的應用
在eBay上存儲著上億種商品的信息,而且每天有數(shù)百萬種的新商品在增加,因此需要用云系統(tǒng)來存儲和處理PB級別的數(shù)據(jù),而Hadoop則是個很好的選擇。Hadoop是建立在商業(yè)硬件上的容錯、可擴展、分布式的云計算框架,eBay利用Hadoop建立了一個大規(guī)模的集群系統(tǒng)——Athena,它被分為5層,如圖所示。TheEnd第2章Hadoop安裝與配置管理15掌握集群安裝過程原理熟悉SSH免密碼登錄原理了解Hadoop的關(guān)鍵配置選項
掌握動態(tài)管理節(jié)點方法學習目標168/21/2024參考書178/21/2024準備與配置安裝環(huán)境188/21/2024安裝虛擬機和Linux,虛擬機推薦使用vmware,PC可以使用workstation,服務器可以使用ESXi,在管理上比較方便。ESXi還可以通過拷貝鏡像文件復制虛擬機,復制后自動修改網(wǎng)卡號和ip,非??旖?。如果只是實驗用途,硬盤大約預留20-30G空間。以Centos為例,分區(qū)可以選擇默認,安裝選項選擇DesktopGnome,以及Server、ServerGUI即可。其它Linux,注意選項里應包括ssh,vi(用于編輯配置文件),perl等(有些腳本里包含perl代碼需要解析)到Oracle官網(wǎng)下載javajdk安裝包,并且進行安裝集群的概念198/21/2024計算機集群是一種計算機系統(tǒng),
它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協(xié)作完成計算工作。集群系統(tǒng)中的單個計算機通常稱為節(jié)點,通常通過局域網(wǎng)連接。集群技術(shù)的特點:通過多臺計算機完成同一個工作。達到更高的效率兩機或多機內(nèi)容、工作過程等完全一樣。如果一臺死機,另一臺可以起作用三種運行模式208/21/2024單機模式:安裝簡單,幾乎不用作任何配置,但僅限于調(diào)試用途
偽分布模式:在單節(jié)點上同時啟動namenode、datanode、jobtracker、tasktracker、secondarynamenode等5個進程,模擬分布式運行的各個節(jié)點完全分布式模式:正常的Hadoop集群,由多個各司其職的節(jié)點構(gòu)成機器分配218/21/2024機器名偽分布式模式的安裝和配置步驟228/21/2024
下載并解壓Hadoop安裝包
進入Hadoop的解壓目錄,編輯conf/hadoop-env.sh文件(注意不同版本后配置文件的位置有所變化)編輯conf目錄下core-site.xml、hdfs-site.xml和mapred-site.xml三個核心配置文件配置ssh,生成密鑰,使到ssh可以免密碼連接localhost格式化HDFS使用bin/start-all.sh啟動Hadoop使用bin/stop-all.sh關(guān)閉HadoopStep1:各服務器安裝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ǎng)絡(luò)設(shè)置248/21/2024修改機器名#hostname<機器名>#vi/etc/sysconfig/networkHOSTNAME=<機器名>保存退出,重啟修改/etc/hosts修改/etc/sysconfig/network-scripts/相應的網(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免密碼登錄在各機器上執(zhí)行#ssh-keygen-b1024-trsa一路回車在~/.ssh/生成文件id_rsaid_rsa.pub在namenode機器上執(zhí)行:#cd~/.ssh/#scpid_rsa.pubroot@<各datanode的IP>:/home在各datanode機器上執(zhí)行:#cd/home/#catid_rsa.pub>>/root/.ssh/authorized_keys
Hadoop運行過程中需要管理遠端Hadoop守護進程,在Hadoop啟動以后,NameNode是通過SSH(SecureShell)來無密碼登錄啟動和停止各個DataNode上的各種守護進程的同樣原理,DataNode上也能使用SSH無密碼登錄到NameNode。Step4:在namenode安裝Hadoop268/21/2024用軟件上傳hadoop文件到節(jié)點/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:復制hadoop到各datanode并修改318/21/2024把hadoop0的hadoop目錄、jdk目錄、/etc/hosts、/etc/profile復制到hadoop1,hadoop2、hadoop3節(jié)點#cd$HADOOP_HOME/..#scp-rhadoophadoop1:/home#scp-rhadoophadoop2:/home#scp-rhadoophadoop3:/homeStep7:啟動/停止Hadoop集群328/21/2024在hadoop0上第一次啟動Hadoop,必須先格式化namenode#cd$HADOOP_HOME/bin#hadoopnamenode–format啟動Hadoop#cd$HADOOP_HOME/bin#./start-all.sh如果啟動過程,報錯safemode相關(guān)的Exception執(zhí)行命令#hadoopdfsadmin-safemodeleave然后再啟動Hadoop停止Hadoopcd$HADOOP_HOME/bin#./stop-all.sh終端查看集群狀態(tài):#hadoopdfsadmin-report增加節(jié)點338/21/20241.修改新節(jié)點的/etc/hosts,增加namenode的主機名與IP2.修改namenode的配置文件conf/slaves添加新增節(jié)點的ip或host3.在新節(jié)點的機器上,啟動服務#cd$HADOOP_HOME/bin#./hadoop-daemon.shstartdatanode#./hadoop-daemon.shstarttasktracker4.在NameNode節(jié)點執(zhí)行#hadoopdfsadmin-refreshNodes5.均衡block在新節(jié)點上執(zhí)行(如果是增加多個節(jié)點,只需在一個新節(jié)點)#cd$HADOOP_HOME/bin#./start-balancer.sh注意事項:1.必須確保slave的firewall已關(guān)閉;2.確保新的slave的ip已經(jīng)添加到master及其他slaves的/etc/hosts中,反之也要將master及其他slave的ip添加到新的slave的/etc/hosts中刪除節(jié)點348/21/2024在hadoop0上修改conf/hdfs-site.xml文件<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/excludes</value></property>確定要下架的機器dfs.hosts.exclude定義的文件內(nèi)容為,每個需要下線的機器,一行一個。強制重新加載配置#hadoopdfsadmin-refreshNodes關(guān)閉節(jié)點
hadoopdfsadmin-report可以查看到現(xiàn)在集群上連接的節(jié)點正在執(zhí)行Decommission,會顯示:
DecommissionStatus:Decommissioninprogress執(zhí)行完畢后,會顯示:
DecommissionStatus:Decommissioned再次編輯excludes文件一旦完成了機器下架,它們就可以從excludes文件移除了登錄要下架的機器,會發(fā)現(xiàn)DataNode進程沒有了,但是TaskTracker依然存在,需要手工處理一下安全模式358/21/2024在分布式文件系統(tǒng)啟動的時候,開始的時候會有安全模式,當分布式文件系統(tǒng)處于安全模式的情況下,文件系統(tǒng)中的內(nèi)容不允許修改也不允許刪除,直到安全模式結(jié)
束。安全模式主要是為了系統(tǒng)啟動的時候檢查各個DataNode上數(shù)據(jù)塊的有效性,同時根據(jù)策略必要的復制或者刪除部分數(shù)據(jù)塊。運行期通過命令也可以進入
安全模式。在實踐過程中,系統(tǒng)啟動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。NameNode在啟動的時候首先進入安全模式,如果datanode丟失的block達到一定的比例(1-dfs.safemode.threshold.pct),則系統(tǒng)會一直處于安全模式狀態(tài)即只讀狀態(tài)。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS啟動的時候,如果DataNode上報的block個數(shù)達到了
元數(shù)據(jù)記錄的block個數(shù)的0.999倍才可以離開安全模式,否則一直是這種只讀模式。如果設(shè)為1則HDFS永遠是處于SafeMode。hadoopdfsadmin-safemodeenter|leave|get|wait基準測試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#列出正在運行的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è)計目標HDFS的基本組件HDFS架構(gòu)圖和工作原理HDFS的shell操作java接口及常用api學習目標412024/8/21分布式文件系統(tǒng)和HDFS
422024/8/21分布式文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上,而是通過計算機網(wǎng)絡(luò)與節(jié)點相連。分布式文件系統(tǒng)的基于客戶機/服務器模式。通常,一個分布式文件系統(tǒng)提供多個供用戶訪問的服務器。分布式文件系統(tǒng)一般都會提供備份和容錯的功能分布式文件系統(tǒng)一般都基于操作系統(tǒng)的本地文件系統(tǒng)ext3,ext4NTFS為什么需要分布式文件系統(tǒng)傳統(tǒng)文件系統(tǒng)最大的問題是容量和吞吐量的限制多用戶多應用的并行讀寫是分布式文件系統(tǒng)產(chǎn)生的根源一塊硬盤的讀寫性能,比不上多塊硬盤同時讀寫的性能1HDD=75MB/sec1000HDDs=75GB/sec擴充存儲空間的成本低廉可提供冗余備份可以為分布式計算提供基礎(chǔ)432024/8/21什么是HDFSHDFS=HadoopDistributedFileSystemHDFS是一個使用Java實現(xiàn)的、分布式的、可橫向擴展的文件系統(tǒng)是Hadoop的核心組件基于*nix442024/8/21HDFS的設(shè)計目標基于廉價的普通硬件,可以容忍硬件出錯系統(tǒng)中的某一臺或幾臺服務器出現(xiàn)故障的時候,系統(tǒng)仍可用且數(shù)據(jù)保持完整大數(shù)據(jù)集(大文件)HDFS適合存儲大量文件,總存儲量可以達到PB,EB級HDFS適合存儲大文件,單個文件大小一般在百MB級之上文件數(shù)目適中簡單的一致性模型HDFS應用程序需要一次寫入,多次讀取一個文件的訪問模式支持追加(append)操作,但無法更改已寫入數(shù)據(jù)順序的數(shù)據(jù)流訪問HDFS適合用于處理批量數(shù)據(jù),而不適合用于隨機定位訪問側(cè)重高吞吐量的數(shù)據(jù)訪問,可以容忍數(shù)據(jù)訪問的高延遲為把“計算”移動到“數(shù)據(jù)”提供基礎(chǔ)和便利452024/8/21HDFS的特點(1)簡單一致性(2)故障檢測和自動恢復(3)流式數(shù)據(jù)訪問(4)支持超大文件(5)優(yōu)化的讀?。?)數(shù)據(jù)完整性462024/8/21HDFS架構(gòu)HDFS是典型的主從架構(gòu),一個主節(jié)點(NameNode或者MetadataNode),負責系統(tǒng)命名空間(NameSpace)的管理、客戶端文件操作的控制和存儲任務的管理分配;多個從節(jié)點或者說是數(shù)據(jù)節(jié)點(DataNode),提供真實文件數(shù)據(jù)的物理支持。HDFS架構(gòu)塊元數(shù)據(jù)NameNodeDataNode客戶端塊(Block)在傳統(tǒng)的塊存儲介質(zhì)中,塊是讀寫的最小數(shù)據(jù)單位(扇區(qū))傳統(tǒng)文件系統(tǒng)基于存儲塊進行操作為了節(jié)省文件分配表空間,會對物理存儲塊進行整合,一般大小為4096字節(jié)HDFS也使用了塊的概念,但是默認大小設(shè)為64M字節(jié)可針對每個文件配置,由客戶端指定每個塊有一個自己的全局IDHDFS將一個文件分為一個或數(shù)個塊來存儲每個塊是一個獨立的存儲單位以塊為單位在集群服務器上分配存儲與傳統(tǒng)文件系統(tǒng)不同的是,如果實際數(shù)據(jù)沒有達到塊大小,則并不實際占用磁盤空間如果一個文件是200M,則它會被分為4個塊:64+64+64+8492024/8/21使用塊的好處當一個文件大于集群中任意一個磁盤的時候,文件系統(tǒng)可以充分利用集群中所有的磁盤管理塊使底層的存儲子系統(tǒng)相對簡單塊更加適合備份,從而為容錯和高可用性的實現(xiàn)帶來方便502024/8/21塊的冗余備份每個塊在集群上會存儲多份(replica)默認復制份數(shù)為3可針對每個文件配置,由客戶端指定可動態(tài)修改某個塊的所有備份都是同一個ID系統(tǒng)無需記錄“哪些塊其實是同一份數(shù)據(jù)”系統(tǒng)可以根據(jù)機架的配置自動分配備份位置第一份在集群的某個機架的某臺機器上其他兩份在另外的一個機架的兩臺機器上此策略是性能與冗余性的平衡機架信息需要手工配置512024/8/21HDFS的元數(shù)據(jù)元數(shù)據(jù)包括文件系統(tǒng)目錄樹信息
文件名,目錄名
文件和目錄的從屬關(guān)系
文件和目錄的大小,創(chuàng)建及最后訪問時間
權(quán)限文件和塊的對應關(guān)系
文件由哪些塊組成塊的存放位置機器名,塊IDHDFS對元數(shù)據(jù)和實際數(shù)據(jù)采取分別存儲的方法元數(shù)據(jù)存儲在一臺指定的服務器上(NameNode)實際數(shù)據(jù)儲存在集群的其他機器的本地文件系統(tǒng)中(DataNode)2024/8/2152NameNodeNameNode是用來管理文件系統(tǒng)命名空間的組件一個HDFS集群只有一臺NameNode一個HDFS集群只有一個命名空間,一個根目錄NameNode上存放了HDFS的元數(shù)據(jù)一個HDFS集群只有一份元數(shù)據(jù)目前有單點故障的問題元數(shù)據(jù)保存在NameNode的內(nèi)存當中,以便快速查詢1G內(nèi)存大致可以存放1,000,000個塊對應的元數(shù)據(jù)信息按缺省每塊64M計算,大致對應64T實際數(shù)據(jù)2024/8/2153DataNode塊的實際數(shù)據(jù)存放在DataNode上每個塊會在本地文件系統(tǒng)產(chǎn)生兩個文件,一個是實際的數(shù)據(jù)文件,另一個是塊的附加信息文件,其中包括數(shù)據(jù)的校驗和,生成時間DataNode通過心跳包(Heartbeat)與NameNode通訊客戶端讀取/寫入數(shù)據(jù)的時候直接與DataNode通信2024/8/2154HDFS客戶端需要訪問HDFS文件服務的用戶或應用命令行客戶端同一個Hadoop安裝包API客戶端Java庫非POSIX接口封裝了通信細節(jié)2024/8/2155HDFS架構(gòu)圖2024/8/2156元數(shù)據(jù)的持久化NameNode里使用兩個非常重要的本地文件來保存元數(shù)據(jù)信息:fsimagefsimage里保存了文件系統(tǒng)目錄樹信息fsimage里保存了文件和塊的對應關(guān)系editsedits保存文件系統(tǒng)的更改記錄(journal)當客戶端對文件進行寫操作(包括新建或移動)的時候,操作首先記入edits,成功后才會更改內(nèi)存中的數(shù)據(jù)并不會立刻更改硬盤上的fsimage塊的位置信息并不做持久化2024/8/2157元數(shù)據(jù)的載入和更新NameNode啟動時通過fsimage讀取元數(shù)據(jù),載入內(nèi)存執(zhí)行edits中的記錄,在內(nèi)存中生成最新的元數(shù)據(jù)清空edits,保存最新的元數(shù)據(jù)到fsimage收集DataNode匯報的塊的位置信息NameNode運行時
對文件創(chuàng)建和寫操作,記錄到edits更新內(nèi)存中的元數(shù)據(jù)收集DataNode匯報的塊的創(chuàng)建和復制信息2024/8/2158HDFS創(chuàng)建文件流程客戶端客戶端請求NameNode在命名空間中建立新的文件元信息如果不能創(chuàng)建文件則NameNode會返回失敗文件已存在資源不足如創(chuàng)建成功,客戶端得到此文件的寫保護鎖NameNodeNamenode檢查集群和文件狀態(tài)創(chuàng)建寫保護鎖來保證只有一個客戶端在操作該文件建立該文件的元信息把創(chuàng)建文件這個事件加入edits為該文件分配塊,以及塊的冗余備份位置2024/8/2159HDFS寫操作流程客戶端寫一個文件并不是直接寫到HDFS上HDFS客戶端接收用戶數(shù)據(jù),并把內(nèi)容緩存在本地當本地緩存收集足夠一個HDFS塊大小的時候,客戶端同NameNode通訊注冊一個新的塊注冊塊成功后,NameNode會給客戶端返回一個DataNode的列表列表中是該塊需要存放的位置,包括冗余備份客戶端向列表中的第一個DataNode寫入塊當完成時,第一個DataNode向列表中的下個DataNode發(fā)送寫操作,并把數(shù)據(jù)已收到的確認信息給客戶端,同時發(fā)送確認信息給NameNode之后的DataNode重復之上的步驟當列表中所有DataNode都接收到數(shù)據(jù)并且由最后一個DataNode校驗數(shù)據(jù)正確性完成后,返回確認信息給客戶端收到所有DataNode的確認信息后,客戶端刪除本地緩存客戶端繼續(xù)發(fā)送下一個塊,重復以上步驟當所有數(shù)據(jù)發(fā)送完成后,寫操作完成2024/8/2160HDFS寫操作流程圖2024/8/2161HDFS的讀操作流程客戶端與NameNode通訊獲取文件的塊位置信息,其中包括了塊的所有冗余備份的位置信息:DataNode的列表客戶端獲取文件位置信息后直接同有文件塊的DataNode通訊,讀取文件如果第一個DataNode無法連接,客戶端將自動聯(lián)系下一個DataNode如果塊數(shù)據(jù)的校驗值出錯,則客戶端需要向NameNode報告,并自動聯(lián)系下一個DataNode2024/8/2162HDFS追加寫(append)的操作流程客戶端與NameNode通訊,獲得文件的寫保護鎖及文件最后一個塊的位置(DataNode列表)客戶端挑選一個DataNode作為主寫入節(jié)點,并對其余節(jié)點上的該數(shù)據(jù)塊加鎖開始寫入數(shù)據(jù)與普通寫入流程類似,依次更新各個DataNode上的數(shù)據(jù)更新時間戳和校驗和最后一個塊寫滿,并且所有備份塊都完成寫入后,向NameNode申請下一個數(shù)據(jù)塊2024/8/2163客戶端和HDFS服務器端配置文件的關(guān)系客戶端的配置文件名與服務器端相同,字段名也相同客戶端不會從HDFS集群端同步配置文件客戶端只使用部分配置信息dfs.block.sizedfs.replication如果客戶端沒有配置信息,則使用客戶端Hadoop程序包里的缺省值而不是服務器端的值2024/8/2164HDFS的安全性和用戶認證缺省情況下,Hadoop不啟用認證采用客戶端系統(tǒng)的登錄用戶名或可以通過API設(shè)置從而,雖然HDFS有權(quán)限控制,但并沒有安全性可言可以在NameNode上啟用用戶認證目前只支持Kerberos可以與LDAP集成2024/8/2165SecondaryNameNode不是備份節(jié)點SecondaryNameNode的主要的工作是階段性的合并fsimage和edits文件,以此來控制edits的文件大小在合理的范圍為了縮短集群重啟時NameNode重建fsimage的時間在NameNode硬盤損壞的情況下,SecondaryNameNode也可用作數(shù)據(jù)恢復,但絕不是全部一般情況下SecondaryNamenode運行在不同與NameNode的主機上,并且它的內(nèi)存需求和NameNode是一樣的一個特殊的角色:SecondaryNameNode662024/8/21SecondaryNameNode的運行過程SecondaryNameNode根據(jù)配置好的策略決定多久做一次合并fs.checkpoint.period和fs.checkpoint.size通知NameNode現(xiàn)在需要回滾edits日志,此時NameNode的新操作將寫入新的edits文件SecondaryNameNode通過HTTP從NameNode取得fsimage和editsSecondaryNameNode將fsimage載入內(nèi)存,執(zhí)行所有edits中的操作,新建新的完整的fsimageSecondaryNameNode將新的fsimage傳回NameNodeNameNode替換為新的fsimage并且記錄此checkpoint的時間2024/8/2167NameNode與SecondaryNameNode2024/8/2168HDFS服務進程NameNodeSecondaryNameNodeDataNode使用jps查看HDFS服務進程24913NameNode16566SecondaryNameNode15744DataNode2024/8/2169HDFS的未來發(fā)展高可用性多NameNode自治目前已在2.0版本中但還不夠成熟,在生產(chǎn)環(huán)境使用前需要多做測試2024/8/2170HDFS中所有對文件的操作都需要先通過NameNode,如果NameNode出現(xiàn)問題,這個集群將不可用維護硬件失效軟件失效操作失誤解決方案:為NameNode提供備份節(jié)點HDFS高可用性712024/8/21HDFS高可用性的實現(xiàn)方式2024/8/2172HDFS高可用性實現(xiàn)細節(jié)把元數(shù)據(jù)信息存在第三方地點只需保存fsimage和editsActiveNN和StandbyNN通過開源組件ZooKeeper來決定主從StandbyNN從第三方地點實時讀取edits當ActiveNN失敗,切換到StandbyNN時,StandbyNN需要確保讀取完所有edits之后才能對外提供服務塊位置信息Datanode同時匯報給兩個NameNode客戶端需要知道有兩個NameNode存在如果ActiveNamenode失效,客戶端可以自動的將操作發(fā)往Standby節(jié)點2024/8/2173NameNode的自治(Federation)NameNode的瓶頸內(nèi)存客戶端的并發(fā)訪問解決方案拆分目錄樹共享DataNode資源池2024/8/2174普通NameNode的架構(gòu)層次2024/8/2175NameNode自治的實現(xiàn)方式2024/8/2176HDFS命令行工具HDFS安全模式啟動、停止HDFS服務如何查看HDFS日志如何查看HDFSWeb控制臺HDFS參數(shù)配置HDFS實戰(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,則使用配置文件中的默認地址可以使用hadoopfs–help查看所有命令2024/8/2178cat用途顯示一個或多個文件內(nèi)容到控制臺使用方法hadoopfs-catURI[URI...]例子:hadoopfs-cathdfs://host1:port1/file1hdfs://host2:port2/file2hadoopfs-catfile:///file3/user/hadoop/file42024/8/2179put/copyFromLocal用途將本地一個或多個文件導入HDFS以上兩個命令唯一的不同時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中的一個或多個文件導出到本地文件系統(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的文件的健康狀況只能運行在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可以列出所有的可用命令主要的有一下幾個-safemode安全模式操作-report報告集群DFS的運行情況可以使用hadoopdfsadmin-help查看所有命令的用法2024/8/2185HDFS的SafeMode指文件系統(tǒng)所處的一種只讀的安全模式HDFS啟動時會在safemode狀態(tài)相關(guān)命令:$hadoopdfsadmin-safemodeget#安全模式當前狀態(tài)信息$hadoopdfsadmin-safemodeenter#進入安全模式$hadoopdfsadmin-safemodeleave#解除安全模式$hadoopdfsadmin-safemodewait#掛起,直到安全模式結(jié)束2024/8/2186HDFS服務啟動NameNode$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.sh2024/8/2187HDFS服務關(guān)閉NameNode$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.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è)置日志級別
查看不同組件的日志級別hadoopdaemonlog-getlevelhost:portpackageName設(shè)置組件的日志級別
hadoopdaemonlog–setlevlehost:portpackageNamelevel“l(fā)evel”DEBUG,INFO,ERROR,FATAL
端口為前臺頁面的端口,缺省為50070組件名稱(packageName)node.NameNodeorg.apache.hadoop.hdfs.server.datanode.DataNodeorg.apache.hadoop.hdfsorg.apache.hadoop2024/8/2190如何查看HDFSWeb控制臺訪問:http://<NameNodehostname>:<port>2024/8/2191HDFShdfs-site.xml參數(shù)配置.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/data2024/8/2192HDFShdfs-site.xml參數(shù)配置node.handler.countNameNode用來處理來自DataNode的RPC請求的線程數(shù)量建議設(shè)置為DataNode數(shù)量的10%,一般在10~200個之間如設(shè)置太小,DataNode在傳輸數(shù)據(jù)的時候日志中會報告“connectonrefused"信息在NameNode上設(shè)定默認值:10dfs.datanode.handler.countDataNode用來連接NameNode的RPC請求的線程數(shù)量取決于系統(tǒng)的繁忙程度設(shè)置太小會導致性能下降甚至報錯在DataNode上設(shè)定默認值:3dfs.datanode.max.xcieversDataNode可以同時處理的數(shù)據(jù)傳輸連接數(shù)默認值:256建議值:40962024/8/2193HDFShdfs-site.xml參數(shù)配置dfs.permissions
如果是true則檢查權(quán)限,否則不檢查(每一個人都可以存取文件)于NameNode上設(shè)定默認值:truedfs.datanode.du.reserved 在每個卷上面HDFS不能使用的空間大小在每個DataNode上面設(shè)定默認值:0建議為10737418240,即10G。需要結(jié)合MapReduce場景設(shè)置。dfs.datanode.failed.volumes.toleratedDataNode可以容忍損塊的磁盤數(shù)量,超過這個數(shù)量DataNode將會離線,所有在這個節(jié)點上面的block將會被重新復制默認是0,但是在有多塊磁盤的時候一般會增大這個值dfs.replication在文件被寫入的時候,每一塊將要被復制多少份默認是3份。建議3份在客戶端上設(shè)定通常也需要在DataNode上設(shè)定2024/8/2194HDFS
core-site.xml參數(shù)配置文件系統(tǒng)的名字。通常是NameNode的hostname與port需要在每一個需要訪問集群的機器上指定,包括集群中的節(jié)點例如:hdfs://<your_namenode>:9000/fs.checkpoint.dir以逗號分隔的文件夾列表,SecondNameNode用來存儲checkpointimage文件如果多于一個文件夾,那么都會被寫入數(shù)據(jù)需要在SecondNameNode上設(shè)定默認值:${hadoop.tmp.dir}/dfs/namesecondaryhadoop.tmp.dir HDFS與本地磁盤的臨時文件默認是/tmp/hadoop-${}.需要在所有的節(jié)點中設(shè)定2024/8/2195HDFS
core-site.xml參數(shù)配置erval當一個文件被刪掉后,它會被放到用戶目錄的.Trash目錄下,而不是立即刪掉經(jīng)過此參數(shù)設(shè)置的分鐘數(shù)之后,再刪掉數(shù)據(jù)默認是0,禁用此功能,建議1440(一天)io.file.buffer.size設(shè)定在讀寫數(shù)據(jù)時的緩存大小,應該為硬件分頁大小的2倍默認是4096,建議為65536(64K)2024/8/2196Eclipse開發(fā)環(huán)境介紹HDFS開發(fā)基本步驟HDFSJavaAPI詳解ConfigurationPathFileSystemStream、IOUtilsHDFSJavaAPI使用場景示例FuseHDFSWebHDFSRESTfulAPIHDFS-javaapi
使用972024/8/21
HDFS開發(fā)基本步驟實例化Configuration實例化FileSystem根據(jù)配置文件選擇使用本地或分布式文件系統(tǒng)文件或目錄操作Stream2024/8/2198Eclipse開發(fā)環(huán)境
菜單欄
按鈕欄
包導航區(qū)代碼編輯區(qū)
視圖切換按鈕相關(guān)關(guān)聯(lián)顯示區(qū)
代碼聯(lián)動顯示區(qū)2024/8/2199Eclipse開發(fā)環(huán)境
2024/8/21100Eclipse開發(fā)環(huán)境填寫項目名稱2024/8/21101Eclipse開發(fā)環(huán)境2024/8/21102Eclipse開發(fā)環(huán)境建立第三方庫依賴文件夾-lib2024/8/21103Eclipse開發(fā)環(huán)境
拷貝項目所依賴的第三方類庫到lib文件夾2024/8/21104Eclipse開發(fā)環(huán)境把第三方類庫加到項目中的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,導出項目為一個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手動添加后加載的配置會覆蓋先加載的配置除了被指定為final的publicConfiguration(Configurationother)復制other參數(shù)信息2024/8/21111Configuration加載配置文件方法staticvoidaddDefaultResource(Stringname)添加默認配置文件,配置文件加載的順序是根據(jù)添加的順序參數(shù)是文件名,文件是在classpath中voidaddResource(InputStreamin)voidaddResource(Pathfile)本地文件voidaddResource(Stringname)classpath中的文件voidaddResource(URLurl)2024/8/21112配置文件加載順序先加載缺省配置文件,再加載用戶定義的配置文件對于每一個文件只加載一次:第一個在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包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:認證信息,譬如user:pwd@host:portpath:文件或目錄名如參數(shù)不符合RFC2396,則拋出異常2024/8/21115Path常用方法intdepth()返回路徑的深度StringgetName()返回路徑上最后的資源名稱PathgetParent()返回父目錄,如果已是根目錄則返回nullPathsuffix(Stringsuffix)參數(shù)suffix給Path增加后綴返回加完后綴的Path實例getFileSystem(Configurationconf)返回該Path所屬的文件系統(tǒng)實例2024/8/21116FileSystem包org.apache.hadoop.fs構(gòu)造方法protectedFileSystem()FileSystem是一個抽象類,不能通過new來創(chuàng)建通過靜態(tài)get(Configurationconf)方法獲得FileSystem子類的實例fs.$scheme.implorg.apache.hadoop.hdfs.DistributedFileSystem主要子類LocalFileSystem本地文件系統(tǒng)DistributedFileSystem分布式文件系統(tǒng)2024/8/21117創(chuàng)建文件booleancreateNewFile(Pathf)不會覆蓋已有文件創(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)返回輸入流如果文件不存在會拋出異常不指定bufferSize時,會從Configuration中讀取io.file.buffer.size,默認為4096字節(jié)2024/8/21119文件追加FSDataOutputStreamappend(Pathf)FSDataOutputStreamappend(Pathf,intbufferSize)塊不足64M時,會補足到64M塊達到64M之前,該塊不可見,ls看不到該塊新增的大小,也無法讀取不能同時多個writer追加同一個文件2024/8/21120從本地拷貝文件到HDFSvoidcopyFromLocalFile(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)2024/8/21121從HDFS拷貝文件到本地voidcopyToLocalFile(Pathsrc,Pathdst)voidcopyToLocalFile(booleandelsrc,Pathsrc,Pathdst)voidmoveToLocalFile(Pathsrc,Pathdst)沒有多文件拷貝函數(shù)會覆蓋已存在的本地文件dst2024/8/21122
創(chuàng)建目錄booleanmkdirs(Pathf)booleanmkdirs(Pathf,FsPermissionpermission)staticbooleanmkdirs(FileSystemfs,Pathdir,FsPermissionpermission)支持多級目錄同時創(chuàng)建(類似mkdir-p)默認權(quán)限是755成功返回true目錄權(quán)限的含義r+x:
獲取文件列表w:創(chuàng)建(刪除)文件/子目錄
2024/8/21123刪除及重命名booleandelete(Pathf,booleanrecursive)刪除文件或目錄如果f是目錄,則參數(shù)recursive指定是否要遞歸刪除recursive是false,并且f不為空,會拋出異常刪除成功返回truef不存在時,會返回falsebooleandeleteOnExit(f)當關(guān)閉FileSystem時,才會刪除如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指定要查詢的多個目錄參數(shù)filter指定需要過濾規(guī)則PathFilter是一個接口,需要實現(xiàn)booleanaccept(Pathpath)方法,返回false,在返回結(jié)果中會過濾掉只返回列出
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水磨合同范例
- 借款債務擔保合同范例
- 合并合同范例
- 藥學服務與技能測試題+答案
- 承包農(nóng)業(yè)項目合同范例
- 天津泰達股合同范例
- 江蘇餐飲投資合同范例
- 工程檢測業(yè)務咨詢合同范例
- 保溫工程追加合同范例
- 鄉(xiāng)村租房種地合同范例
- 監(jiān)理公司各部門職責
- 論辛棄疾詞作的愁情主題及其審美價值
- 起世經(jīng)白話解-
- 新形勢下我國保險市場營銷的現(xiàn)狀、問題及對策
- 完整版焦慮抑郁自評量表SASSDS
- ISO14001內(nèi)審檢查表
- CDN基礎(chǔ)介紹PPT課件
- SPC八大控制圖自動生成器v1.01
- 新形勢下加強市場監(jiān)管局檔案管理工作的策略
- 上海旅游資源基本類型及其旅游區(qū)布局特點(共5頁)
- 六一湯_醫(yī)方類聚卷一○二引_御醫(yī)撮要_減法方劑樹
評論
0/150
提交評論