本文将介绍利用三台虚拟机实现互相免密访问并搭建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设定下表:
Namenode | 192.168.3.100 |
---|---|
Datanode1 | 192.168.3.110 |
Datanode2 | 192.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
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
(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文件系统。文章来源:https://www.toymoban.com/news/detail-693188.html
附:利用云服务器配置Hadoop集群可参考博客文章来源地址https://www.toymoban.com/news/detail-693188.html
到了这里,关于三台虚拟机搭建Hadoop集群(云计算实验新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!