Spark Standalone模式部署

准备至少2台虚拟机,装好linux系统,我装的是Ubuntu20.04。

1.修改主机名(每台)

1)修改/etc/hostsname内容,主节点改为master,子节点改为slaver1

        sudo vim /etc/hostname

2)在/etc/hosts中修改各个节点的IP与主机名的对应:

        sudo vim /etc/hosts

修改如下:
        192.168.50.193 master
        192.168.50.40 slave1

2.配置ssh免密码登录(每台)

2.1 安装ssh,并启动       

sudo apt-get install openssh-server
sudo /etc/init.d/ssh start

2.2 检查是否正确启动

 ps -e | grep ssh

2.3 配置免密码登录

为了能够无密码登录本地localhost,需要生成SSH密钥并配置免密码登录。

1 )生成密钥对:

ssh-keygen -t rsa -P ""  //-t 指定生成RSA类型的密钥以及管理密钥

一直回车,会在/root/.ssh/文件夹下生成id_rsa id_rsa.pub
        id_rsa         —— 私有密钥
        id_rsa.pub  —— 公有密钥

2) 把id_rsa.pub追加到authorized_key里面去

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3)修改/etc/ssh/sshd_config 文件,使得本机允许远程连接 

RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitRootLogin yes

4)重启ssh 

        service ssh restart

5)修改权限:
        chmod 600 ~/.ssh/authorized_keys
        chmod 700 ~/.ssh

2.3 pub复制

2.3.1 把master里的pub复制到slave1。
scp /home/wang/.ssh/id_rsa.pub slave1@slave1:/home/slave1/.ssh/id_rsa.pub_sl 
2.3.2 传过来的公钥追加到authorized_keys

在slave1中转到.ssh路径下,执行如下命令

cat id_rsa.pub_sl >> authorized_keys

2.3.3  在master验证ssh

        ssh slave1@slave1

3.Hadoop安装(每台)

3.1 下载hadoop-3.3.6

http://https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/

3.2 安装

将下载好的安装包拷贝到虚拟机,在其所属目录下打开终端,执行如下代码:

sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/

3.3 配置

3.3.1 修改core-site.xml
<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop-3.3.6/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property>
</configuration>
3.3.2 修改 hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop-3.3.6/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop-3.3.6/tmp/dfs/data</value></property><property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value></property>
</configuration>
3.3.3 修改 mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value></property> 
</configuration>
3.3.4 修改yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>
3.3.5 修改workers
vim /usr/local/hadoop-3.3.6/etc/hadoop/workers

改为如下内容

master
slave1
 3.3.6 分发 

把Master节点上的“/usr/local/hadoop-3.3.6”文件夹复制到各个节点上。如果之前已经运行过伪分布式模式,建议在切换到集群模式之前首先删除之前在伪分布式模式下生成的临时文件。

master节点上:

