本文目录导读:
《Hadoop 3.3.6完全分布式搭建全流程》
环境准备
1、系统选择与安装
- 选择合适的Linux发行版,如CentOS 7或Ubuntu 20.04,这里以CentOS 7为例,安装过程中确保网络连接正常,设置好静态IP地址,方便后续节点间的通信。
- 对系统进行基础配置,如关闭防火墙(生产环境中需谨慎操作,可配置相关规则)和SELinux,可以使用命令systemctl stop firewalld
关闭防火墙,setenforce 0
临时关闭SELinux,编辑/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
实现永久关闭。
2、安装Java环境
- Hadoop 3.3.6需要Java 8或更高版本,从Oracle官网或OpenJDK官网下载合适的JDK版本,在CentOS 7上,可以使用yum安装OpenJDK 8。
- 执行命令yum install -y java - 1.8.0 - openjdk - devel
进行安装,安装完成后,设置JAVA_HOME
环境变量,编辑/etc/profile
文件,添加export JAVA_HOME = /usr/lib/jvm/java - 1.8.0 - openjdk - 1.8.0.312.b07 - 1.el7_9.x86_64
(根据实际安装路径调整)和export PATH = $PATH:$JAVA_HOME/bin
,然后执行source /etc/profile
使环境变量生效。
集群规划
1、节点角色分配
- 假设搭建一个简单的三节点完全分布式集群,包括一个NameNode节点、一个SecondaryNameNode节点和一个DataNode节点,在实际生产环境中,可以根据需求增加DataNode节点的数量。
- NameNode负责管理文件系统的命名空间,维护文件系统树以及整个文件系统的元数据,SecondaryNameNode辅助NameNode进行元数据的备份和检查点操作,DataNode负责存储实际的数据块。
2、主机名与IP地址映射
- 在每个节点上编辑/etc/hosts
文件,添加集群中所有节点的主机名和IP地址映射关系。
- 在NameNode节点(假设IP为192.168.1.100)上,编辑/etc/hosts
文件,添加以下内容:
```
192.168.1.100 namenode
192.168.1.101 secondarynamenode
192.168.1.102 datanode
```
- 然后在每个节点上设置主机名,使用命令hostnamectl set - hostname [主机名]
,并重启网络服务systemctl restart network
。
Hadoop安装与配置
1、下载与解压Hadoop
- 从Hadoop官方网站下载Hadoop 3.3.6版本的二进制包,将下载的压缩包上传到NameNode节点(也可以在每个节点分别下载)。
- 在NameNode节点上执行解压命令,如tar -zxvf hadoop - 3.3.6.tar.gz -C /opt/
,将Hadoop解压到/opt/
目录下。
2、配置Hadoop核心文件
hadoop - env.sh:编辑/opt/hadoop - 3.3.6/etc/hadoop/hadoop - env.sh
文件,设置JAVA_HOME
变量,确保其指向正确的Java安装路径。
core - site.xml:该文件用于配置Hadoop的核心参数,创建如下配置:
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
```
hdfs - site.xml:主要用于配置HDFS相关参数。
```xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.secondary.namenode.http - address</name>
<value>secondarynamenode:50090</value>
</property>
</configuration>
```
mapred - site.xml:配置MapReduce相关参数。
```xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>namenode:19888</value>
</property>
</configuration>
```
yarn - site.xml:用于配置YARN相关参数。
```xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux - services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux - services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
```
3、配置SSH免密登录
- 在NameNode节点上生成SSH密钥对,使用命令ssh - keygen - t rsa
,一路回车采用默认设置。
- 将公钥复制到其他节点,包括自身,将公钥复制到SecondaryNameNode和DataNode节点,可以使用命令ssh - copy - id namenode
、ssh - copy - id secondarynamenode
和ssh - copy - id datanode
。
集群启动与测试
1、格式化NameNode
- 在NameNode节点上,进入Hadoop的安装目录下的bin
目录,执行命令hdfs namenode - format
,这一步操作会初始化文件系统的元数据,创建相关的目录结构,如dfs.namenode.name.dir
指定的目录。
2、启动集群
- 在NameNode节点上,执行/opt/hadoop - 3.3.6/sbin/start - all.sh
命令来启动整个Hadoop集群,这一命令会依次启动NameNode、SecondaryNameNode、DataNode、ResourceManager和NodeManager等服务。
- 可以通过查看各个节点上的日志文件来检查服务是否启动成功,NameNode的日志文件位于/data/hadoop/namenode/current
目录下(根据dfs.namenode.name.dir
的配置),DataNode的日志文件位于/data/hadoop/datanode/current
目录下。
3、测试集群
- 使用hdfs dfs - mkdir - p /user/[用户名]
命令在HDFS上创建一个用户目录,如果当前用户为hadoop
,则执行hdfs dfs - mkdir - p /user/hadoop
。
- 然后可以使用hdfs dfs - put
命令上传一个本地文件到HDFS中,如hdfs dfs - put /etc/hosts /user/hadoop/
。
- 还可以通过Web界面来查看集群的状态,在浏览器中输入http://namenode:9870
(Hadoop 3.x中NameNode的默认Web端口)可以查看HDFS的状态,输入http://namenode:8088
可以查看YARN的状态。
通过以上步骤,就可以成功搭建一个Hadoop 3.3.6的完全分布式集群,并进行基本的文件操作和集群状态查看,在实际应用中,还需要根据具体的业务需求进一步优化集群配置,如调整内存分配、增加节点数量等。
评论列表