当前位置: 代码网 > 移动>阿里 > 三台虚拟机搭建Hadoop集群(云计算实验新)

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

2024年08月02日 阿里 我要评论
本文将介绍利用三台虚拟机实现互相免密访问并搭建Hadoop集群。

本文将介绍利用三台虚拟机实现互相免密访问并搭建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集群可参考

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com