0%

IDEA的扩展功能

之前每次我们想要去修改集群中的一些配置文件,采用的方式是vim,这种方式对于非常熟悉vim命令的程序员来说是很方便的,但是对于我们大多数初学者很不友好。前面我们使用过IDEA去编写Java代码,这种方式十分高效,那么如果可以使用IDEA去直接修改配置文件,那我们代码的编写效率就可以大大提升了。

IDEA中是有这样的功能的,接下来我们一起操作。

依次点击工具->部署->浏览远程主机

image-20230803215128330

阅读全文 »

HA概述

  1. 所谓HAHigh Availablity),即高可用(7 * 24小时不中断服务)。
  2. 实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFSHAYARNHA
  3. NameNode主要在以下两个方面影响HDFS集群
    • NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启。
    • NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用。

HDFS HA功能通过配置多个NameNodes(Active/Standby)实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

阅读全文 »

Zookeeper入门

概述

Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。官网链接

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

image-20230731112612585

阅读全文 »

HDFS故障排除

集群安全模式

什么是安全模式

安全模式是Hadoop集群的一种状态,集群一旦处于安全模式,此时文件系统只接收读取数据请求,不接受删除、修改等变更请求。

进入安全模式场景

  • NameNode在加载镜像文件和编辑日志期间处于安全模式。

  • NameNode再接收DataNode注册时,处于安全模式。

    阅读全文 »

什么是YARN

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

YARN基础架构

YARN主要由ResourceManagerNodeManagerApplicationMasterContainer等组件构成。

阅读全文 »

数据压缩概述

压缩的好处和坏处

压缩的优点:以减少磁盘IO、减少磁盘存储空间。

压缩的缺点:增加CPU开销。

压缩原则

  1. 运算密集型的Job,少用压缩。
  2. IO密集型的Job,多用压缩。
阅读全文 »

OutputFormat数据输出

OutputFormat概述

OutputFormatMapReduce输出的基类,所有实现MapReduce输出都实现了OutputFormat接口。

MR中默认的使用的OutputFormat子类是TextOutputFormat

源码分析

打开IDEA,双击两下Shift键搜索OutputFormat查看源码,然后将光标防放在OutputFormat类名上按Ctrl + H查看层次结构。

阅读全文 »

MapReduce的构成

image-20230718113427534

从流的角度

Input ---> InputFormat --->Mapper--->Shuffle--->Reducer--->OutputFormat--->Output

从不同的阶段

Map阶段---->Reduce阶段

Map阶段 ---> Shuffle(Map后半段+Reduce前半段)--->Reduce阶段

从源码的角度

MapTaskmap ---> sort

1
2
mapPhase = getProgress().addPhase("map", 0.667f);
sortPhase = getProgress().addPhase("sort", 0.333f);

ReduceTask : copy ---> sort ---> reduce

1
2
3
copyPhase = getProgress().addPhase("copy");
sortPhase = getProgress().addPhase("sort");
reducePhase = getProgress().addPhase("reduce");
阅读全文 »

序列化概述

什么是序列化

序列化:就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。

反序列化:就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。

为什么要序列化

一般来说,“活的”对象只生存在内存里,关机断电就没有了。而且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。

阅读全文 »

MapReduce定义

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。

MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

阅读全文 »