Hadoop-002-部署并配置HDFS集群

集群规划

Hadoop HDFS的角色包含 NameNode (主节点管理者)、DataNode (从节点工作者)、SeconddaryNameNode (从节点辅助)

节点 CPU 内存
hadoop-1 1C 4G
hadoop-2 1C 2G
hadoop-3 1C 2G

一、下载上传Hadoop包

注意: 登录hadoop-1节点root用户执行

1、官网下载安装包后上传 到hadoop-1服务器/opt目录下,可视化工具直接拖拽也可以上传

powershell 复制代码
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

解压,并配置软连接
tar -zxvf hadoop-3.2.4.tar.gz -C /opt/
ln -s /opt/hadoop-3.2.4 /opt/hadoop

二、Hadoop包目录结构

2、目录查看和解释说明

powershell 复制代码
bin,存放Hadoop的各类程序(命令)
etc,存放Hadoop的配置文件
include,C语言的一些头文件
lib,存放Linux系统的动态链接库(.so文件)
libexec,存放配置Hadoop系统的脚本文件(.sh和.cmd)
licenses-binary,存放许可证文件
sbin,管理员程序(super bin)
share,存放二进制源码(Java jar包)

三、修改配置文件

3、介绍下配置HDFS集群主要涉及到如下文件的修改:

powershell 复制代码
workers:			配置从节点(DataNode)有哪些
hadoop-env.sh:		配置Hadoop的相关环境变量
core-site.xml:		Hadoop核心配置文件
hdfs-site.xml:		HDFS核心配置文件

这些文件均存在与$HADOOP_HOME/etc/hadoop文件夹中。
$HADOOP_HOME是需要设置的环境变量, 表示Hadoop的安装目录,即/opt/hadoop-3.2.4   
由于配置了软连接,也可以表示 /opt/hadoop

4、配置workers

直接执行以下命令:表名集群记录了三个从节点

powershell 复制代码
sudo sh -c "echo 'hadoop-1' >> /opt/hadoop/etc/hadoop/workers"
sudo sh -c "echo 'hadoop-2' >> /opt/hadoop/etc/hadoop/workers"
sudo sh -c "echo 'hadoop-3' >> /opt/hadoop/etc/hadoop/workers"

5、配置hadoop-env.sh

直接执行以下命令

powershell 复制代码
sudo sh -c "echo 'export JAVA_HOME=/opt/jdk' >> /opt/hadoop/etc/hadoop/hadoop-env.sh"
sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /opt/hadoop/etc/hadoop/hadoop-env.sh"
sudo sh -c "echo 'export HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop' >> /opt/hadoop/etc/hadoop/hadoop-env.sh"
sudo sh -c "echo 'export HADOOP_LOG_DIR=\$HADOOP_HOME/logs' >> /opt/hadoop/etc/hadoop/hadoop-env.sh"

JAVA_HOME,指明JDK环境的位置

HADOOP_HOME,指明Hadoop安装位置

HADOOP_CONF_DIR,指明Hadoop配置文件目录位置

HADOOP_LOG_DIR,指明Hadoop运行日志目录位置

6、配置core-site.xml

在文件内部填入如下内容

powershell 复制代码
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-1:8020</value>
  </property>

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

key:fs.defaultFS

含义:HDFS文件系统的网络通讯路径

值:hdfs://node1:8020

协议为hdfs://

namenode为node1

namenode通讯端口为8020

key:io.file.buffer.size

含义:io操作文件缓冲区大小

值:131072 bit

hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)

表明DataNode将和node1的8020端口通讯,node1是NameNode所在机器

此配置固定了node1必须启动NameNode进程

7、配置hdfs-site.xml

powershell 复制代码
<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>hadoop-1,hadoop-2,hadoop-3</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>

key:dfs.datanode.data.dir.perm

含义:hdfs文件系统,默认创建的文件权限设置

值:700,即:rwx------

key:dfs.namenode.name.dir

含义:NameNode元数据的存储位置

值:/data/nn,在node1节点的/data/nn目录下

key:dfs.namenode.hosts

含义:NameNode允许哪几个节点的DataNode连接(即允许加入集群)

值:node1、node2、node3,这三台服务器被授权

key:dfs.blocksize

含义:hdfs默认块大小

值:268435456(256MB)

key:dfs.namenode.handler.count

含义:namenode处理的并发线程数

值:100,以100个并行度处理文件系统的管理任务

key:dfs.datanode.data.dir

含义:从节点DataNode的数据存储目录

值:/data/dn,即数据存放在node1、node2、node3,三台机器的/data/dn内

8、创建数据目录

namenode数据存放node1的/data/nn ; datanode数据存放node1、node2、node3的/data/dn

所以需要创建存放数据的目录

powershell 复制代码
在hadoop-1节点:
mkdir -p /data/nn
mkdir -p /data/dn
在hadoop-2和hadoop-3节点:
mkdir -p /data/dn

四、配置分发

9、hadoop-1已经配置完成, 将hadoop安装目录远程复制到hadoop-2和hadoop-3

powershell 复制代码
cd /opt
scp -r hadoop-3.2.4 hadoop-2:`pwd`/
scp -r hadoop-3.2.4 hadoop-3:`pwd`/
ll

分别登录hadoop-2和hadoop-3执行一次下面这个命令创建软链接

powershell 复制代码
ln -s /opt/hadoop-3.2.4 /opt/hadoop

10、配置程序PAYH

在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序,为方便操作可以配置一下环境变量

powershell 复制代码
sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile"
sudo sh -c "echo 'export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin' >> /etc/profile"
source /etc/profile

hadoop-2和hadoop-3节点都执行一下上面三个命令

11、以root身份在三台服务器上均执行授权

powershell 复制代码
hadoop在前期准备已创建并配置免密登录
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /opt

12、格式化namenode

powershell 复制代码
su - hadoop
hadoop namenode -format

13、启动hadoop

powershell 复制代码
# 一键启动hdfs集群
start-dfs.sh
# 一键关闭hdfs集群
stop-dfs.sh

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

启动后的hadoop-1节点

启动后的hadoop-2节点

启动后的hadoop-3节点

访问 http://hadoop-1:9870/ 可以访问表示部署成功 (这里可以直接使用hadoop-1是由于前期配置了Windows电脑的hosts文件)

相关推荐
宅小海2 小时前
scala String
大数据·开发语言·scala
小白的白是白痴的白2 小时前
11.17 Scala练习:梦想清单管理
大数据
java1234_小锋2 小时前
Elasticsearch是如何实现Master选举的?
大数据·elasticsearch·搜索引擎
JessieZeng aaa5 小时前
CSV文件数据导入hive
数据仓库·hive·hadoop
Java 第一深情6 小时前
零基础入门Flink,掌握基本使用方法
大数据·flink·实时计算
MXsoft6186 小时前
华为服务器(iBMC)硬件监控指标解读
大数据·运维·数据库
PersistJiao7 小时前
Spark 分布式计算中网络传输和序列化的关系(二)
大数据·网络·spark·序列化·分布式计算
九河云7 小时前
如何对AWS进行节省
大数据·云计算·aws
FreeIPCC8 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
梦幻通灵8 小时前
ES分词环境实战
大数据·elasticsearch·搜索引擎