在VirtualBox中复制已经装好Hadoop和Spark程序的虚拟主机,且保持两台主机登录的用户名称相同,从而使用两台主机模拟集群环境。
配置副本主机名称为Slave1,那么之前操作的主机名称为Master
sudo vi /etc/hostname
# 输入Slave1
如果之前主机没有安装ssh服务端程序,可以在线安装并启动:
sudo yum install openssh-server
systemctl enable sshd
systemctl start sshd
在VirtualBox中配置Slave1的网卡,设置为Host Only
重新启动Slave1,可以通过ifconfig命令查看该主机的ip地址
配置master的网卡,启用网卡2,也同样被设置为Host Only
启动master,进一步设置网络。网卡2对应的设备是enp0s8,所以设置ipv4为手动,地址设置192.168.56.103,子网掩码和默认网关跟控制面板中看到的VirtualBox Host-Only Ethernet Adapter保持一致。
由于/dev中没有ifcfg-enp0s8配置文件,所以这一步可以在Fedora桌面用鼠标操作,也可以使用 nmtui
程序操作。
设置完毕就可以ping Slave1的ip地址,例如:
ping 192.168.56.101
ping可以看到有数据包被接收,那么两个主机已经建立了局域网连接。
如果已经完成主机名的配置,那么可以修改/etc/hosts
,设置好主机名称和ip地址。
sudo vi /etc/hosts
在其中添加下面两行映射信息:
192.168.56.103 master
192.168.56.101 slave1
那么可以使用主机名称代替ip地址测试是否连通:
ping slave1
如果是连通上的,那么可以进行下一步,设置无密码ssh登陆.
mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa
等待输入时按回车,无需输入任何密码
先在master上,将公钥 id_rsa.pub
加入授权:
cat ./id_rsa.pub >> ./authorized_keys
完成授权后,可以使用ssh master
命令,无需输入密码即可登陆。
以及也在Slave1上将公钥加入授权。
首先需要传输公钥到Slave1节点:
scp ~/.ssh/id_rsa.pub slave1:~
# 此处需要输入Slave1用户的密码
传输完成后,在Slave1节点上将公钥加入授权:
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
完成授权后,在master节点通过ssh登陆
ssh slave1
此时无需密码即可登陆到Slave1主机。
cd ~/hadoop/spark-3.2.3/
cp ./conf/workers.template ./conf/workers
vi ./conf/workers # 修改原本的localhost为Slave1
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
vi ./conf/spark-env.sh # 添加以下三行命令
export SPARK_DIST_CLASSPATH=$(~/hadoop/hadoop-3.2.4/bin/hadoop classpath)
export HADOOP_CONF_DIR=~/hadoop/hadoop-3.2.4/etc/hadoop
export SPARK_MASTER_IP=192.168.56.103
cd $HADOOP_HOME
vi etc/hadoop/workers # 修改原本的localhost为master和slave1两行
vi etc/hadoop/core-site.xml
core 还是保持伪分布模式设置的结果,只需要把localhost改为master:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
vi etc/hadoop/hdfs-site.xml
将原来的1改为2,这样两个就有了master和slave1两个数据节点
另外还有名称节点的属性,要先在bash新建路径之后再加进去,例如mkdir -p /home/hadoop/data/nameNode
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/nameNode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dataNode</value>
</property>
</configuration>
vi etc/hadoop/mapred-site.xml
mapreduce 还是保持伪分布中的设置,无需更改:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
vi etc/hadoop/yarn-site.xml
yarn 还是保持伪分布中的设置,无需更改:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
在Master主机上初始化名称节点:
cd $HADOOP_HOME
hdfs namenode -format
cd $HADOOP_HOME
sbin/start-all.sh
cd $SPARK_HOME
sbin/start-master.sh
sbin/start-workers.sh
访问Web UI:http://master:8080/
参考:
https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/ClusterSetup.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。