Hadoop笔记

本文详细介绍了Hadoop的大数据处理框架,包括HDFS的特性、Block概念、NameNode和DataNode的角色、副本放置策略、机架感知、SecondaryNameNode的功能,以及MapReduce的Map和Reduce阶段、数据本地化策略和Job执行流程。此外,还讨论了HDFS的写入、读取和删除流程,以及序列化、分区和排序策略。
摘要由CSDN通过智能技术生成

目录

一、大数据简介

一、6V

二、Hadoop简介

一、概述

二、版本

三、模块

四、安装(三种模式)

 三、HDFS概述

特点

一、基本概述

二、Block(介绍、意义)

HDFS切块的意义:

三、NameNode

1.HDFS中的元数据主要包含:

2.NameNode将元数据维系在内存以及磁盘中

3.和元数据相关的文件(edits、fsimage)

edits_inprogress文件的滚动条件

4.心跳信息

5.安全模式

四、副本放置策略

五、机架感知策略

六、SecondaryNameNode

七、DataNode

一、上传/写流程

二、下载/读流程

三、删除流程

一、MapReduce概述

配置环境变量

练习

问题解决(代码出现报错)

一、Writable - 序列化

二、Partitioner - 分区

三、WritableComparable - 排序

一、数据本地化策略

切片注意问题

二、Job执行流程

准备阶段:

提交/执行阶段:

一、Map端的Shuffle

注意问题

二、Reduce端的Shuffle

三、Shuffle优化


一、大数据简介

一、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文件中的元数据并没有修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值