Spark Standalone模式部署

news2024/11/20 4:49:57

准备至少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://www.coloradmin.cn/o/1609883.html

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

相关文章

rabbitmq 使用SAC队列实现顺序消息

rabbitmq 使用SAC队列实现顺序消息 前提 SAC: single active consumer, 是指如果有多个实例&#xff0c;只允许其中一个实例消费&#xff0c;其他实例为空闲 目的 实现消息顺序消费&#xff0c;操作&#xff1a; 创建4个SAC队列,消息的路由key 取队列个数模&#xff0c;这…

Marin说PCB之Via 的 Z--AXIS--delay知多少?

周末宅在家刷抖音的时候&#xff0c;看刷到了一条很有趣味的视频&#xff0c;主要讲的是让你如何从一个allegro菜鸟一个月变成大神的&#xff0c;一个月包教会&#xff0c;这不是妥妥地大骗子嘛。现在的整个市场行情不好啊&#xff0c;各大汽车新能源门派都在紧锣密鼓地搞着“裁…

AI预测福彩3D第40弹【2024年4月19日预测--第8套算法开始计算第8次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第8次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;为后续的模型修改和参数调整做铺垫&#xff0c;所以暂时不建议大家盲目跟买~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月19日3D的七码预测结果…

最小生成树算法的实现c++

最小生成树算法的实现c 题目链接&#xff1a;1584. 连接所有点的最小费用 - 力扣&#xff08;LeetCode&#xff09; 主要思路&#xff1a;使用krusal算法&#xff0c;将边的权值进行排序&#xff08;从小到大排序&#xff09;&#xff0c;每次将权值最小且未加入到连通分量中…

施耐德 PLC 及模块 ModbusTCP 通信配置方法

1. 通过【I/O扫描器】服务进行读写 相关文档&#xff1a;各模块说明书仅 NOE 网卡模块、部分 CPU 自带的网口支持 优点&#xff1a;不需要额外编程&#xff0c;系统自动周期型读写数据缺点&#xff1a;扫描周期不定&#xff0c;程序无法控制数据刷新的时序 2. 通过内部程序…

C语言---贪吃蛇(一)---准备工作

文章目录 前言1.Win32 API介绍1.1.Win32 API1.2. 控制台程序1.3.控制台屏幕上的坐标[COORD](https://learn.microsoft.com/zh-cn/windows/console/coord-str)1.4.[GetStdHandle](https://learn.microsoft.com/zh-cn/windows/console/getstdhandle)1.5.[GetConsoleCursorInfo](h…

Navicat 干货 | 了解 PostgreSQL 规则

PostgreSQL 是一个强大的开源关系型数据库管理系统&#xff0c;为增强数据管理和操作提供了丰富的功能。这些功能中包含了规则&#xff0c;这是一种用于控制数据库内部查询和命令处理方式的机制。本文将探讨 PostgreSQL 规则的工作原理&#xff0c;以及它们与触发器的区别&…

替代普通塑料吸头的PFA移液吸头

目前市场上的规格&#xff1a;0.01ml、0.05ml、0.1ml、0.2ml、0.5ml、1ml、2ml、5ml、10ml等均可定制加工PFA材质枪头&#xff0c;可以适配市场上大部分移液枪&#xff0c;普兰德&#xff0c;大龙&#xff0c;赛默飞&#xff0c;赛多利斯&#xff0c;力辰、吉尔森&#xff0c;瑞…

Flask中的JWT认证构建安全的用户身份验证系统

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask中的JWT认证&#xff1a;构建安全的用户身份验证系统 随着Web应用程序的发展&#xf…

粤嵌—2024/4/19—三数之和

代码实现&#xff1a; 方法一&#xff1a;排序 回溯——超时 有错误 /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assu…

Scanpy(2)多种可视化

本篇内容为scanpy的可视化方法&#xff0c;可以分为三部分&#xff1a; embedding的散点图&#xff1b;用已知marker genes的聚类识别&#xff08;Identification of clusters&#xff09;&#xff1b;可视化基因的差异表达&#xff1b; 我们使用10x的PBMC数据集&#xff08;…

「泰雷兹」新合作推进南美太空安全,量子加密守护卫星系统

在第23届国际航空航天博览会&#xff08;FIDAE&#xff09;期间&#xff0c;泰雷兹与SeQure Quantum签署了一份谅解备忘录&#xff0c;SeQure Quantum是一家专门从事加密和密码学量子技术的智利公司。二者联手探索和制定与智利太空项目相关的联合战略、技术和知识转让。 在一个…

docker安装并跑通QQ机器人实践(2)-签名服务器bs-qsign搭建

在前文中&#xff0c;我们详尽阐述了QQ机器人的搭建过程及其最终实现的各项功能展示。接下来&#xff0c;我们将转向探讨该项目基于Docker构建服务的具体实践。本篇将以QQ机器人签名服务——qsign为起点&#xff0c;逐步展开论述。 1 获取和运行 xzhouqd/qsign:8.9.63 镜像 1.…

Java开发从入门到精通(二十):Java的面向对象编程OOP:IO流文件操作的读取和写入

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的IO流文件读写1.1 IO流前置知识1.1.1 ASCII字符集1.1.2 GBK字符集1.1.3 Unicode字符集1.1.4 UTF-8字符集1.1.4 Java的编码解码 1.2 IO流的基础知识1.2.1 认识I0流1.2.2 应用场景1.2.3 如何学I0流1.2.3.1 先搞清楚I0流…

移除离群点------PCL

statisticalOutlierRemoval滤波器移除离群点 /// <summary> /// 使用statisticalOutlierRemoval滤波器移除离群点 /// </summary> /// <param name"cloud">被过滤的点云</param> /// <param name"meank"></param> //…

lementui el-menu侧边栏占满高度且不超出视口

做了几次老是忘记&#xff0c;这次整理好逻辑做个笔记方便重复利用&#xff1b; 问题&#xff1a;elementui的侧边栏是占不满高度的&#xff1b;但是使用100vh又会超出视口高度不美观&#xff1b; 解决办法&#xff1a; 1.获取到侧边栏底部到视口顶部的距离 2.获取到视口的高…

实验室三大常用仪器1---示波器的基本使用方法(笔记)

目录 示波器的作用 示波器的基础操作方法 示波器测量突变脉冲 示波器的作用 示波器能帮助我们干什么&#xff1f; 比如说某个电源用万用表测量是稳定的5V输出 但是用示波器一看确实波涛汹涌 这样的电源很可能回导致系统异常工作 又比如电脑和单片机进行串口通信时&#xf…

c 多文件编程

1.结构目录 声明类:用于声明方法,方便方法管理和调用&#xff1b; 实现类:用于实现声明的方法; 应用层:调用方法使用 写过java代码的兄弟们可以这么理解&#xff1a; 声明类 为service层 实现类 为serviceimpl层 应用层 为conlloter层 2.Dome 把函数声明放在头文件xxx.h中&…

什么是 GitHub Wiki 以及如何使用它?

GitHub Wiki 是你项目文档的一个很好的地方。你可以使用 wiki 来创建、管理和托管你的存储库的文档&#xff0c;以便其他人可以使用并为你的项目做出贡献。 GitHub Wiki 很容易开始使用&#xff0c;无需安装任何其他软件。最好的部分是 wiki 与你的 GitHub 存储库集成在一起。…

汇编语言——输入4位以内的16进制数,存进BX

data segment data ends stack segment stackdw 100 dup (?)top label word stack ends code segmentassume cs:code,ds:data,ss:stack main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,0mov cx,4 ;最多输入4位16进制数 L1: mov ah,7 ;用7号功能…