cd /usr/local
sudo rm -r ./hadoop-3.3.6/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop-3.3.6/logs/*   # 删除日志文件
tar -zcf ~/hadoop_master.tar.gz ./hadoop-3.3.6   # 先压缩再复制
scp ~/hadoop_master.tar.gz slave1:/tmp

slave1节点上执行 :

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf /tmp/hadoop_master.tar.gz -C /usr/local
sudo chown -R slave1 /usr/local/hadoop-3.3.6
3.3.7 格式化

 在master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点)

cd /usr/local/hadoop-3.3.6/bin
./hdfs namenode -format
3.3.8 启动Hadoop 
cd /usr/local/hadoop-3.3.6/sbin
./start-all.sh

在master,slave1分别输入jps,查看节点启动情况

mater

slave1

 

 在浏览器输入master:9870,查看启动情况

4.Java环境搭建(每台)

4.1 安装jdk

更新Ubuntu软件包,安装default-jdk

sudo apt update
sudo apt install default-jdk

查看java版本

java -version


4.2 配置环境变量

编辑.bashrc文件

vim ~/.bashrc

配置Hadoop和Java的环境变量

export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME

是配置文件生效,查看hadoop版本号 

source ./.bashrc
hadoop version

 


 

5.Spark安装(master)

5.1下载spark-3.3.0

在Linux上的浏览器直接下载spark-3.3.0,下载地址如下:

https://archive.apache.org/dist/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz

转到文件所在路径执行解压

sudo tar -xzf spark-3.3.0-bin-hadoop3.tgz -C /usr/local/

5.2 配置Spark环境变量

vim ~/.bashrc

在最后一行添加如下内容: 

export SPARK_HOME=/usr/local/spark-3.3.0-bin-hadoop3
export PATH=$JAVA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source ./.bashrc

5.3 修改配置文件

进入spark conf目录:

cd /usr/local/spark-3.3.0-bin-hadoop3/conf

拷贝模板文件:

cp spark-defaults.conf.template spark-defaults.conf
cp spark-env.sh.template spark-env.sh
cp workers.template workers
5.3.1 修改spark-defaults.conf

1). 进入spark-defaults.conf文件:

vim spark-defaults.conf

2). 添加如下内容:

spark.master spark://master:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
spark.executor.memory 1g
5.3.2 修改spark-env.sh

1). 进入spark-env.sh文件:

vim spark-env.sh

2). 添加如下内容:

export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop-3.3.6
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.6/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-3.3.6/bin/hadoop classpath)
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
 5.3.3 修改workders文件

1)  进入workers文件:

vim workers

2) 删除localhost后,添加如下内容:

master
slave1

3) 分发spark目录到其他节点

cd /usr/local/ 
scp -r ./spark-3.3.0-bin-hadoop3 slave1@slave1:/usr/local/ 

6.启动

# 切换到 standalone 模式的安装目录下
cd /usr/local/spark-3.3.0-bin-hadoop3
# 启动
sbin/start-all.sh 

 启动成功后,在浏览器输入http://192.168.50.193:8080/,查看运行情况,注意这里的IP是master节点的IP。

standalone 模式部署完成。

7. 遇到的问题及解决

 7.1 分发节点时,出现Permission denied

scp: /usr/local/spark-3.3.0-bin-hadoop3: Permission denied

方法1、修改本地文件夹,sudo chmod 777 + 文件夹名字,测试是否可行。
方法2、目标主机上创建该文件夹,然后将下层文件传过去,或者文件夹整个传过去再去一层文件夹。
方法3:scp到目标主机的/tmp,然后用mv移动到你想放的位置。

解决办法参考:scp: /usr/local/hadoop: Permission denied问题解决_scp: /home/hadoop/hadoop.master.tar.gz: permission-CSDN博客

  7.2 节点用户名不一致,启动失败问题

在启动spark时,出现如下问题。

master的用户名是wang,子节点的用户名是slave1,在启动时默认使用了master的用户名,导致启动失败,实际应该是slave1@slave1。 

解决:在master主机上修改(或者是创建) ~/.ssh/config文件,输入如下内容
        Host slave1
        user slave1

有多个节点,都需要配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2978902.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Netty】使用Netty实现自己的通信协议

前言 基于Netty开发的网关 为什么需要自定义协议这一点的理由其实很容易想到。 比如对于我们比较熟知的Dubbo&#xff0c;其内部的协议就是自定义的。 之所以需要自定义协议&#xff0c;无非是因为&#xff1a;没有一种标准化协议来满足不同差异化需 求。 因此很多的中间件都会…

揭秘“磁盘管理未知没有初始化”背后的秘密与应对策略

在日常使用电脑的过程中&#xff0c;我们有时会遇到一个令人头疼的问题——磁盘管理显示“未知没有初始化”。这种情况意味着系统无法正确识别和管理该磁盘&#xff0c;导致我们无法访问其中的数据。那么&#xff0c;究竟什么是“磁盘管理未知没有初始化”&#xff1f;又该如何…

等保测评之主机测评详解(二级)

等保测评之主机测评详解&#xff08;二级&#xff09;服务器——Windows 身份鉴别: 测评项a&#xff09;&#xff1a; a&#xff09;应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换&#xff1b; 整改方…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中&#xff0c;比如发布某篇文章&#xff0c;需要取文章中的某张图片作为封面&#xff0c;那么此时需要文章内容&#xff0c;获取html内容中的图片地址作为封面&#xff0c;下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

公司文件如何加密?

在数字化办公的今天&#xff0c;公司文件的加密不仅是保护企业机密的重要措施&#xff0c;也是维护企业竞争力的必要手段。通过使用专业的数据安全解决方案&#xff0c;比如华企盾DSC数据防泄密系统&#xff0c;企业可以有效地对文件进行加密&#xff0c;确保数据安全。 加密方…

Ventus(承影):基于RISC V的开源GPGPU

Ventus&#xff08;承影&#xff09;&#xff1a;基于RVV的开源GPGPU 清华大学集成电路学院dsp-lab的承影RVV GPGPU设计文档。 整体目标 提供一个开源的基于RVV的GPGPU实现方案&#xff0c;并给出软件映射方案、指令集&#xff08;支持的指令及特性、添加的自定义指令&#xf…

WPS Office 2019 专业增强版,高效办公新体验 (WPS2019企业版 v11.8.2.12188)

WPS Office 2019 专业增强版&#xff0c;高效办公新体验 本站所有素材均来自于互联网&#xff0c;版权属原著所有&#xff0c;如有需要请购买正版。如有侵权&#xff0c;请联系我们立即删除。引用

【Qt 学习笔记】Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明 文章编号&am…

Php-WebView 现代跨平台 GUI分享

GitHub :php-webview 一个用于 C/C 的小型跨平台 Web 视图库&#xff0c;用于构建现代跨平台 GUI。 该项目的目标是为最广泛使用的平台创建一个通用的 HTML5 UI 抽象层。 它支持双向 JavaScript 绑定&#xff08;从 C/C 调用 JavaScript 和从 JavaScript 调用 C/C&#xff09;。…

【智能算法】蜉蝣算法(MA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;K Zervoudakis等人受到自然界蜉蝣交配繁殖行为启发&#xff0c;提出了蜉蝣算法&#xff08;Mayfly Algorithm, MA&#xff09;。 2.算法原理 2.1算法思想 MA灵感来自蜉蝣交配…

CST电磁仿真软件的激励设置和使用场导入【基础教程】

设置平面波激励 确认平面波的特性&#xff01; Simulation > Sources and Loads > Plane Wave 通过Plane Wave在远离观测对象的位置接通场源(Field Source)&#xff0c;进行入射波的仿真分析该功能主要在RCS(Radar Cross Section)和EMS(Electromagnetic Susceptibilit…

基于TSM模块的打架斗殴识别技术

目 录 1 引言.... 4 1.1 研究背景与意义.... 4 1.2 研究现状综述.... 5 1.3 研究内容.... 6 1.3.1 图像预处理的优化.... 6 1.3.2 TSM模块的应用.... 6 1.3.3 视频分类的设计与实现.... 6 2 关键技术与方法.... 8 2.1 TSM算法与模型选择.... 8 2.1.1 TSM算法原理.... 8 2.1.2 …

Github首页美化(updating)

Github首页美化 https://github.com/QInzhengk一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 https://github.com/QInzhengk 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库…

Java进阶-Stream流

概述 在Java8中&#xff0c;得益于lambda所带来的函数式编程&#xff0c;引入了一个全新的Stream流的概念目的&#xff1a;用于简化集合和数组操作的api 案例 需求&#xff1a;创建一个集合存储多个字符串元素&#xff0c;将集合中所有以“z”开头的元素存储到新的集合中&am…

NAT网络地址转换实验(思科)

一&#xff0c;技术简介 NAT&#xff08;Network Address Translation&#xff09;&#xff0c;即网络地址转换技术&#xff0c;是一种在现代计算机网络中广泛应用的技术&#xff0c;主要用于有效管理和利用IP地址。NAT技术通过将内部网络中的IP地址转换为公共可路由的IP地址&…

C盘满了如何清理

1.更改位置 &#xff08;1&#xff09;找到要更改的用户 &#xff08;2&#xff09;找到要更改的部分&#xff0c;右键点击“属性” &#xff08;3&#xff09;选择“位置”——“移动”——选择要移动的盘及地方 点击“确定”——“是”&#xff0c;等待迁移完成

Java 源码-多级时间轮TimingWheel

多级时间轮TimingWheel 一、时间轮是什么 类似现实中的钟表&#xff0c;由多个环形数组组成&#xff0c;每个环形数组包含20个时间单位&#xff0c;表示一个时间维度&#xff08;一轮&#xff09;&#xff0c;如&#xff1a;第一层时间轮&#xff0c;数组中的每个元素代表1m…

华为:经营分析会是战略执行和落地的最重要抓手

来源&#xff1a;谢宁专著《华为战略管理法&#xff1a;DSTE实战体系》 01 经营分析会是战略执行和落地的最重要抓手 企业的中长期战略规划解码到年度业务计划之后&#xff0c;如何保障年度经营目标落地&#xff1f;在管理执行与监控阶段&#xff0c;最重要的抓手就是经营分…

echerts饼图分割操作

在饼图制作中遇到了一个难点就是饼图中间是分散的 试了很多方法&#xff0c;最后选择了给每个值中间再加一节的处理方式&#xff0c;并把颜色设置为透明就能达到相同效果。 处理后的样式&#xff1a; 代码&#xff1a; let list this.data.list;/饼图内部展示数据// let _t…

UE4_常见动画节点学习_Two Bone IK双骨骼IK

学习资料&#xff0c;仅供参考&#xff01; Two Bone IK 控制器将逆运动&#xff08;IK&#xff09;解算器应用于到如角色四肢等3关节链。 变量&#xff08; HandIKWeight &#xff09;被用于在角色的 hand_l 和 hand_r 控制器上驱动 关节目标位置&#xff08;Joint Target Lo…