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

有多个节点,都需要配置。配置好之后,就可以直接用slave1替代slave1@slave1,比如

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

可改为

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

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark Standalone模式Spark的最基本的部署模式,它提供了一个简单的,单节点的集群环境,用于在单台计算机上运行大量的任务。Spark Standalone模式可以通过启动一个Master节点和若干Worker节点来管理整个集群,在这种模式下,用户可以在Master节点上提交任务,并通过Worker节点来执行任务。 ### 回答2: Spark standalone是Spark的一种部署模式,一个Spark standalone集群包含一个master节点和多个worker节点。本文将介绍如何使用Spark standalone模式部署一个Spark集群。 1.部署Master节点 首先需要在一台计算机上部署Spark Master节点,这个节点将管理整个集群。你可以将档案解压到Spark目录并在命令行中启动Master节点: $ tar -xvf spark-2.4.7-bin-hadoop2.7.tgz $ cd spark-2.4.7-bin-hadoop2.7 $ ./sbin/start-master.sh 默认情况下,Spark Master节点将在localhost:7077上运行。 最好记录启动Master节点的URL,因为工人将使用它来连接到控制台。 您可以在Spark的Web UI部分中的127.0.0.1:8080上找到它。 2. 部署Worker节点 要在Spark集群中部署Worker节点,需要在每台服务器上重复以下步骤: (1)下载Spark二进制文件并解压缩。 (2)修改conf/spark-env.sh 文件以指定SPARK_MASTER_IP和SPARK_LOCAL_IP,请将其设置为包含Spark Master节点的IP地址。 (3)启动Spark Worker节点: ``` $ ./sbin/start-worker.sh <master-url> ``` 其中,<master-url>指Master的URL地址。 3.运行Spark应用程序 在启动Master和Worker节点之后,可以使用Python、Java或Scala编写Spark应用程序并在Spark集群上运行。 示例代码: from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("WordCount").setMaster("spark://<master-url>:7077") sc = SparkContext(conf=conf) text_file = sc.textFile("<hdfs-paht>") counts = text_file.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) counts.saveAsTextFile("<hdfs-output-path>") 4.结束Spark集群 要停止整个Spark集群,在Master或Worker节点上运行stop-all.sh脚本即可。 $ ./sbin/stop-all.sh 总的来说,Spark standalone模式部署Spark集群非常方便,但需要配置和管理Spark的Master和Worker节点,以确保它们在正确的端口上运行,并且配置文件SPARK_MASTER_IP和SPARK_LOCAL_IP正确。除此之外,Spark提供了许多其他的部署模式和工具,如YARN、Mesos、Kubernetes等,可以根据实际需要选择不同的选项。 ### 回答3: Spark是一款快速、通用、可扩展的大数据处理框架,它支持在独立的计算集群上运行。Spark Standalone Mode就是Spark官方提供的单机模式Spark Standalone Mode的部署需要以下几个步骤: 一、安装JDK 首先需要在本地安装JDK,建议安装1.8版本或以上。 二、下载Spark包 在官网上下载相应版本的Spark包,并解压到本地目录中。建议使用Spark 2.3以上的版本。 三、配置Spark环境变量 配置SPARK_HOME、PATH和JAVA_HOME三个环境变量。 四、启动Spark集群 在Spark解压目录下的sbin目录中,运行./start-all.sh启动Spark集群,并在浏览器中访问http://localhost:8080查看集群状态。 五、提交Spark任务 在Spark解压目录下的bin目录中,运行./spark-submit提交Spark任务。可以通过添加参数来指定相关的配置信息。 六、关闭Spark集群 在Spark解压目录下的sbin目录中,运行./stop-all.sh关闭Spark集群。 总结: 通过以上步骤,可以很方便地在本地部署Spark Standalone Mode集群。相比于其他的分布式部署方式,Spark Standalone Mode不需要安装和配置Hadoop和Yarn等组件,因此更加轻便简洁。但是,由于是单机模式,所以处理的数据量和规模都有一定的限制。对于较大的数据处理任务,建议使用集群模式部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值