hadoop必知必会——重要部分整理

Z-hhhhh Z-hhhhh     2022-11-30     265

关键词:

上一篇的传送门:Hadoop必知必会——重要部分整理(一)

一、HDFS在读文件时,如果一个块突然坏了

客户端读取完DataNode上的块之后会进行checksum验证,就是把客户端读取到本地的块与HDFS上的原始块进行校验,如果发现校验结果不一致,客户端会通知通知NameNode,然后再从下一个拥有该block副本的DataNode继续读。

二、HDFS在上传文件的时候,如果其中一个DataNode突然挂掉了

客户端上传文件时与DataNode建立pipeline管道,管道正是向客户端DataNode发送的数据包,管道反向时,向DataNode向客户端发送ack确认,也就是正确接收到数据包之后发送一个已确认接受的应答,当DataNode突然挂掉,客户端接收不到这个DataNode发送的ack确认,客户端会通知NameNode,NameNode检查该块的副本与规定不符,NameNode会通知DataNode去复制副本,并讲挂掉的DataNode做下线处理,不让其再参与文件的上传与下载。

三、NameNode在启动时会做哪些操作

NameNode 数据存储在内存和本地磁盘,本地磁盘数据储存在fsimage镜像文件和edits编辑日志文件

首次启动

1、格式化文件系统,生成fsimage镜像文件

2、启动NameNode

​ 读取fsimage文件,将文件内容加载到内存

​ 等待DataNode注册与发送block report

3、启动DataNode

​ 向NameNode注册

​ 发送block report

​ 检查fsimage 中记录的块的数量和block report中的快的总是是否相同

4、对文件系统进行操作(创建目录,上传文件,删除文件等)

此时内存中已经有文件系统改变的信息,但是磁盘中没有文件系统改变的信息,此时会将这些改变信息写入edits文件中,edits文件中存储的是文件系统元数据改变的信息

第二次启动NameNode

去读fsimage和edits文件

将fsimage和edits文件合并成新的fsimage文件

创建新的edits文件,内容为空

启动DataNode

四、Secondary NameNode工作机制

Secondary NameNode是合并NameNode的edits logs到fsimage文件中 具体如下:

1、Secondary NameNode询问NameNode是否需要checkpoint。直接带回NameNode是否检查结果

2、Secondary NameNode请求执行chekpoint

3、NameNode滚动正在写的edits日志

4、将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode

5、Secondary NameNode加载编辑日志和镜像文件到内存,并合并

6、生成新的镜像文件fsimage.chkpoint

7、拷贝到fsimage.chkpoint 到 NameNode

8、NameNode将fsimage.chkpoint重命名为fsimage

所以如果NameNode 中的元数据丢失,是可以从Secondary NameNode 恢复一部分元数据信息的,但不是全部,因为NameNode 正在写的edits 日志还没有拷贝到Secondary NameNode,这部分恢复不了。

五、Secondary NameNode 不能恢复NameNode 的全部数据,那如何保证NameNode 数据存储安全

NameNode具有高可用,就是NameNode HA

当一个NameNode有单点故障问题,那就配置双NameNode。一、必须要保证两个NN的元数据信息保持同步,二、当一个NN挂掉之后,另外一个立刻补上

一、为了保证两个NN数据同步,采用的是"共享存储"。每次写文件时,需要将日志同步写入共享存储,这个步骤成功才能认定写文件成功。然后备份NN从共享存储同步日志,这样就能保证两个NN的切换

二、zookeeper对NN进行监控,两个NN 节点分别有一个进程监控程序,实施读取ZK 中有NN 的状态,来判断当前的NN 是不是已经down 机。如果standby 的NN 节点的ZKFC 发现主节点已经挂掉,那么就会强制给原本的active NN 节点发送强制关闭请求,之后将备用的NN 设置为active。

六、NameNode HA中是否会出现脑裂,怎么解决脑裂

(假设NameNode1 当前为Active 状态,NameNode2 当前为Standby 状态。如果某一时刻NameNode1 对应的ZKFailoverController 进程发生了“假死”现象,那么Zookeeper服务端会认为NameNode1 挂掉了,根据前面的主备切换逻辑,NameNode2 会替代NameNode1 进入Active 状态。但是此时NameNode1 可能仍然处于Active 状态正常运行,这样NameNode1 和NameNode2 都处于Active 状态,都可以对外提供服务。这种情况称为脑裂)

