HDFS在linux上的环境部署保姆级教程

1 介绍

HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一

•全称是:Hadoop Distributed File System(Hadoop分布式文件系统)

•是Hadoop技术栈内提供的分布式数据存储解决方案

•可以在多台服务器上构建存储集群,存储海量的数据

1.1 HDFS的基本架构

在这里插入图片描述

•NameNode:主角色,管理HDFS集群和DataNode角色

•DataNode:从角色,负责数据的存储

•SecondaryNameNode:辅助角色,协助NameNode整理元数据

2 HDFS集群环境部署操作

请确认已经完成前置准备中的服务器创建、固定IP、防火墙关闭、Hadoop用户创建、SSH免密、JDK部署等操作。

官方网址:https://hadoop.apache.org

在这里插入图片描述

本次部署基于三台虚拟机,一个主节点,两个从节点

本机演示版本为hadoop3.3.6

在这里插入图片描述

2.1下载hadoop到指定目录并解压

1.下载hadoop到指定目录并解压:
tar -zxvf hadoop-3.3.6.tar.gz -C /export/server

2.构建软链接
cd /export/server
ln -s /export/server/hadoop-3.3.6 hadoop

便于管理维护以及安全考量下非常建议新建hadoop用户进行环境配置!
并把用户及用户组权限修改为hadoop:
chown -R hadoop:hadoop /export/server/hadoop-3.3.6
chown -R hadoop:hadoop /export/server/hadoop

在这里插入图片描述

2.2 修改配置文件,应用自定义设置

请切换hadoop用户进行操作

配置HDFS集群,我们主要涉及到如下文件的修改:
workers:		配置从节点(DataNode)有哪些
hadoop-env.sh:		配置Hadoop的相关环境变量
core-site.xml:		Hadoop核心配置文件
hdfs-site.xml:		HDFS核心配置文件
这些文件均存在与$HADOOP_HOME/etc/hadoop文件夹中。

ps:$HADOOP_HOME是待会后续设置的环境变量,其指代Hadoop安装文件夹即/export/server/hadoop

2.2.1 配置workers文件

# 进入配置文件目录
cd etc/hadoop
# 编辑workers文件
vim workers
# 填入如下内容
node1
node2
node3

2.2.2 配置hadoop-env.sh文件

# 填入如下内容
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

JAVA_HOME,指明JDK环境的位置在哪
HADOOP_HOME,指明Hadoop安装位置
HADOOP_CONF_DIR,指明Hadoop配置文件目录位置
HADOOP_LOG_DIR,指明Hadoop运行日志目录位置
通过记录这些环境变量, 来指明上述运行时的重要信息

2.2.3 配置core-site.xml文件

vi core-site.xml

在文件内部填入如下内容
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.52.131:8020</value> -- (是你的Namenode主节点ip,也可是外部映射名)
  </property>

  <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>

  <property>
    <name>hadoop.proxyuser.hadoop.groups</name>
    <value>*</value>
  </property>

  <property>
    <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>*</value>
  </property>

 <property>
    <name>hadoop.http.staticuser.user</name>
    <value>hadoop</value>
 </property>

 <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
 </property>
 <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
 </property>
</configuration>


fs.defaultFS:  			定义 HDFS 的默认地址(NameNode 位置)。
io.file.buffer.size:  	设置 I/O 缓冲区大小(128KB)。
hadoop.proxyuser.*:  	允许 hadoop和 root用户代理其他用户操作(开放权限,需谨慎使用!)。
hadoop.http.staticuser.user:  指定 Web 界面的默认用户为 hadoop。

2.2.4 配置hdfs-site.xml文件

