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集群环境部署
注意:请完成集群前置准备工作:
配置多台虚拟机:http://t.csdnimg.cn/hGqMzhttp://t.csdnimg.cn/hGqMz
ip固定http://t.csdnimg.cn/4IqRchttp://t.csdnimg.cn/4IqRc
主机映射:http://t.csdnimg.cn/1C15xhttp://t.csdnimg.cn/1C15x
ssh免密登录(以root用户为例,其他用户创建后一样):http://t.csdnimg.cn/dEITyhttp://t.csdnimg.cn/dEITy
Jdk:http://t.csdnimg.cn/zKRC7http://t.csdnimg.cn/zKRC7
关闭防火墙以及SELinux关闭:http://t.csdnimg.cn/K19d7http://t.csdnimg.cn/K19d7
为了系统的安全和稳定,建议使用自建的用户来管理大数据相关的软件,这里使用hadoop用户为HDFS最高权限用户。
下载
官方网址:https://hadoop.apache.org,课程使用当前最新的发行版:3.3.4版。
上传 & 解压(我的Hadoop版本为3.3.4)
注意标红位置,改写为自己想放的路径,我的软件通常都放在/export/server!!!!!!!!!
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>
<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>
<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用户之间的免密登录!!!!
以root身份,在node1、node2、node3(所有机器)三台服务器上均执行如下命令
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
格式化整个文件系统
格式化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
查看HDFS WEBUI
启动完成后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。
注意:没有配置windows系统的主机映射,将node1改为主机node1的ip!!!!!!!!
ip固定http://t.csdnimg.cn/4IqRchttp://t.csdnimg.cn/4IqRc
在Windows挂载HDFS文件系统
NFShttp://t.csdnimg.cn/hq3CU