解决

fencing,把旧的Active NameNode隔离起来,使他不能正常对外服务

  1. 首先尝试调用这个旧Active NameNode 的HAServiceProtocol RPC 接口的transitionToStandby 方法,看能不能把它转换为Standby 状态。
  2. 如果transitionToStandby 方法调用失败,那么就执行Hadoop 配置文件之中预定义的隔离措施,Hadoop 目前主要提供两种隔离措施,通常会选择sshfence:
    (1) sshfence:通过SSH 登录到目标机器上,执行命令fuser 将对应的进程杀死
    (2) shellfence:执行一个用户自定义的shell 脚本来将对应的进程隔离

七、小文件过多,怎么避免

hadoop上大量HDFS远数据存储在NameNode内存中,因此当小文件过多时,会压垮NameNode的内存。

​ 每个元数据对象约占150byte,所以如果有1 千万个小文件,每个文件占用一个block,则NameNode 大约需要2G 空间。如果存储1 亿个文件,则NameNode需要20G 空间
​ 显而易见的解决这个问题的方法就是合并小文件,可以选择在客户端上传时执行一定的策略先合并,或者是使用Hadoop 的CombineFileInputFormat<K,V>实现小文件的合并

八、HDFS组织架构

1、Client客户端

​ 切分文件,文件上传HDFS的时候,client将文件切分成一个一个的block,然后进行存储

​ 与NameNode交互,获取文件的位置信息

​ 与DataNode交互,来读取或写入数据

​ client提供一些命令来管理HDFS,比如启动关闭HDFS、访问HDFS目录及内容等

2、NameNode名称节点,也称主节点,储存数的元数据信息,不存储具体的数据

​ 管理HDFS的名称空间

​ 管理数据块block映射信息

​ 配置副本策略

​ 处理客户端读写请求

3、DataNode数据节点,也称从节点,NameNode下达命令,DataNode执行实际的操作

​ 存储实际的数据块

​ 执行数据块的读/写操作

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

​ 辅助NameNode分担其工作量

​ 定期合并fsimage 和 edits,并推送给NameNode

​ 在紧急情况下,可辅助恢复NameNode

❤️hadoop必知必会的基本知识❤️

🏃‍HDFS🏊‍HDFS的组成架构:这种架构主要由四个部分组成,分别为HDFSClient、NameNode、DataNode和SecondaryNameNode。下面我们分别介绍这四个组成部分。1)Client:就是客户端。 (1)文件切分。文件上... 查看详情

❤️hadoop必知必会的基本知识❤️

🏃‍HDFS🏊‍HDFS的组成架构:这种架构主要由四个部分组成,分别为HDFSClient、NameNode、DataNode和SecondaryNameNode。下面我们分别介绍这四个组成部分。1)Client:就是客户端。 (1)文件切分。文件上... 查看详情

大数据必知必会:hadoop单机环境安装(代码片段)

(大数据必知必会:Hadoop(1)单机环境安装)安装前准备操作系统准备本次安装采用的操作系统是Ubuntu20.04。更新一下软件包列表。sudoapt-getupdate安装Java8+使用命令安装Java8。sudoapt-getinstall-yopenjdk-8-jdk配置环境变量。vi~/.bashrcexportJAVA... 查看详情

大数据必知必会:hadoop高可用集群安装(代码片段)

(大数据必知必会:Hadoop(4)高可用集群安装)安装前准备高可用集群环境下,至少需要3台服务器,这里准备5台。IP地址主机名称角色10.0.0.5node1JournalNode、NameNode、ResourceManager10.0.0.6node2JournalNode、NameNode、ResourceManager10.0.0.7node3Journa... 查看详情

大数据必知必会:hadoop伪分布式安装(代码片段)

(大数据必知必会:Hadoop(2)伪分布式安装)安装前准备操作系统准备本次安装采用的操作系统是Ubuntu20.04。更新一下软件包列表。sudoapt-getupdate安装Java8+使用命令安装Java8。sudoapt-getinstall-yopenjdk-8-jdk配置环境变量。vi~/.bashrcexportJAVA... 查看详情

