《Hadoop 3.3.6完全分布式搭建全攻略》
一、前言
Hadoop是一个开源的分布式计算平台,在大数据处理领域有着广泛的应用,搭建Hadoop 3.3.6完全分布式环境是深入学习和应用Hadoop技术的重要基础,本攻略将详细介绍如何搭建Hadoop 3.3.6完全分布式环境,涵盖从前期准备到最终集群运行的各个环节。
二、前期准备
1、硬件环境
- 需要至少三台服务器或者虚拟机,这里假设我们有三台CentOS 7系统的虚拟机,分别命名为node1、node2和node3,每台机器的配置建议具有足够的内存(如4GB以上)、适当的磁盘空间(用于存储数据块等,至少50GB)和稳定的网络连接。
2、软件安装包准备
- 下载JDK,Hadoop运行依赖于Java环境,从Oracle官方网站或者OpenJDK官方网站下载适合CentOS 7的JDK版本,例如JDK 1.8。
- 下载Hadoop 3.3.6,从Apache Hadoop官方网站下载对应的二进制包。
3、网络配置
- 确保每台机器能够互相ping通,在每台机器上设置静态IP地址,例如在CentOS 7中,可以通过修改/etc/sysconfig/network - scripts/ifcfg - ens33
(假设网卡名称为ens33)文件来设置静态IP。
- 配置主机名映射,在每台机器的/etc/hosts
文件中添加如下内容:
- 在node1上:
```
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
```
- 按照实际IP地址修改,并在node2和node3上进行同样的配置,只是将对应的IP地址和主机名匹配好。
三、JDK安装与配置
1、安装JDK
- 在每台机器上,使用rpm - ivh
命令安装JDK包,如果下载的JDK包名为jdk - 8u291 - linux - x64.rpm
,则执行rpm - ivh jdk - 8u291 - linux - x64.rpm
。
2、配置环境变量
- 编辑/etc/profile
文件,在文件末尾添加如下内容:
```
export JAVA_HOME = /usr/java/jdk1.8.0_291
export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH =.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
```
- 执行source /etc/profile
使环境变量生效,可以通过java - version
命令来验证JDK是否安装成功。
四、Hadoop安装与配置
1、安装Hadoop
- 将下载的Hadoop 3.3.6二进制包解压到指定目录,例如/usr/local/hadoop
。
- 在/etc/profile
文件中添加Hadoop环境变量:
```
export HADOOP_HOME = /usr/local/hadoop
export PATH = $HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
```
- 执行source /etc/profile
使环境变量生效。
2、配置Hadoop核心文件
- 编辑$HADOOP_HOME/etc/hadoop/core - site.xml
文件,添加以下内容:
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
```
- 编辑$HADOOP_HOME/etc/hadoop/hdfs - site.xml
文件:
```xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
</property>
</configuration>
```
- 编辑$HADOOP_HOME/etc/hadoop/mapred - site.xml
文件:
```xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
```
- 编辑$HADOOP_HOME/etc/hadoop/yarn - site.xml
文件:
```xml
<configuration>
<property>
<name>yarn.resourcemanager.hosts</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux - services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
```
3、配置集群节点信息
- 在$HADOOP_HOME/etc/hadoop/workers
文件中,添加集群中的数据节点主机名,每行一个,
```
node2
node3
```
五、集群启动与测试
1、格式化NameNode
- 在node1上执行hdfs namenode - format
命令,这一步操作只需要在首次搭建集群或者重新初始化集群时执行。
2、启动集群服务
- 在node1上执行start - all.sh
命令,这个命令会启动Hadoop集群中的NameNode、DataNode、ResourceManager和NodeManager等服务。
- 可以通过jps
命令在每台机器上查看服务是否启动成功,在node1上应该看到NameNode、ResourceManager等进程,在node2和node3上应该看到DataNode和NodeManager进程。
3、测试集群
- 通过hadoop fs - put
命令上传一个本地文件到HDFS中,例如hadoop fs - put /home/user/test.txt /user
,然后通过hadoop fs - ls /user
命令查看文件是否上传成功。
- 还可以编写一个简单的MapReduce程序,例如WordCount程序,来测试集群的计算能力。
六、常见问题与解决
1、网络连接问题
- 如果机器之间无法ping通,需要检查网络配置,包括防火墙设置、网络拓扑等,在CentOS 7中,可以通过systemctl stop firewalld
命令临时关闭防火墙进行测试。
2、服务启动失败问题
- 如果NameNode无法启动,可能是由于格式化错误或者磁盘空间不足等原因,可以查看$HADOOP_HOME/logs
目录下的日志文件,根据日志中的错误信息进行排查。
- 如果DataNode无法启动,可能是由于节点配置错误或者与NameNode通信问题,检查hdfs - site.xml
文件中的配置项以及网络连接情况。
3、权限问题
- 在操作HDFS时,如果出现权限不足的情况,可能是由于用户权限设置不当,可以通过修改Hadoop配置文件中的用户相关配置项或者在操作时使用具有足够权限的用户来解决。
通过以上步骤,我们就成功搭建了Hadoop 3.3.6完全分布式环境,并且可以在这个集群上进行大数据相关的存储和计算任务。
评论列表