目录
一、大数据简介
一、6V
1.数据体量大:一般中小型公司以TB为单位来进行操作,大型公司以PB为单位
2.数据的种类和来源多:
种类:文本、图片、音频、视频、flash、地图等,
来源:日志、爬虫、网页埋点、数据库、手动录入等
3.数据的增长速度越来越快。随着网络的发展,数据的产生速度和传播速度越来越快的
4.数据的价值密度越来越低。价值密度越来越低不意味着数据越来越少,正相反,数据越来越多,只是需要的数据的增长速度比不上样本总量的增长速度
5.数据的价值/真实性。随着信息时代的发展,虚假信息也越来越多,导致在获取数据的时候需要考虑数据的真实性
6.数据的连通性。随着大数据的发展,大数据衍生出来越来越多的模块,就需要考虑不同模块之间的关联性、动态性、可视化、合法性
二、Hadoop简介
一、概述
Hadoop是Yahoo!开发后来贡献给了Apache的一套开源的、可靠的、可伸缩(可扩展)的分布式系统
Hadoop提供了简单的编程模型来对大量数据进行分布式计算
Hadoop能够从1台服务器扩展到上千台服务器
Hadoop提供了用于检测和处理异常/错误的手段
Hadoop之父:Doug Cutting
Hadoop的版本非常混乱,而Hadoop作为大数据的基础生态框架,不同版本和其他组件的兼容性还不一样
二、版本
Hadoop1.0:包含了Common,HDFS和MapReduce
Hadoop2.0:包含了Common,HDFS,MapReduce和YARN。Hadoop2.0和Hadoop1.0不兼容。从Hadoop2.7版本开始,包含Ozone模块
Hadoop3.0:包含了Common,HDFS,MapReduce,YARN和Ozone。 Hadoop3.0和Hadoop2.0的部分版本兼容
三、模块
Hadoop Common:基本模块
Hadoop Distributed File System(HDFS):分布式存储
Hadoop YARN:任务调度和资源管理
Hadoop MapReduce:分布式计算
Hadoop Ozone:对象存储
四、安装(三种模式)
单机模式:只能启动MapReduce模块
伪分布式:启动HDFS、MapReduce和YARN的大部分功能
完全分布式:启动Hadoop的所有模块的所有功能
三、HDFS概述
HDFS(Hadoop Distributed File System)是Hadoop提供的一套用于进行分布式存储的文件系统HDFS是Doug仿照Google的GFS来实现的
特点
能够存储超大文件 - 切块
能够快速的应对和检测故障 - 心跳
能够在相对廉价的机器上进行横向扩展
不支持低延迟的响应
不建议存储大量的小文件
简化的一致性模型:一次写入、多次读取,不允许修改但是允许追加写入
不支持事务。在样本量足够大的前提下,允许产生容错误差
一、基本概述
HDFS本身是一个典型的MS结构的框架:主节点NameNode,从节点DataNode - 通过slaves文件来指定从节点,HDFS的主节点通过hdfs-site.xml来指定
HDFS对会上传的数据进行切分,切成数据块(Block)来存储到不同的DataNode上
HDFS会对存储的数据来进行备份,每一个备份称之为是一个副本(replication/replicas)。副本策略默认为3
NameNode需要记录元数据(metadata),元数据就类似于账本
HDFS仿照Linux设计了一套文件系统,允许将文件存储在不同的虚拟路径下,根路径是/
在HDFS中,会将每一个写操作看作是一个事务,并且分配递增的事务id,称之为txid
二、Block(介绍、意义)
Block是HDFS中数据存储的基本形式,即任意一个文件存储到HDFS上之后都是以Block形式来存储
在Hadoop2.0中,Block的大小默认是128M,可以通过dfs.blocksize来进行调节,单位是字节,放在hdfs-site.xml中
如果一个文件不足一个Block的默认大小,那么这个文件放到HDFS上之后,文件本身是多大就占多大的地方,对应的Block也是文件的实际大小
HDFS会为每一个Block分配一个唯一的Block ID
HDFS会为每一个Block分配一个递增的Generation Stamp
HDFS切块的意义:
能够存储超大文件
能够快速的备份
三、NameNode
NameNode是HDFS中的主节点,默认情况下HDFS中,NameNode只有一个
作用:记录元数据,管理DataNode
元数据是描述数据的数据,可以理解为是一个账本
1.HDFS中的元数据主要包含:
文件的上传路径
上传用户
文件的权限
文件大小
Block大小
文件和BlockID的映射关系
Block的Genertion Stamp
BlockID和DataNode的映射关系
副本数量
2.NameNode将元数据维系在内存以及磁盘中
维系在内存中的目的是为了读写快
维系在磁盘中的目的是为了持久化
元数据在磁盘上的存储路径由属性hadoop.tmp.dir来决定,这个属性是放在core-site.xml中。如果不指定,那么默认是放在/tmp下
3.和元数据相关的文件(edits、fsimage)
edits:操作文件:记录NameNode接收的每一个写请求
fsimage:元映像文件。记录元数据的,但是注意,这个文件中的元数据和内存中的元数据并不是同步的
当NameNode收到写请求的时候,会先将写请求这个命令本身记录到edits_inprogress文件中,如果记录成功更新内存中的元数据。如果内存中的元数据更新成功,就会给客户端返回ack信号。注意,此时fsimage文件中的元数据并没有修改