HDFS在linux上的环境部署保姆级流程
·
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文件系统的部署
更多推荐
所有评论(0)