正则表达式必知必会(修订版)整理教程

 正则表达式必知必会(修订版)整理教程1.  正则表达式入门1.1 用途:是一种工具,主要用途是搜索变化多端的文本。匹配      到我们想要的信息。1.2 使用正则表达式:在线测试工具:http:... 查看详情

大数据必知必会:hadoop分布式集群环境安装(代码片段)

(大数据必知必会:Hadoop(3)分布式集群环境安装)安装前准备集群环境下,至少需要3台服务器。IP地址主机名称10.0.0.5node110.0.0.6node210.0.0.7node3需要保证每台服务器的配置都一致,以下步骤在3台服务器上都需要做一次。操作系统... 查看详情

hive必知必会(代码片段)

hive: 基于hadoop,数据仓库软件,用作OLAPOLAP:onlineanalyzeprocess 在线分析处理OLTP:onlinetransactionprocess在线事务处理 事务: ACID A:atomic 原子性 C:consistent 一致性 I:isolation 隔离性 D:durability 持久性 1读未提交   脏读 //事务... 查看详情

大数据linux必知必会-02(代码片段)

8网络配置8.1静态ip设置配置文件地址:/etc/sysconfig/network-scripts/ifcfg-ens33修改如下原来改成reboot重启下生效8.2修改linux主机名修改配置文件下的主机名/etc/hostname[root@hadoop~]#vim/etc/hostname修改映射文件/etc/sysconfig/network[root@hadoop~]#vim/etc 查看详情

tcp/ip,必知必会的

...TCP拥塞控制 0前言本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 1TCP/IP模型TCP/IP协议模型(TransmissionControlProtocol/InternetProtocol 查看详情

jdk8中重要的函数式接口(必知必会)

JDK8提供的重要函数式接口:Consumer(消费者)功能:接收一个对象,返回void。定义:voidaccept(Tt)默认方法:ConsumerandThen(Consumerafter)Supplier(提供者)功能:不接收参数,返回一个对象。定义:Tget()默认方法:无Function<T,R>(单参函... 查看详情

promise必知必会经典题(代码片段)

题目转载来自:https://github.com/nswbmw/node-in-debugging/blob/master/3.1Promise.md如何写出清晰优雅的代码也是调试重要的一部分,而在过去很长一段时间内,JavaScript最令人吐槽的就是回调地狱(callbackhell)了。先看一段... 查看详情

flink必知必会的重要基本知识

一、Flink基本知识1.1、Flink介绍ApacheFlink是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。Flink官网:https://flink.apache.org/Flink的中文官网:https://flink.apache.org/zh/1.2、有界与无界1.2.1、有界数据... 查看详情

flink必知必会的重要基本知识

一、Flink基本知识1.1、Flink介绍ApacheFlink是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。Flink官网:https://flink.apache.org/Flink的中文官网:https://flink.apache.org/zh/1.2、有界与无界1.2.1、有界数据... 查看详情

机器学习中必知必会的8种降维技术,最后一款超硬核!(代码片段)

欢迎关注,专注Python、数据分析、数据挖掘、好玩工具!探索性数据分析是数据科学模型开发管道的重要组成部分。数据科学家将大部分时间花在数据清洗、特征工程和执行其他数据整理技术上。降维是数据科学家在执... 查看详情

大数据必知必会:hadoop集群环境安装(代码片段)

大数据必知必会:Hadoop(3)集群环境安装安装前准备操作系统准备安装Java8+下载Hadoop安装包分布式集群安装配置域名解析配置免密登录解压安装包配置环境变量配置Hadoop集群hadoop-env.sh配置core-site.xml配置hdfs-site.xml... 查看详情

前端基础必知必会(代码片段)

前言W3C规定网页由三部分组成:结构,表现,行为。结构指的就是HTML表现指的是CSS行为指的是JavaScript这是网页的三部分,是由万维网联盟W3C规范的。一、网页、网站网页是用HTML编写的一种文件,将这种文件... 查看详情

大数据必知必会的-linux命令(代码片段)

用户的创建和删除命令用户创建和密码设置useradd用户名passwd用户名useradditheima#创建新用户itheimapasswditheima#设置用户itheima密码用户删除user-r用户名userdel-ritheima#删除用户itheima权限管理命令文件权限概述Linux操作系统是多任务多用... 查看详情