Hadoop中HDFS的架构

一、Switch语句

语法规则:

①语句中的变量类型可以是byte、short、int或者char;从javaSE5开始支持枚举类型; javaSE7开始,switch支持String。

②没有break时,后续case的语句都会执行

二、修饰符

访问修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

非访问修饰符

static : 可以使用classname.variablename 和classname.methodname的方式访问
final : final方法可以被子类继承,但不能被子类重写
abstract :抽象类的唯一目的是为了将来对该类进行扩充
synchronized :修饰的方法同一时间只能被一个线程访问
transient :序列化的对象包含被transient修饰的变量时,JVM跳过该特定的变量。

(transient单词含义:转瞬即逝的,短暂的;暂住的,(工作)临时的)

持久化:持久化是将程序数据在持久状态和瞬时状态间转换的机制。 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备。

所以被transient修饰的变量不会被持久化处理。

volatile: 翻译 -- >易变的,动荡不定的,反复无常的;(情绪)易变的,易怒的,突然发作的;(液体或固体)易挥发的,易气化的;(计算机内存)易失的。

volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

三、HDFS

HDFS(Hadoop distribute file system)是一个分布式的文件管理系统。文件上传之后就无法修改,适合一次写入,多次读出的场景。

1 优缺点

优点

  1. 高容错性:某一个副本丢失以后,他可以自动恢复
  2. 适合处理大数据:无论是文件很大,还是文件数量很大,都可以处理。
  3. 可以构建在廉价机器上,通过多副本机制,提供可靠性。

缺点

  1. 不适合低延时数据访问:做不到毫秒级的存储数据
  2. 无法高效对大量的小文件进行存储:会占用NameNode大量的内存来存储文件目录和块信息。小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标。
  3. 不支持并发写入、文件随机修改:仅仅支持数据追加,不支持文件随机修改。

2 HDFS架构

①NameNode: 就是Master,它是一个主管,管理者

(1)管理HDFS的名称空间;

(2)配置副本策略;

(3)管理数据块(Block)映射信息;

(4)处理客户端的读写请求

②DataNode: 就是Slave. NameNode下达命令,DataNode执行实际的操作。

(1)存储实际的数据块;

(2)执行数据块的读/写操作;

③客户端

(1)文件切分:根据NameNode的文件大小进行切分,Hadoop2.x/3.x默认为128MB,1.x版本为64M;

(2)与NameNode交互,获取文件的位置信息;

(3)与DataNode交互,读取或者写入数据;

(4)Client提供一些命令来管理HDFS,增删改查相关操作;

④Secondary NameNode: 并非NameNode的热备。当NameNode挂掉的时候,并不能马上替换NameNode并提供服务。

(1)辅助NameNode, 分担其工作量,比如定期合并Fsimage和Edits, 并推送给NameNode;

(2)在紧急情况下,可辅助恢复NameNode;

3 文件块

寻址时间为传输时间的1%时,为最佳状态。机械硬盘建议128MB,固态硬盘建议256MB。

  • 文件块太小,会增加寻址时间,程序一直在找块的开始位置。
  • 文件块太大,从磁盘传输数据的时间会明显大于定位这个块位置所需的时间,导致处理这块数据时,会非常慢。
相关推荐
十月南城14 小时前
Hive与离线数仓方法论——分层建模、分区与桶的取舍与查询代价
数据仓库·hive·hadoop
鹏北海-RemHusband15 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
B站计算机毕业设计超人16 小时前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
B站计算机毕业设计超人16 小时前
计算机毕业设计hadoop+spark+hive交通拥堵预测 交通流量预测 智慧城市交通大数据 交通客流量分析(源码+LW文档+PPT+讲解视频)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
AI架构师小马16 小时前
Hive调优手册:从入门到精通的完整指南
数据仓库·hive·hadoop·ai
数据架构师的AI之路16 小时前
深入了解大数据领域Hive的HQL语言特性
大数据·hive·hadoop·ai
2的n次方_17 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
前端市界18 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
文艺理科生18 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
C澒18 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构