什么是机架感知

通俗的来说就是nameNode通过读取我们的配置来配置各个节点所在的机架信息

什么时候会用到机架感知

数据的流水线复制和HDFS复制副本时

详细解答

当你的副本数是3的时候hdfs的放置策略,是放一个副本到本地机架的一个节点上放一个副本,在本地机架的另外节点上再放一个副本.最后不同的机架上再放不同的副本.

第一个副本放在本地机架的一个DataNode节点上的
第二个副本是放到本地机架的另一个DataNode节点上
第三个副本放在其他机架的一个DataNode节点

HDFS不是给客户用的,是存储公司的数据的,是给公司用的,公司存东西需要客户端.

首先公司肯定有业务,比如说公司是电商项目,会有个app,用户用app会有某些行为,比如说用户浏览了某些商品,浏览了商品之后可以给用户的行为记录一下.用户每次点击商品,点击之后会像Tomcat服务器发送请求,这个行为就可以记录下来,比如说某某某用户什么时间通过什么方式点击的商品.比如说通过搜索点击的,通过广告点击的.
这些数据是放到Tomcat的日志里面的.不适合放MySQL, 一般放MySQL的东西都是这个数据很重要的,毕竟MySQL支持事务.
我分析这个商城每天有几个人浏览,有几个人浏览了下单,有几个人浏览了不下单,我想分析这些东西,就需要给数据汇总,那么一天可能就会产生10个G左右(看公司的情况).
如果我想统计一年的,那么数据很大了,普通磁盘是存不下的,所以就可以放到hdfs上面存储.

在Tomcat上传日志的时候会找部署这个Tomcat的机架上有没有DataNode进程,那么就将这个副本放到本机的DataNode就行了,这样网络传输成本就是0,速度最快.
第二个副本放到本地机架别的服务器的DataNode进程的服务器,如果没有就找隔壁有DataNode进程的服务器上.
第三个副本一定跨机架存储,目的是防止一个机架挂了, 跨机架的话,即使一个机架挂了,还有一个机架正常运行.

前两个副本放到本地是为了访问速度快,访问本机DataNode没有网络传输成本.
第三个副本放到其它机架目的是为了安全性.