HDFS基础架构以及部署
一、HDFS基础简介
- 什么是HDFS
- HDFS全称:Hadoop Distributed File System
- 是Hadoop三大组件(HDFS,MapReduce,YARN)之一
- 可在多台服务器上构建集群,提供分布式数据存储能力
- HDFS中的架构角色有哪些
- NameNode:主角色,管理HDFS集群和DataNode角色
- DataNode:从角色,复制数据的存储。
- SecondaryNameNode:辅助角色,协助NameNode整理元数据
- HDFS的基础架构
- 主从结构
二、HDFS集群部署
-
下载hadoop软件,网址:https://hadoop.apache.org(当前版本3.3.4,binary download)
-
解压缩安装包到:export/server/ 中
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
-
构建软连接
cd export/server ln -s /export/server/hadoop-3.3.4 hadoop
-
进入hadoop安装包内
cd hadoop # 文件包介绍 # bin,存放hadoop的各类程序(命令) # etc,存放hadoop的配置文件 # include,C语言的一些头文件 # lib,存放Linux系统的动态链接库(.os文件) # libexec,存放配置hadoop系统的脚本文件(.sh和.cmd) # licenses#binary,存放许可证文件 # sbin,管理员程序(super bin) # share,存放二级制源码(java jar包)
-
配置HDFS集群,主要涉及如下文件修改
-
workers:配置从节点(DataNode)有哪些
# 进入配置文件目录 cd etc/hadoop # Hadoop下面的etc # 编辑worker文件 vim workers # 填入如下内容 node1 node2 node3
-
hadoop-env.sh:配置Hadoop的相关环境
vim hadoop-env.sh # 填入如下内容 # 指明JDK环境的位置在哪儿 export JAVA_HOME=/export/server/jdk # 指明Hadoop安装位置 export HADOOP_HOME=/export/server/hadoop # 指明Hadoop配置文件目录位置 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # 指明Hadoop运行日志目录位置 export HADOOP_LOG_DIR=$HADOOP_HOME/logs # 通过记录这些环境变量,来指明上述运行时的重要信息。
-
core-site.xml:Hadoop核心配置文件
hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(hadoop内置协议)
表面DataNode将和node1的8020端口通讯,node1是NameNode所在机器
此配置固定了node1必须启动NameNode进程
vim core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> """ key:fs.defaultFS 含义:HDFS文件系统的网络通讯路径 值:hdfs://node1:8020 - 协议为hdfs:// - namenode为node1 - namenode通讯端口为8020 """ <property> <name>io.file.buffer.size</name> <value>131072</value> </property> </configuration> """ 含义:IO操作文件缓冲区大小 值:131072bit """
-
hdfs-site.xml:HDFS核心配置文件
<configuration> <property> <name>dfs.datanode.data.dir.perm</name> <value>700</value> </property> """ key:dfs.datanade.data.dir.perm 含义:hdfs文件系统,默认创建的文件权限设置 值:700,即:rwx------ """ <property> <name>dfs.namenode.name.dir</name> <value>/data/nn</value> </property> """ key:dfs.namenode.name.dir 含义:Name元数据的存储位置 值:/data/nn,在node1节点的/data/nn目录下 """ <property> <name>dfs.namenode.hosts</name> <value>node1,node2,node3</value> </property> """ key:dfs.namenode.hosts 含义:NameNode允许那几个节点的DataNode连接(即允许加入集群) 值:node1,node2, node3,这三台服务器被授权 """ <property> <name>dfs.blocksize</name> <value>268435456</value> </property> """ key:dfs.blocksize 含义:hdfs默认块大小 值:268435456(256MB) """ <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> """ key:namenode处理的并发线程数 含义:namenode处理的并发线程数 值:100,以100个并行度处理文件系统的管理任务 """ <property> <name>dfs.datanode.data.dir</name> <value>/data/dn</value> </property> """ key:dfs.datanode.data.dir 含义:从节点DataNode的数据存储目录 值:/data/dn,即数据存放在node1,node2,node3,三台机器的/data/dn内 """ </configuration>
这些文件均存在 H A D O O P H O M E / e t c / h a d o o p 文件夹中, HADOOP_HOME/etc/hadoop文件夹中, HADOOPHOME/etc/hadoop文件夹中,HADOOP_HOME是后续我们要设置的环境变量,其指代Hadoop安装文件夹即L:/export/server/hadoop
-
文件夹创建
# namenode(主角色)数据存放node1的/data/nn # datanode数据存放到node1,node2,node3的/data/dn # 所以在node1节点创建(hadoop文件夹中): mkdir -p /data/nn mkdir /data/dn # 在node2和node3节点创建: mkdir -p /data/dn
-
分发Hadoop文件夹
目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2,node3。
分发:
# 在node1执行如下命令 cd /export/server scp -r hadoop-3.3.4 node2:`pwd`/ scp -r hadoop-3.3.4 node3:`pwd`/ # pwd : 指代相同路径
在node2执行,为hadoop配置软连接
# 在node2执行如下命令 ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
在node3执行,为hadoop配置软连接
# 在node3执行如下命令 ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
-
配置环境变量
vim /etc/profile export HADOOP_HOME=/export/server/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 需要在node2和node3配置同样的环境变量。 # 重新生效环境变量 source /etc/profile
-
授权为hadoop用户
为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务,所以,现在需要对文件权限进行授权。
(请确保已经提前创建好了hadoop用户,并配置好了hadoop用户之间的免密登录)
以root身份,在node1,node2,node3三台服务器上均执行如下命令
chown -R hadoop:hadoop /data chown -R hadoop:hadoop /export # chown 更改文件夹用户操作权限
-
格式化整个文件系统
# 格式化namenode,确保以hadoop用户执行 su 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 # jps 查看当前系统运行的java类进程
-
-
查看HDFS WEBUI
启动完成后,可以在浏览器打开:http://node1:9870,即可查看到hdfs文件系统的管理网页。
-
保护集群方法-虚拟机快照