应用场景
当数据量达到PB,ZB级别,或者传统关系型数据库遇到难题的时候,那么采用HDFS来替代是最好不过的工具了。
操作步骤
1. 架构图
Hadoop是由Apache基金会所开发的分布式系统基础架构,组织架构如下图所示:
正如上图所示:Hadoop包含很多优秀的子项目,例如HDFS,Mapreduce,Hbase,Hive,Zookeeper等,其中最重要的,也是Hadoop当时风靡一时的原因是HDFS(分布式文件系统)和Mapreduce(分布式计算框架)。HDFS解释了,hadoop如何解决大数据的存储问题,而Mapreduce解释了,hadoop如何对大数据的计算问题。
2. HDFS
到底,Hadoop的HDFS是如何进行大数据存储的,下面一一道来。
首先,需要我们搭建Hadoop集群,hadoop集群简单来说就是把很多廉价的机器,通过hadoop组合起来,组成一个庞大的数据中心,全国著名的数据中心包括:谷歌,Facebook,微软等,平均一个数据中心大约几千万台机器,中国的北京,武汉,成都,上海,南京等城市,也有数据中心,这些数据中心为大数据提供了可靠的解决方案。
在hadoop集群中,负责大数据存储的当然就是HDFS,它主要由以下部分组成:
1个namenode:负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系;
1个secondary namenode:负责实现HDFS的高可用,当namenode宕机后,自动切换,取代namenode,保证数据的安全性;
无数个datanode:负责大量数据的存储,当然大部分容错机制都是在datanode上实现的。
Hadoop集群架构如下图所示:
下面用简单的例子说明HDFS的存储操作:
例如,现在有一个文件FileA,100M大小。Client将FileA写入到HDFS上。
HDFS按默认配置,HDFS分布在三个机架上Rack1,Rack2,Rack3,具体步骤如下:
a. Client将FileA按64M分块。分成两块,block1和Block2;
b. Client向nameNode发送写数据请求,如图蓝色虚线①——>。
c. NameNode节点,记录block信息。并返回可用的DataNode,如粉色虚线②———>。
Block1: host2,host1,host3
Block2: host7,host8,host4
原理:
NameNode具有RackAware机架感知功能,这个可以配置。
若client为DataNode节点,那存储block时,规则为:副本1,同client的节点上;副本2,不同机架节点上;副本3,同第二个副本机架的另一个节点上;其他副本随机挑选。
若client不为DataNode节点,那存储block时,规则为:副本1,随机选择一个节点上;副本2,不同副本1,机架上;副本3,同副本2相同的另一个节点上;其他副本随机挑选。
d. client向DataNode发送block1;发送过程是以流式写入。
在HDFS中,数据块的大小默认为64M,并且每一块数据保存3份,所以不用担心数据的丢失问题,这样机架的个数,机器的个数可以无限扩展,就可以存放无限大的数据。