文章目录

  • 1. HDFS整体运行机制
  • 2. HDFS的核心工作原理
  • 2.1 什么是元数据?
  • 2.2 元数据由谁负责管理?
  • 2.3 namenode把元数据记录在哪里?
  • 2.4 综述
  • 3. 安装HDFS集群的具体步骤
  • 3.1 集群节点规划
  • 3.2 搭建hdp-01虚拟机
  • 3.3 hdp-01虚拟机修改配置文件
  • 3.4 克隆虚拟机hdp-01
  • 3.5 在hdp-01节点启动namenode进程


1. HDFS整体运行机制

  • hdfs:分布式文件系统
  • hdfs有着文件系统共同的特征:
  • 有目录结构,顶层目录是:/
  • 系统中存放的就是文件
  • 系统可以提供对文件的:创建、删除、修改、查询、移动等功能
  • hdfs跟普通的单机文件系统有区别:
  • 单机文件系统中存放的文件,是在一台机器的操作系统中
  • hdfs的文件系统会横跨N多台机器
  • 单机文件系统中存放的文件,是在一台机器的磁盘上
  • hdfs文件系统中存放的文件,是落在N多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)
  • hdfs的工作机制:
  • 客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的>
  • 一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)
  • 为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的,默认是3个副本)
  • 综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

2. HDFS的核心工作原理

2.1 什么是元数据?

  • hdfs的目录结构及每一个文件的块信息(块的id,块的副本数量,块的存放位置datanode)

2.2 元数据由谁负责管理?

  • NameNode

2.3 namenode把元数据记录在哪里?

  • namenode的实时的完整的元数据存储在内存中;
  • namenode还会在磁盘中(df.namenode.name.dir)存储内存元数据在某个时间点上的镜像文件;
  • namenode会把引起元数据变化的客户端操作记录在edits日志文件中;

2.4 综述

  • Secondary namenode 会定期从namenode上下载fsimage镜像和新生成的edits日志文件,然后加载到fsimage镜像到内存中,然后顺序解析edits文件,对内存中的元数据对象进行修改(整合);
  • 整合完成后,将内存元数据序列化成一个新的fsimage,并将这个fsimage镜像文件上传给namenode
  • 上述过程被称为:checkpoint操作
  • 提示:Secondary namenode 每次做checkpoint操作时,都需要从namenode上下载上次的fsimage镜像文件吗?
  • 第一次checkpoint需要下载,以后就不需要下载了,因为自己的机器上已经有了fsimage镜像文件。

3. 安装HDFS集群的具体步骤

3.1 集群节点规划

组件

描述

操作系统

Centos7.5

Hadoop

3.1.1

OracleJDK8

JDK 1.8.0_77

X86

X86-64

Hostname

IP

Functions

内存

磁盘

hdp-01

192.168.121.61

namenode

2G

50G

hdp-02

192.168.121.62

datanode

2G

50G

hdp-03

192.168.121.63

datanode

2G

50G

hdp-04

192.168.121.64

datanode

2G

50G

3.2 搭建hdp-01虚拟机

  • 虚拟机搭建 => 静态IP配置 => 防火墙设置 => 设置hosts => 设置阿里镜像源 => 安装时间同步服务ntp => 安装jdk => 关闭Selinux和THP等 过程参照 Apache Ambari-2.7.3+Centos7离线安装–虚拟机安装
  • 设置hosts:vi /etc/hosts
  • 设置hostname:hostnamectl set-hostname hdp-01
  • 上传hadoop安装包到hdp-01
  • 新建文件:mkdir /usr/hadoop
  • 解压hadoop:tar -zxvf hadoop-3.1.1.tar.gz -C /usr/hadoop/

3.3 hdp-01虚拟机修改配置文件

要点

核心配置参数

1

指定hadoop的默认文件系统为:hdfs

2

指定hdfs的namenode节点为哪台机器

3

指定namenode软件存储元数据的本地目录

4

指定datanode软件存放文件块的本地目录

  • 1.指定hadoop的默认文件系统为:hdfs
  • 编辑文件:vim /usr/hadoop/hadoop-3.1.1/etc/hadoop/core-site.xml
<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hdp-01:9000</value>
	</property>
</configuration>

简述hdfs的四大机制 hdfs的工作机制_hdfs_03

  • 编辑文件:vim /usr/hadoop/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
  • 2.指定hdfs的namenode节点为哪台机器
  • 3.指定namenode软件存储元数据的本地目录
  • 4.指定datanode软件存放文件块的本地目录
<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/root/hdpdata/name/</value>
	</property>

	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/root/hdpdata/data</value>
	</property>

	<property>
		<name>dfs.namenode.http-address</name>
		<value>hdp-01:50070</value>
	</property>

</configuration>

简述hdfs的四大机制 hdfs的工作机制_元数据_04

  • 配置Hadoop路径:vim /etc/profile
  • source /etc/profile

3.4 克隆虚拟机hdp-01

3.5 在hdp-01节点启动namenode进程

  • 首先,初始化namenode的元数据目录
  • 要在hdp-01上执行hadoop的一个命令来初始化namenode的元数据存储目录
  • 创建一个全新的元数据存储目录
  • 生成记录元数据的文件fsimage
  • 生成集群的相关标识:如:集群id——clusterID
hadoop namenode -format
  • 然后,启动namenode进程(在hdp-01上)
hdfs --daemon start namenode	# 打开
hdfs --daemon stop namenode	# 关闭
  • 启动完后,首先用jps查看一下namenode的进程是否存在
  • 然后,在windows中用浏览器访问namenode提供的web端口:50070
    http://hdp-01:50070
  • 然后,启动众datanode们(在任意地方):
hdfs --daemon start datanode		# 打开
hdfs --daemon stop datanode		# 关闭

简述hdfs的四大机制 hdfs的工作机制_Hadoop3.1.1_05