bigdata-10-Hadoop内容扩展

简介: bigdata-10-Hadoop内容扩展

Hadoop序列化机制

当程序在向磁盘中写数据和读取数据时会进行序列化和反序列化,磁盘IO的这些步骤无法省略,我们可以从这些地方着手优化。

  • 当我们想把内存数据写到文件时,写序列化后再写入,将对象信息转为二进制存储,默认Java的序列化会把整个继承体系下的信息都保存,这就比较大了,会额外消耗性能。
  • 反序列化也是一样的,如果文件很大,加载数据进内存也需要耗费很多资源。

鉴于上述问题,Hadoop提供了常用类型的序列化

Java基本类型

Writable

序列化大小(字节)

布尔型

BooleanWritable

1

字节型

ByteWritable

1

整型

IntWritable

4

VIntWritable

1-5

浮点型

FloatWritable

4

长整型

LongWritable

8

VLongWritable

1-9

双精度浮点型

DoubleWritable

8

Text等价于java.lang.String的Writable,针对UTF-8序列 NullWritable是单例,获取实例使用NullWritable.get()。

优化后的特点:

  • 紧凑: 高效使用存储空间
  • 快速: 读写数据的额外开销小
  • 可扩展: 可透明地读取老格式的数据
  • 互操作: 支持多语言的交互

Java序列化的不足:

  • 不精简,附加信息多,不太适合随机访问
  • 存储空间大,递归地输出类的超类描述直到不再有超类

InputFormat分析

Hadoop中有一个抽象类是InputFormat,InputFormat抽象类是MapReduce输入数据的顶层基类,这个 抽象类中只定义了两个方法。

一个是getSplits方法

另一个是createRecordReader方法

这个抽象类下面有三个子继承类,

DBInputFormat是操作数据库的,

FileInputFormat是操作文件类型数据的,

DelegatingInputFormat是用在处理多个输入时使用的

这里面比较常见的也就是 FileInputFormat 了,

FileInputFormat 是所有以文件作为数据源的基类, FileInputFormat保存job输入的所有文件,并实现了对输入文件计算splits的方法,至于获得文件中数据 的方法是由子类实现的。 FileInputFormat下面还有一些子类:

  • CombineFileInputFormat:处理小文件问题的,后面我们再详细分析 TextInputFormat:是默认的处理类,处理普通文本文件,他会把文件中每一行作为一个记录,将每 一行的起始偏移量作为key,每一行的内容作为value,这里的key和value就是我们之前所说的k1,v1 它默认以换行符或回车键作为一行记录
  • NLineInputFormat:可以动态指定一次读取多少行数据

参考:

hadoop的源码: https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz

面试题

  1. 一个1G的文件,会产生多少个map任务? 答:Block块默认是128M,所以1G的文件会产生8个Block块 默认情况下InputSplit的大小和Block块的大小一致,每一个InputSplit会产生一个map任务 所以:1024/128=8个map任务
  2. 1000个文件,每个文件100KB,会产生多少个map任务? 答:一个文件,不管再小,都会占用一个block,所以这1000个小文件会产生1000个Block, 那最终会产生1000个InputSplit,也就对应着会产生1000个map任务
  3. 一个140M的文件,会产生多少个map任务? 答:根据前面的分析 140M的文件会产生2个Block,那对应的就会产生2个InputSplit了? 注意:这个有点特殊,140M/128M=1.09375<1.1 所以,这个文件只会产生一个InputSplit,也最终也就只会产生1个map 任务。 这个文件其实再稍微大1M就可以产生2个map 任务了。

2.10-官方文档使用

官网截图先来一张。

三步使用法:

1.下载

2.开始

3.阅读文档

Download没什么好说的,下载好部署即可

Getting Started

主要包含了一些分布式配置信息和伪分布式配置信息等等

Documentation

主要是Hadoop一些核心操作的文档等

CDH

Cloudera发型公司的Hadoop集群,6.X版本后收费并升级为CDP

HDP

