前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fedora 配置 Spark 实验环境(二)配置分布式环境

Fedora 配置 Spark 实验环境(二)配置分布式环境

原创
作者头像
esse LL
修改2023-11-04 16:09:00
3870
修改2023-11-04 16:09:00
举报
文章被收录于专栏:操作系统实验操作系统实验

1. 建立局域网

1.1 复刻虚拟主机

在VirtualBox中复制已经装好Hadoop和Spark程序的虚拟主机,且保持两台主机登录的用户名称相同,从而使用两台主机模拟集群环境。

1.2 主机名称配置

配置副本主机名称为Slave1,那么之前操作的主机名称为Master

代码语言:shell
复制
sudo vi /etc/hostname
# 输入Slave1

1.3 安装ssh服务端程序

如果之前主机没有安装ssh服务端程序,可以在线安装并启动:

代码语言:shell
复制
sudo yum install openssh-server
systemctl enable sshd
systemctl start sshd 

1.4 设置从节点网卡

在VirtualBox中配置Slave1的网卡,设置为Host Only

重新启动Slave1,可以通过ifconfig命令查看该主机的ip地址

1.5 设置主节点的第二网卡

配置master的网卡,启用网卡2,也同样被设置为Host Only

1.6 设置主节点的IP地址

启动master,进一步设置网络。网卡2对应的设备是enp0s8,所以设置ipv4为手动,地址设置192.168.56.103,子网掩码和默认网关跟控制面板中看到的VirtualBox Host-Only Ethernet Adapter保持一致。

由于/dev中没有ifcfg-enp0s8配置文件,所以这一步可以在Fedora桌面用鼠标操作,也可以使用 nmtui 程序操作。

设置完毕就可以ping Slave1的ip地址,例如:

代码语言:shell
复制
ping 192.168.56.101

ping可以看到有数据包被接收,那么两个主机已经建立了局域网连接。

1.7 设置主节点的hosts

如果已经完成主机名的配置,那么可以修改/etc/hosts,设置好主机名称和ip地址。

代码语言:shell
复制
sudo vi /etc/hosts

在其中添加下面两行映射信息:

代码语言:text
复制
192.168.56.103 master
192.168.56.101 slave1

那么可以使用主机名称代替ip地址测试是否连通:

代码语言:shell
复制
ping slave1

如果是连通上的,那么可以进行下一步,设置无密码ssh登陆.

2. 设置SSH登陆

2.1 生成RSA钥匙对

代码语言:shell
复制
mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa

等待输入时按回车,无需输入任何密码

2.2 主节点设置公钥验证

先在master上,将公钥 id_rsa.pub 加入授权:

代码语言:shell
复制
cat ./id_rsa.pub >> ./authorized_keys

完成授权后,可以使用ssh master命令,无需输入密码即可登陆。

以及也在Slave1上将公钥加入授权。

2.3 从节点设置公钥验证

首先需要传输公钥到Slave1节点:

代码语言:shell
复制
scp ~/.ssh/id_rsa.pub slave1:~
# 此处需要输入Slave1用户的密码

传输完成后,在Slave1节点上将公钥加入授权:

代码语言:shell
复制
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

完成授权后,在master节点通过ssh登陆

代码语言:shell
复制
ssh slave1

此时无需密码即可登陆到Slave1主机。

3. 配置Hadoop集群

代码语言:shell
复制
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 # 添加以下三行命令
代码语言:shell
复制
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
代码语言:shell
复制
cd $HADOOP_HOME
vi etc/hadoop/workers # 修改原本的localhost为master和slave1两行
vi etc/hadoop/core-site.xml

core 还是保持伪分布模式设置的结果,只需要把localhost改为master:

代码语言:html
复制
<configuration>
     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://master:9000</value>
     </property>
</configuration>
代码语言:shell
复制
vi etc/hadoop/hdfs-site.xml

将原来的1改为2,这样两个就有了master和slave1两个数据节点

另外还有名称节点的属性,要先在bash新建路径之后再加进去,例如mkdir -p /home/hadoop/data/nameNode

代码语言:html
复制
<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>
代码语言:shell
复制
vi etc/hadoop/mapred-site.xml

mapreduce 还是保持伪分布中的设置,无需更改:

代码语言:html
复制
<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>
代码语言:shell
复制
vi etc/hadoop/yarn-site.xml

yarn 还是保持伪分布中的设置,无需更改:

代码语言:html
复制
<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>

4. 启动集群

4.1 初始化名称节点

在Master主机上初始化名称节点:

代码语言:shell
复制
cd $HADOOP_HOME
hdfs namenode -format

4.2 启动Hadoop:

代码语言:shell
复制
cd $HADOOP_HOME
sbin/start-all.sh

4.3 启动Spark集群

代码语言:shell
复制
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

https://dblab.xmu.edu.cn/blog/8/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 建立局域网
    • 1.1 复刻虚拟主机
      • 1.2 主机名称配置
        • 1.3 安装ssh服务端程序
          • 1.4 设置从节点网卡
            • 1.5 设置主节点的第二网卡
              • 1.6 设置主节点的IP地址
                • 1.7 设置主节点的hosts
                • 2. 设置SSH登陆
                  • 2.1 生成RSA钥匙对
                    • 2.2 主节点设置公钥验证
                      • 2.3 从节点设置公钥验证
                      • 3. 配置Hadoop集群
                      • 4. 启动集群
                        • 4.1 初始化名称节点
                          • 4.2 启动Hadoop:
                            • 4.3 启动Spark集群
                            相关产品与服务
                            轻量应用服务器
                            轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档