走进大数据的世界, 徜徉在数据的海洋里…
大数据与hadoop概述
1 大数据的产生
随着互联网的发展, 人类每天都会产生海量的数据, 数据日益增大. 人类面临如此海量的数据, 首先需要解决如何存储, 还有一个问题就是如何从数据中发现有用的价值, 从而让数据不再是一潭死水. 因而大数据应运而生, 总的来说需要解决两个问题: 存储和计算.
03年有了mapreduce思想的论文, 05年雅虎为解决网页搜索问题, 开发了hadoop项目, 随后进行了开源.
hadoop不是一个产品,而是多个软件组成的生态系统. 业内通常所说的大数据基本都是围绕Hadoop生态系统而言.
2 什么是大(的)数据?
大数据指的是海量的,高增长率的,多样化的数据. 我们并不能对大数据给一个量化的界定,比如超过多少量称作大数据, 而是数据规模超过现有的存储管理分析等的数据我们称为大数据, 换句话说超过传统方式解决能力的数据称为大数据.
大数据的价值不在于数据的庞大, 而在于对这些信息如何加工处理获取数据的价值,这是大数据关注的方向.
3 大数据的特点
- 数据量大.通常是P起步.
- 多样化. 数据包括结构化,半结构化,非结构化等等.
- 价值密度低. 海量的信息中挖掘价值, 好比是淘金.
- 速度快时效高. 实时数据变化快, 处理速度快. 举个例子: 往往时事新闻要求很短的时间内需要搜索引擎搜索到.
- 在线.相比传统数仓离线场景, 大数据现在更加凸显出在线的特征.比如嘀嘀打车,用户数据和司机数据以及位置等海量数据都是实时在线的.
4 大数据的概念
通常所说的大数据,主要是指处理海量数据的大数据技术. 这里包括并行处理数据库, 分布式文件系统,分布式数据库, 云计算, 边缘计算, 数据挖掘,机器学习等等.
5 Hadoop简介及特性
hadoop是大数据领域目前处于核心地位的生态系统.
它提供了hdfs分布式文件系统用于解决海量数据的存储; 提供了mapreduce计算框架用于解决海量数据的计算.
hadoop的特点: 可靠的, 高效的, 可伸缩的.
- 可靠: 存储通过多副本,保证数据不丢失.
- 高效: 并行计算加快数据处理效率. 可处理pb级数据.
- 伸缩: 集群节点可根据业务规模增减. 最大的场景就是云服务器的应用, 比如双十一短时间扩增大量节点来应对请求压力, 之后再释放节点.
6 Hadoop核心模块
- Hadoop Common: 基础通用模块
- Hadoop HDFS: 分布式文件系统, 高可靠, 高吞吐量
- Hadoop MapReduce: 分布式离线并行计算框架
- Hadoop Yarn: 任务调度与资源管理
HDFS架构演进简史
1 HDFS 1.X 架构
三大马车: Namenode, Datanode, sendarynamenode.
1.1 NameNode(NN)
主节点, 名称节点.负责管理分布式文件系统的命名空间(namespace).
保存了两个核心数据结构: FsImage和EditLog. FsImage用于维护文件系统树以及文件树中所有文件和文件夹的元数据; EditLog是操作日志文件, 记录了所有针对文件的创建,删除,重命名等操作.
FsImage和EditLog都是文件形式存在, namenode启动时都要加载.FsImage文件很大,往往难以操作, 从而将增量的修改放到EditLog中便于维护和操作. FsImage和EditLog合并可以得到一个新的FsImage.
1.2 DataNode(DN)
datanode即数据节点,用于文件的具体存储, 维护了blockid与datanode本地文件的映射.
datanode需要不停地和namenode通信,来同步自己的信息,便于namenode管控整个文件系统.
文件块是hdfs存储数据的最小单元,默认块大小是128m, 三备份机制(因而通常我们说搭建一个hadoop集群至少需要三个节点).
1.3 SecondaryNameNode(SNN, 冷备份)
我们可以看出Namenode的角色无比重要,是整个系统的总管,一旦NN出现故障,整个集群则不可用.因此, NN需要进行备份.
SecondaryNameNode便是用于做备份,原理便是定期和NN进行通信,完成备份.
冷备份流程:
- 1, SecondaryNameNode定期和NN通信,请求停止使用EditLog文件,暂时将新的写操作写到一个新的edit.new中,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;
- 2, SNN通过http get方式从NN上获取FsImage和EditLog文件,下载到SNN本地;
- 3, SNN将FsImage加载到内存之后, 根据EditLog逐条执行各个操作,使得FsImage保持最新;
- 4, SNN合并完FsImage之后,通过post方式将FsImage发送给NN
- 5, NN将接收到的新的FsImage替换旧的FsImage, 并且将edit.new替换EditLog
此外, 还需要人工进行FsImage的多节点备份, 避免NN节点损坏之后FsImage丢失导致崩盘.
1.4 缺陷
总的来说是单点问题.
- NN单点故障问题: 单点故障,单点吞吐量,单点隔离性
- 内存受限. 其实也是NN单点,在集群规模达到一定数量级时, NN需要很大内存来保存元数据信息. 这也是不可以水平扩展的问题(多个NN集群扩展)
解决办法就是热备份和联邦federation, HDFS 2.0应用而生.
2 HDFS 2.X 架构
在2.X中, 主要解决了单点问题和内存受限问题.
HDFS HA解决了单点故障问题; Federation(联邦)解决了内存受限,即水平扩展问题.
2.1 热备份(HDFS HA)
HDFS HA(High Availability)解决单点故障问题
从而有了两个NN, 一个是活跃(Active), 一个是待命(Standby)
Active和Standby的状态同步通过共享存储系统来实现(如何实现? 通常是通过zk来实现)
Active出现故障, 则会发生Standby切换
Zookeeper确保时刻有一个NN提供对外服务
DN同时向两个NN汇报信息(如何保证都汇报成功?)
2.2 联邦(Federation)
将多个NN管理起来, 从而实现管理多个命名空间.
Federation实现了
- HDFS服务的水平扩展, 从而多个NN各自管理一部分文件目录,是的集群可以扩展到更多的节点;
- 性能更高效.不同的NN管理不同的业务数据并对外提供服务,从而提供更高的读写吞吐率;
- 隔离性.不同业务数据交由不同的NN管理, 从而实现业务之间的隔离.
本文链接: https://stefanxiepj.github.io/archives/f6e4740a.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)