HDFS详细介绍(以下图片均为学习时截取)
HDFS是什么
HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一 全称是:Hadoop Distributed File System(Hadoop分布式文件系统);是Hadoop技术栈内提供的分布式数据存储解决方案 可以在多台服务器上构建存储集群,存储海量的数据。
了解为什么海量数据需要使用分布式存储技术
答:1、太大,单台服务器无法承担。
2、靠数量取胜 多台服务器组合,才能Hold住。
3、分布式不仅仅是解决了能存的问题, 多台服务器协同工作 带来的也是性能的横向扩展。(网络传输、磁盘读写、CPU、内存等各方面的综合提升)——分布式的性能提升。
HDFS的基础架构
一个典型的HDFS集群,就是由1个DataNode加若干(至少一个)DataNode组成。
HDFS各个组件介绍
NameNode:
HDFS系统的主角色,是一个独立的进程 负责管理HDFS整个文件系统 负责管理DataNode。
SecondaryNameNode:
NameNode的辅助,是一个独立进程 主要帮助NameNode完成元数据整理工作(打杂)。
DataNode:
HDFS系统的从角色,是一个独立进程 主要负责数据的存储,即存入数据和取出数据。
HDFS集群环境部署
注意:请完成集群前置准备工作:
链接相关文章的命令没有修改,所以复制的时候会带点版权什么的,命令不多,用到其他文章的话辛苦各位删一下,本篇内容修改后不存在这样的问题。
配置多台虚拟机:
2024.08.11更新http://t.csdnimg.cn/uVVHx
2024.08.11补充:配置多台虚拟机后:配置MAC地址
node2和node3都是从node1克隆过来的,他们的MAC地址都一样,所以需要让node2和node3重新生成MAC地址,生成方式如下:
1、配置node2的MAC地址
1)使用VMware打开node2
2)右键点击node2,选择设置
3)生成新的MAC地址
配置node3的MAC地址
node3的配置方式和node2相同,不再重复
ip固定2024.08.11修改http://t.csdnimg.cn/HZjhD
主机映射:2024.08.11修改http://t.csdnimg.cn/90GcL
ssh免密登录(以root用户为例,其他用户创建后一样):2024.08.11修改http://t.csdnimg.cn/eJKAe
Jdk:2024.08.11修改http://t.csdnimg.cn/yhePq
关闭防火墙以及SELinux关闭:2024.08.11修改http://t.csdnimg.cn/Hs14h
为了系统的安全和稳定,建议使用自建的用户来管理大数据相关的软件,这里使用hadoop用户为HDFS最高权限用户。(2024.08.11补充说明:不用管用户的事,后面需要创建并使用到的时候会说,继续弄下去就行)
下载
官方网址:https://hadoop.apache.org,本教程使用的是3.3.4版。
上传 & 解压(我的Hadoop版本为3.3.4)
注意以下路径/export/server,改写为自己想放的路径,我的软件通常都放在/export/server!!!!!!!!!和我一样就不用管。(2024.08.11修改后不再标红,自己注意一下)
1. 上传Hadoop安装包到node1节点中。
自己选择弄
2. 解压缩安装包到/export/server/中
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
3. 构建软链接
ln -s /export/server/hadoop-3.3.4 hadoop
4. 进入hadoop安装包内
cd hadoop
5. 各个文件夹含义如下
bin,存放Hadoop的各类程序(命令)
etc,存放Hadoop的配置文件 include,C语言的一些头文件
ib,存放Linux系统的动态链接库(.so文件)
libexec,存放配置Hadoop系统的脚本文件(.sh和.cmd)
licenses-binary,存放许可证文件 sbin,管理员程序(super bin)
share,存放二进制源码(Java jar包)
修改配置文件,应用自定义设置
1. 配置HDFS集群,我们主要涉及到如下文件的修改:
workers: 配置从节点(DataNode)有哪些
hadoop-env.sh: 配置Hadoop的相关环境变量
core-site.xml: Hadoop核心配置文件
hdfs-site.xml: HDFS核心配置文件
这些文件均存在与$HADOOP_HOME/etc/hadoop文件夹中。
2. 配置workers文件
进入配置文件目录
cd etc/hadoop
编辑workers文件
vim workers
填入如下内容
node1
node2
node3
表明集群记录了三个从节点(DataNode)
3. 配置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运行日志目录位置
通过记录这些环境变量, 来指明上述运行时的重要信息
4.配置core-site.xml文件
在文件内部填入如下内容,找文件中
<configuration>
</configuration>
的位置,覆盖就行
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
name:fs.defaultFS
含义:HDFS文件系统的网络通讯路径
value:hdfs://node1:8020
协议为hdfs://
namenode为node1
namenode通讯端口为8020
name:io.file.buffer.size
含义:io操作文件缓冲区大小
value:131072 bit
hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议) 表明DataNode将和node1的8020端口通讯,node1是NameNode所在机器 此配置固定了node1必须启动NameNode进程
5. 配置hdfs-site.xml文件
在文件内部填入如下内容,找文件中
<configuration>
</configuration>
的位置,覆盖就行。
<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>
</configuration>
解释
根据
namenode数据存放node1的/data/nn
datanode数据存放node1、node2、node3的/data/dn
所以应该 在node1节点:
mkdir -p /data/nn
mkdir /data/dn
在node2和node3节点:
mkdir -p /data/dn
从node1将hadoop安装文件夹远程复制到node2、node3
分发
node1执行如下命令
cd /export/server
scp -r hadoop-3.3.4 node2:`pwd`/
scp -r hadoop-3.3.4 node3:`pwd`/
在node2执行,为hadoop配置软链接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
在node3执行,为hadoop配置软链接
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
授权为hadoop用户
hadoop部署的准备工作基本完成
为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务 所以,现在需要对文件权限进行授权。
注意:请确保已经提前创建好了hadoop用户,并配置好了hadoop用户之间的免密登录!!!!
2024.08.12补充:非生产环境下可以不使hadoop用户,那么后续所有操作请在root用户下进行,最高权限为root用户,本教程以hadoop用户为所有大数据软件最高权限用户
useradd [-g -d] 用户名
#选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须#使用-g
#选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
passwd hadoop # hadoop为用户名,改代码作用是修改用户名密码,学习测试建议为12345678
hadoop用户免密登录参考root用户的ssh配置(往上翻,有链接,和root用户一样,没区别)
切换下用户就可以了
su - hadoop
完成免密登陆后,以root身份,在node1、node2、node3(所有机器)三台服务器上均执行如下命令
su - root
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
格式化整个文件系统
格式化namenode
如果最高权限为hadoop用户,确保下面操作以hadoop用户执行
su - hadoop
在node1格式化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
查看HDFS WEBUI
启动完成后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。
注意:没有配置windows系统的主机映射,将node1改为主机node1的ip!!!!!!!!
主机名映射2024.08.13修改http://t.csdnimg.cn/90GcL
在Windows挂载HDFS文件系统
2024.08.11修改NFS链接http://t.csdnimg.cn/VJ0r9