版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qinshi965273101/article/details/82961345
1、背景
海量的非结构化数据,几乎没法梳理成一个个的字段,来存储在关系型数据库中。所以实际应用中,对于这类数据需要考虑数据如何存储。数据如何计算的问题。
2、hadoop两个核心
- HDFS(以分布式方式来存储海量数据)
- MapReduce(以HDFS上的数据为基础进行计算)
3、大数据特点
- Volume(大量)
- Velocity(持续高速增长)
- Variety(多样性)
- value(价值密度低,数据很多但真正有价值的数据少)
- Veracity(真实性)
4、Hadoop版本
hadoop有第一代和第二代,第二代与第一代最显著的特点是:第二代比第一代多了一个资源调度框架(yarn)。
hadoop第二代上可以跑多种计算框架,例如spark,MapReduce等。
目前3.0版本已经发布。
5、HDFS架构
如图:
- 分布式存储数据:一个文件拆分成了四块,分别保存在机架1中的四台服务器中(datanode)
- 引入namenode:若要获取文件,需要知道该文件拆成哪些块,分别保存在哪等。namenode就是专门管理文件块信息。
- 避免namenode单点故障:有一个SecondaryNameNode服务作为namenode的备用。
- 引入副本冗余机制:此处采用三副本机制(磁盘利用率1/3),以黄色块为例,在机架1的第四台服务器上保本一个副本,在机架2的第一台服务器上保存了一个副本,以防机架1全部宕机。
namenode作用:
- namenode数据在内存中,供客户端快速查询。为防数据丢失,也会在磁盘保存镜像文件。
- 管理整个分布式文件系统的元数据信息,一个文件多大,有几块,每个块多大,分别存储在那些节点等。
- 管理整个集群的状态,比如所有datanode时间间隔会向namenode发起一个心跳包,namenode时间间隔内没有收到心跳包,则判定为该datanode宕机。
1.0版本namenode单点故障解决方案:
- SecondaryNameNode是1.0版本的方案
- 针对hdfs的操作,会有对应的操作记录。每时间间隔,SecondaryNameNode会把操作记录和当前镜像文件合并,生成最新的镜像文件。同时把数据同步给自己
- SecondaryNameNode不是实时热备,可能会造成元数据的丢失。
2.0版本namenode单点故障解决方案
- 考虑到1.0版本的弊端,2.0版本提供实时热备,解决方案如下图
- 但是使用伪分布模式搭建hadoop,还是会使用SecondaryNameNode机制处理