大数据
大数据学习day01
什么是大数据(Big Data)
大数据概念
大数据是指海量数据或巨量数据,其规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策。
短时间内快速的产生海量的多种多样的有价值的数据。
大数据技术:
分布式存储
分布式计算
-
分布式批处理
攒一段时间的数据,然后再未来某一个时间来处理这批数据 -
分布式流处理(实时处理)
数据不需要积攒,直接处理,每产生一条数据,立马对这条数据进行处理,将结果推送到前端,如双十一的天猫大屏幕,qq实时在线分布情况 -
机器学习
分布式存储
HDFS
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HDFS原理
Client(客户端)
- 文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
- 与 NameNode 交互,获取文件的位置信息。
- 与 DataNode 交互,读取或者写入数据。
- Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
- Client 可以通过一些命令来访问 HDFS。
NameNode
Namenode存放文件系统树及所有文件、目录的元数据。就是 master,它是一个主管、管理者。
6. 管理 HDFS 的名称空间。
7. 管理数据块(Block)映射信息
8. 配置副本策略
9. 处理客户端读写请求。
Secondary NameNode
模拟执行edits文件,产生元数据,将元数据与fsimage合并完成后,将新的fsimage推送给namenode
并不是所有元数据都会持久化
合并触发机制:
- 超过3600ms
- edits文件超过64mb
DataNode
主要功能:存储数据块(block)默认大小为128mb
DN启动时会向NN汇报block信息,并且之后通过向NN发送心跳保持联系(3秒一次),如果NN在10分钟内没有收到DN的心跳,就认为该DN已经lost,并copy其上的block到其他DN。
HDFS读写流程
读流程
- 客户端发送请求
- Namenode返回所有block的位置信息,并将这些信息返回给客户端
- 客户端拿到block的位置信息后调用方法读取block信息
- datanode返回给客户端
写流程
- 客户端发送请求
- namenode根据以上信息算出文件需要切成多少块block,以及block要存放在哪个datanode上,并将这些信息返回给客户端。
- 客户端调用方法首先将其中一个block写在datanode上,每一个block默认都有3个副本,并不是由客户端分别往3个datanode上写3份,而是由已经上传了block的datanode产生新的线程,由这个namenode按照放置副本规则往其它datanode写副本
- 写完后返回给客户端一个信息,然后客户端在将信息反馈给namenode
HDFS备份机制
- 第一个block存储在负载不是很高的一台服务器
- 第一个备份的block存储在与第一个block不同的机架随机一条服务器上
- 第二个备份在与第一个备份相同的机架随机一台服务器
HDFS权限
依据Linux系统的用户系统 默认权限
HDFS安全模式
- 加载fsimage,加载到内存中
- 如果edits文件不为空,那么namenode自己来合并
- 检查DN的健康情况
- 如果有DN挂掉,指挥做备份
处于安全模式过程中,如果fsimage已经加载到内存中,可以查看到文件目录,但是无法读取处于安全模式过程中,如果fsimage已经加载到内存中,可以查看到文件目录,但是无法读取