hadoop 是有 hdfs + map/reduce 組成的html
閱讀本文的前提是已經有了hadoop相關環境的搭建基礎,能夠是僞分佈式的,也但是徹底分佈式環境node
徹底分佈式環境搭建能夠參照個人一篇文章:http://my.oschina.net/u/2561483/blog/678545linux
Hadoop的核心就是HDFS和MapReduce,而二者只是理論基礎,不是具體可以使用的高級應用,Hadoop旗下有不少經典子項目,好比HBase、Hive等,這些都是基於HDFS和MapReduce發展出來的。要想了解Hadoop,就必須知道HDFS和MapReduce是什麼。安全
提到hdfs (Hadoop Distributed File System,Hadoop分佈式文件系統), 你們可能不熟悉,可是你們對FS必定很熟悉見啊,下圖:less
咱們系統經常使用的文件系統包括 FAT32 ,NTFS等,包括U盤中的文件系統都有。因此類比HDFS,他並不遙遠,也是一個文件系統而已,不過是分佈式的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,適合那些有着超大數據集(large data set)的應用程序。ssh
一、大數據文件,很是適合上T級別的大文件或者一堆大數據文件的存儲,若是文件只有幾個G甚至更小就沒啥意思了。分佈式
二、文件分塊存儲,HDFS會將一個完整的大文件平均分塊存儲到不一樣計算器上,它的意義在於讀取文件時能夠同時從多個主機取不一樣區塊的文件,多主機讀取比單主機讀取效率要高得多得都。oop
三、流式數據訪問,一次寫入屢次讀寫,這種模式跟傳統文件不一樣,它不支持動態改變文件內容,而是要求讓文件一次寫入就不作變化,要變化也只能在文件末添加內容。大數據
四、廉價硬件,HDFS能夠應用在普通PC機上,這種機制可以讓給一些公司用幾十臺廉價的計算機就能夠撐起一個大數據集羣。spa
五、硬件故障,HDFS認爲全部計算機均可能會出問題,爲了防止某個主機失效讀取不到該主機的塊文件,它將同一個文件塊副本分配到其它某幾個主機上,若是其中一臺主機失效,能夠迅速找另外一塊副本取文件。
Block:將一個文件進行分塊,一般是64M。
NameNode:保存整個文件系統的目錄信息、文件信息及分塊信息,這是由惟一一臺主機專門保存,固然這臺主機若是出錯,NameNode就失效了。在Hadoop2.*開始支持activity-standy模式----若是主NameNode失效,啓動備用主機運行NameNode。
DataNode:分佈在廉價的計算機上,用於存儲Block塊文件。
注:hdfs是一個文件系統,若是你要找它當中的目錄在系統的哪一個位置是找不到的,由於它是以block的形式存放的。它在linux系統中能夠用命令查看:
hadoop fs -ls /
個人文件系統 /下有4個文件夾,還能夠建立目錄,用命令:
hadoop fs -mkdir 來建立目錄:
能夠看到個人/ 目錄下面已經有5個目錄了
hadoop fs -mkdir /tmp/input 在HDFS上新建文件夾
Hadoop fs -put input1.txt /tmp/input 把本地文件input1.txt傳到HDFS的/tmp/input目錄下
hadoop fs -get input1.txt /tmp/input/input1.txt 把HDFS文件拉到本地
hadoop fs -ls /tmp/output 列出HDFS的某目錄
hadoop fs -cat /tmp/ouput/output1.txt 查看HDFS上的文件
hadoop fs -rmr /home/less/hadoop/tmp/output 刪除HDFS上的目錄
hadoop dfsadmin -report 查看HDFS狀態,好比有哪些datanode,每一個datanode的狀況
hadoop dfsadmin -safemode leave 離開安全模式
hadoop dfsadmin -safemode enter 進入安全模式
參考文獻:
http://blog.csdn.net/ydpl2007/article/details/8299606
http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html
http://blessht.iteye.com/blog/2095675
http://blog.csdn.net/lfsf802/article/details/8978260