首先声明,其实raid和hdfs是基本不搭嘎的两个技术。但由于思想很像,容易让人混淆:有了RAID技术,为何还要HDFS?
首先来看hdfs工作流程:
来源于https://www.cnblogs.com/binarylei/p/8903601.html
文件在客户端时会被分块,这里可以看到文件被分为 5 个块,分别是:A、B、C、D、E。同时为了负载均衡,所以每个节点有 3 个块。下面来看看具体步骤:
步骤1: 客户端将要上传的文件按 128M 的大小分块。
步骤2:客户端向名称节点发送写数据请求。名称节点记录各个 DataNode 信息,并返回可用的 DataNode 列表。
步骤3:客户端直接向 DataNode 发送分割后的文件块,发送过程以流式写入。写入完成后,DataNode 向 NameNode 发送消息,更新元数据。
知识点:
1、NameNode可以说是hdfs中的心脏,协调管控着所有datanode。通常NameNode和datanode都分别部署在独立的物理机。
2、在执行读或写的过程中,NameNode 和 DataNode 通过 HeartBeat 进行保存通信,确定 DataNode 活着。如果发现 DataNode 死掉了,就将死掉的 DataNode 上的数据,放到其他节点去,读取时,读其他节点。
3、宕掉一个节点没关系,还有其他节点可以备份;甚至,宕掉某一个机架也没关系;其他机架上也有备份。
说白了,HDFS技术的目的:解决海量数据的分布式存储的问题。方案中考虑了负载均衡、横向扩容、数据备份的问题。
在看看raid技术:
RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。
常见的类型有raid0 raid1 raid5 raid10等等。具体介绍可以参考https://www.cnblogs.com/ivictor/p/6099807.html
说白了,raid技术的目的有2个:
1、是利用尽可能多的磁盘组成的磁盘阵列来提高磁盘的读写性能,类似raid0。否则你的cpu性能再强悍也是枉然。
2、起到备份数据的作用,类似raid1。确保一块磁盘坏掉,另一个备份磁盘可以继续提供相同数据继续服务。
一般服务器机器上都有硬件raid卡,用户只要简单安自己的业务需求简单配置一下就可以使用。
刚开始接触hdfs,很容易让人联想到raid技术。
他们的相同点: 都解决了数据备份的问题。
当他们的区别还是很大的。
1、raid是针对单台服务器,目的是解决高性能的处理器和低性能的磁盘io的瓶颈问题。
2、hdfs是针对服务器集群,目的是解决海量数据的分布式存储问题。