另一发行版Hadoop,应用不如CDH广泛

一键导入Vmware开箱即可用,组件包括常用的技术。

目录
相关文章
|
7月前
|
分布式计算 网络协议 Hadoop
Hadoop节点资源扩展网络配置
【4月更文挑战第16天】在扩展Hadoop节点资源时,网络配置至关重要。要点包括:保证网络连通性,确保新节点与集群间稳定通信;配置DNS和主机名解析,便于节点间通过名称通信;设置SSH免密码登录,简化集群管理;更新Hadoop配置文件以反映集群新状态;优化网络性能以提升数据传输效率;最后,测试验证确保集群正常运行和性能。具体配置应参照Hadoop版本及环境的官方文档。
58 4
|
7月前
|
分布式计算 资源调度 Hadoop
Hadoop节点资源扩展环境部署
【4月更文挑战第16天】扩展Hadoop集群涉及多个步骤:准备新节点,配置静态IP,安装并配置Hadoop,将新节点添加到集群,验证测试,及优化调整。确保符合硬件需求,更新集群节点列表,执行`hdfs dfsadmin -refreshNodes`命令,检查新节点状态,并依据测试结果优化性能。注意不同环境可能需要调整具体步骤,建议参照官方文档并在测试环境中预演。
63 4
|
7月前
|
存储 分布式计算 固态存储
Hadoop节点资源扩展硬件选择
【4月更文挑战第16天】在扩展Hadoop节点资源时,重点是选择合适的硬件。推荐使用x86架构的机架式服务器,配备多核高主频处理器以提升计算能力,确保至少16GB内存以支持高效数据处理。选择高容量、高速度的SAS或SSD硬盘,并利用RAID技术增强数据冗余和容错。网络方面,需要千兆以太网或更快的连接以保证数据传输。同时,要考虑成本、功耗和维护,确保硬件与Hadoop版本兼容,并在选购前进行充分测试。
75 3
|
5月前
|
存储 分布式计算 Hadoop
阿里巴巴飞天大数据架构体系与Hadoop生态系统的深度融合:构建高效、可扩展的数据处理平台
技术持续创新:随着新技术的不断涌现和应用场景的复杂化,阿里巴巴将继续投入研发力量推动技术创新和升级换代。 生态系统更加完善:Hadoop生态系统将继续扩展和完善,为用户提供更多元化、更灵活的数据处理工具和服务。
|
7月前
|
分布式计算 监控 Hadoop
Hadoop节点扩展确保网络连通性
【4月更文挑战第19天】
69 4
|
7月前
|
存储 分布式计算 Hadoop
Hadoop节点资源扩展目录建立
【4月更文挑战第16天】
66 4
|
7月前
|
分布式计算 网络协议 Hadoop
Hadoop节点扩展配置DNS和主机名解析
【4月更文挑战第19天】
170 1
|
7月前
|
分布式计算 监控 负载均衡
Hadoop节点资源扩展
【4月更文挑战第14天】Hadoop节点扩展涉及硬件选择、环境部署、网络配置、目录建立、集群配置、服务启动、数据迁移和负载均衡。关键在于确保新节点与集群兼容,资源均衡,以及使用优化策略如数据分区、压缩、容器化和智能化管理。实际操作应参考官方文档,考虑版本、配置和需求差异,大型集群可能需专业工具协助。
41 2
|
7月前
|
存储 分布式计算 Hadoop
Hadoop集群规模扩展
【4月更文挑战第14天】Hadoop集群扩展可通过添加更多节点、垂直扩展(增强单节点资源)和水平扩展(增加节点数量)来实现。关键点包括规划扩展策略、确保集群稳定性和优化配置。注意在扩展过程中要保证数据完整性,并根据需求调整以提升集群性能和效率。
92 1
|
资源调度 Shell API
Hadoop3.0扩展Yarn资源模型详解2:资源Profiles说明
Hadoop3.0扩展Yarn资源模型详解2:资源Profiles说明
146 0

相关实验场景

更多