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