CentOS 7 下 Hadoop全分布式集群搭建
Hadoop集群搭建
本文来自csdn的⭐️shu天⭐️,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ˘ω˘ @)ノ!!
一、概念
Hadoop的三种运行模式(启动模式):
1.单机模式(独立模式)(Local或Standalone Mode)
- 默认情况下,Hadoop即处于该模式,用于开发和调式。
- 不对配置文件进行修改。
- 使用本地文件系统,而不是分布式文件系统。
- Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
- 用于对MapReduce程序的逻辑进行调试,确保程序的正确。
2.伪分布式模式(Pseudo-Distrubuted Mode)
-
Hadoop的守护进程运行在本机机器,模拟一个小规模的集群
-
在一台主机模拟多主机。
-
Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
-
在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,
以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
- 修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
- 格式化文件系统
3.全分布式集群模式(Full-Distributed Mode)
-
Hadoop的守护进程运行在一个集群上
-
Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
-
在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
-
在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。
-
修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
-
格式化文件系统
二、基础环境
我的环境是centos7,镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/
CentOS-7-x86_64-DVD-2009.iso的版本是自带java的,推荐!
可以先配置好一个机子,之后可以克隆两个机子搭集群。
1.安装java
检测是否有java环境:
rpm -qa|grep java
如果没有则安装好java并配置环境变量
2.安装Hadoop
hadoop下载地址:https://archive.apache.org/dist/hadoop/common/
我用的是2.8.4版本:https://archive.apache.org/dist/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
在/opt 目录下创建两个子文件
mkdir /opt/module /opt/soft
解压 hadoop 到/opt/module 目录下
tar -zxvf hadoop-2.8.4.tar.gz -C /opt/module/
配置环境变量
vi /etc/profile
export JAVA_HOME=/usr
export HADOOP_HOME=/opt/module/hadoop-2.8.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile //source命令也称为“ 点命令 ”,也就是一个点符号(.),是bash的内部命令。 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
ps.寻找java安装目录
which java ls -lrt /usr/bin/java ls -lrt /etc/alternatives/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre即是我们需要添加的JAVA_HOME环境变量
3. 关闭防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //禁用防火墙
systemctl status firewalld.service //查看防火墙
//关闭 Selinux
vi /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled
4.修改IP和主机名
(1)修改IP:
修改/etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.110.51
GATEWAY=192.168.110.2
DNS1=8.8.8.8
DNS2=8.8.4.4
NETMASK=255.255.255.0