<configuration>
 <property>
  <name>dfs.datanode.data.dir.perm</name>
  <value>700</value>
 </property>

 <property>
  <name>dfs.namenode.name.dir</name>
  <value>/data/nn</value>
 </property>

 <property>
  <name>dfs.namenode.hosts</name>
  <value>node1,node2,node3</value>
 </property>

 <property>
  <name>dfs.blocksize</name>
  <value>268435456</value>
 </property>

 <property>
  <name>dfs.namenode.handler.count</name>
  <value>100</value>
 </property>

 <property>
  <name>dfs.datanode.data.dir</name>
  <value>/data/dn</value>
 </property>

 <property>
    <name>nfs.superuser</name>
    <value>hadoop</value>
  </property>

  <property>
    <name>nfs.dump.dir</name>
    <value>/tmp/.hdfs-nfs</value>
  </property>

  <property>
    <name>nfs.exports.allowed.hosts</name>
    <value>192.168.52.131 rw</value>
  </property>

  <property>
    <name>nfs.file.dump.dir</name>
    <value>/tmp/.hdfs-nfs</value>  <!-- 临时目录 -->
  </property>
  <property>
    <name>nfs.rtmax</name>
    <value>1048576</value>  <!-- 读取缓冲区大小 -->
  </property>
  <property>
    <name>nfs.wtmax</name>
    <value>1048576</value>  <!-- 写入缓冲区大小 -->
  </property>

  <property>
    <name>dfs.namenode.rpc-address</name>
    <value>192.168.52.131:8020</value>
  </property>

</configuration>


配置项作用在于:

dfs.datanode.data.dir.perm		限制 DataNode 数据目录权限(700)。
dfs.namenode.name.dir			指定 NameNode 元数据存储路径(/data/nn)。
dfs.datanode.data.dir			指定 DataNode 数据块存储路径(/data/dn)。
dfs.namenode.hosts				限制可连接的 DataNode 主机(白名单)。
dfs.blocksize					设置 HDFS 块大小为 256MB(适合大文件存储)。
dfs.namenode.handler.count		提升 NameNode 并发处理能力(100 线程)。
NFS 相关配置					  启用 HDFS NFS 网关,限制挂载权限和缓冲区大小。

2.2.5 准备数据目录

根据下述2个配置项:

在这里插入图片描述 在这里插入图片描述

namenode数据存放node1的/data/nn
datanode数据存放node1、node2、node3的/data/dn
所以应该
在node1节点:
mkdir -p /data/nn
mkdir /data/dn
在node2和node3节点:
mkdir -p /data/dn

2.2.6 分发Hadoop文件夹

目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2、node3节点

在node1执行命令:
cd /export/server
scp -r hadoop-3.3.6 node2:`pwd`/
scp -r hadoop-3.3.6 node3:`pwd`/

在node2配置软链接
ln -s /export/server/hadoop-3.3.6 /export/server/hadoop

在node3配置软链接
ln -s /export/server/hadoop-3.3.6 /export/server/hadoop

2.2.7 配置环境变量

为了方便我们操作Hadoop,可以将Hadoop的一些脚本、程序配置到PATH中,方便后续使用。

在这里插入图片描述

在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序(如启动与关闭)

vim /etc/profile

# 在/etc/profile文件底部追加如下内容
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

注意: 在node2和node3配置同样的环境变量

2.2.8 确保文件与文件夹权限所有为hadoop用户

•以root身份,在node1、node2、node3三台服务器上均执行如下命令

chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export

2.2.9 格式化整个文件系统并启动

# 格式化namenode
-- 切换为hadoop用户
# 格式化namenode
hadoop namenode -format
# 启动
# 一键启动hdfs集群
start-dfs.sh
# 一键关闭hdfs集群
stop-dfs.sh

# 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行
/export/server/hadoop/sbin/start-dfs.sh
/export/server/hadoop/sbin/stop-dfs.sh

此时可以看到主节点上的NameNode 和 SecondaryNameNode 以及datanode

在这里插入图片描述

从节点上的DataNode

在这里插入图片描述

– HDFS系统验证与Web UI查看

输入hdfs dfs + 命令即可进入hdfs系统

在这里插入图片描述

浏览器输入 NameNode 主机ip:9870 即可查看到hdfs文件系统的管理网页。

或配置好主机名映射 node1:9870 即可访问,(需要将配置文件ip同步修改为node1)

在这里插入图片描述

至此,恭喜你完成Haoop三大件之一HDFS文件系统的部署

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