????DataNode也是通常在HDFS实例中单独机器上运行的软件,Hadoop集群包含一个NameNode和大量DataNode。DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来;
????DataNode的主要工作:保存Block(数据块)、启动DataNode线程时会向NameNode汇报block信息、通过向NameNode发送心跳保持与其联系(3秒一次),如果NN(下面都用NN表示NameNode,DN表示DataNode,便于书写)10分钟没有收到DN的心跳,则认为其已经Lost,并copy其上的block(块)到其他DN。如下图:

这里讲下Block的副本放置策略:
1、第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
2、第二个副本:放置在于第一个副本不同的机架的节点上
3、第三个副本:与第二个副本相同集群的节点
4、更多副本:随机节点
再提下Block:
????设置一个Block 64MB,如果上传文件小于该值,仍然会占用一个Block的命名空间(NameNode metadata),但是物理存储上不会占用64MB的空间
Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,Block是不可以再上传后变更的;所以要根据自己平时处理的文件大小自己设置,以免浪费块空间;
3、数据损坏处理
1、当DN读取block的时候,它会计算checksum
2、如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。
3、client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数
4、DN在其文件创建后三周验证其checksum
3、Hadoop三种运行模式
1、单机版
所有的程序(NN JT DN TT)运行于同一个JVM中,HDFS为本地文件系统
2、伪分布式
所有的程序运行于同一台机器的独立JVM中
3、分布式
不同程序运行于不同节点中,通常Master运行NN和JT,Slave机器运行DN和TT
本人曾安装过分布式模式,可以去hadoop分类下面看相关文章;
OK,整体系统介绍到这里,后续会整理MapReduce等子项目内容;如有错误请指教^_^