三台虚拟机搭建Hadoop集群(云计算实验新)

本文详细介绍了如何使用三台Centos虚拟机来构建Hadoop集群,包括设置静态IP,配置各节点间的免密SSH访问,关闭防火墙以及安装和配置Hadoop,包括主节点和从节点的配置,最后进行了启动和测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将介绍利用三台虚拟机实现互相免密访问并搭建Hadoop集群。

一. 创建虚拟机

1. 下载操作系统镜像源

本文利用Centos7.9版本,下载地址,需要其他版本可在阿里镜像源下载。

2. 下载虚拟机软件VMware

VMware官网链接,VMware下载指南

3. 配置三台Centos虚拟机

VMware中创建虚拟机教程,创建完成一个虚拟机之后,利用管理克隆得到三台虚拟机。
克隆虚拟机

二. 虚拟机免密登录配置

1. 虚拟机IP设置

在centos命令行输入以下指令
(1) 切换到root用户

su root

(2) 查看当前网络IP

ip add

在这里插入图片描述
可以查看到当前虚拟机的IP,我这里是192.168.3.89,但这个默认IP再次启动时会变化,我们希望有一个固定的代理IP。

(3) 打开虚拟机网卡配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

在其中加入

IPADDR=192.168.3.110         #ip地址 (更改为自己设定的IP)

重启网络服务(重要)

systemctl restart network

再次输入

ip add

在这里插入图片描述
此时输入的192.168.3.110成为了代理IP。
依照此方法将三台虚拟机的IP设定下表:

Namenode192.168.3.100
Datanode1192.168.3.110
Datanode2192.168.3.120

2. 设置三个节点间免密访问

(1) 节点配置
分别进入每个节点(虚拟机,修改它们的名字)

ssh 192.168.3.100
vi /etc/hostname
# 修改内容
Namenode

ssh 192.168.3.110
vi /etc/hostname
# 修改内容
Datanode1

ssh 192.168.3.120
vi /etc/hostname
# 修改内容
Datanode2

设置IP和主机名对应

vi /etc/hosts
# 将里面内容替换为
192.168.3.100	Namenode  
192.168.3.110	Datanode1
192.168.3.120	Datanode2

将Namenode节点配置复制到datanode上,即复制/etc/hosts的内容

#自行调整IP
scp /etc/hosts root@192.168.3.110:/etc/hosts
scp /etc/hosts root@192.168.3.120:/etc/hosts

(2) 设置密钥

# 密钥生成
ssh-keygen -t rsa //点击三次enter即可
ssh Datanode1
ssh-keygen -t rsa //点击三次enter即可
scp /root/.ssh/id_rsa.pub root@Namenode:/root/.ssh/id_rsa.pub.Datanode1
ssh Datanode2
ssh-keygen -t rsa //点击三次enter即可
scp /root/.ssh/id_rsa.pub root@Namenode:/root/.ssh/id_rsa.pub.Datanode2

# 密钥交互
ssh Namenode
cd /root/.ssh
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.Datanode1 >> authorized_keys
cat id_rsa.pub.Datanode2 >> authorized_keys
chmod 644 authorized_keys
scp ~/.ssh/authorized_keys root@Datanode1:/root/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@Datanode2:/root/.ssh/authorized_keys

(3) 防火墙设置
关闭三台虚拟机的防火墙

ssh Namenode
systemctl stop firewalld
ssh Datanode1
systemctl stop firewalld 
ssh Datanode2
systemctl stop firewalld 

(4) 连接测试

ssh Datanode1
ssh Datanode2
ssh Namenode

配置好后连接效果应如下:
连接测试效果

三. Hadoop 配置

1. 配置主节点

(1) 下载并解压所需包

ssh Namenode    //连接Namenode节点
mkdir  /home/hadoop
cd /home/hadoop/
wget http://denglab.org/cloudcomputing/download/hadoop.tar.gz
tar -zxvf hadoop.tar.gz
mkdir /home/jdk
cd /home/jdk/
wget http://denglab.org/cloudcomputing/download/jdk.tar.gz
tar -zxvf jdk.tar.gz

(2) 设置bash profile

vi ~/.bash_profile
# 替换配置文件内容
# export PATH
export JAVA_HOME=/home/jdk/jdk1.7.0_75
export JAVA_JRE=/home/jdk/jdk1.7.0_75/jre
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0

# path
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH=$JAVA_HOME/bin:$PATH

设置bash profile

source ~/.bash_profile //保存配置

(3) 修改Hadoop配置文件(以下都是将原有的配置进行替换)
配置公共属性 core-site.xml

cd $HADOOP_HOME
mkdir namenode
mkdir datanode
cd etc/hadoop/
vi core-site.xml
# 替换配置<configuration>中内容
<configuration>
	<property>
		<name>fs.default.name</name>
		<value>hdfs://Namenode:9000</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/hadoop/hadoop-2.6.0/tmp/hadoop-${user.name}</value>
	</property>
</configuration>

配置hdfs-site.xml文件

vi hdfs-site.xml
# 替换配置<configuration>中内容
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/home/hadoop/hadoop-2.6.0/namenode/name_1, /home/hadoop/hadoop-2.6.0/namenode/name_2</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/home/hadoop/hadoop-2.6.0/datanode/data_1, /home/hadoop/hadoop-2.6.0/datanode/data_2</value>
	</property>
</configuration>

配置 mapred-site.xml文件

vi mapred-site.xml
# 替换配置<configuration>中内容
<configuration>
	<property>
		<name>mapred.job.tracker</name>
		<value>Namenode:9001</value>
	</property>
</configuration>

配置java路径

vi hadoop-env.sh
# 替换原来路径内容
export JAVA_HOME=/home/jdk/jdk1.7.0_75

设置数据节点

vi slaves
# 将内容替换为
Datanode1
Datanode2

2. 配置从节点

(1) 将bash_profile从主节点复制到从节点

scp ~/.bash_profile root@Datanode1:~/.bash_profile
scp ~/.bash_profile root@Datanode2:~/.bash_profile

(2) 把hadoop,jdk文件和配置从主节点复制到从节点中(这一步花费时间略长)

scp -r /home/hadoop/ root@Datanode1:/home/hadoop
scp -r /home/hadoop/ root@Datanode2:/home/hadoop
scp -r /home/jdk/ root@Datanode1:/home/jdk
scp -r /home/jdk/ root@Datanode2:/home/jdk

3. 启动及测试hadoop

(1) 关闭namenode安全模式(重要)

ssh namenode
hdfs dfsadmin -safemode leave

关于安全模式问题参考博客
(2) 初始化并启动hadoop

cd $HADOOP_HOME
cd etc/hadoop
hdfs namenode -format   //初始化hadoop,不要多次初始化,可能会导致生成id不唯一
start-all.sh

多次初始化导致的异常可参照博客解决

(3) 查看HDFS文件系统状态

hdfs dfsadmin -report

HDFS文件系统状态

(4) 查看进程状态

jps

进程状态
(5) 测试HDFS文件系统

hadoop fs -ls /

测试文件系统
此时HDFS文件系统没有文件
在本地创建一个文件 test.txt

vi test.txt
# 添加内容 hello hadoop

(6) 上传文件

hadoop fs -put test.txt /test.txt

查看此时的HDFS文件系统

hadoop fs -ls /

测试上传文件HDFS
此时文件已经成功从本地上传到HDFS文件系统。

附:利用云服务器配置Hadoop集群可参考博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值