Linux系统安装单机版Spark

背景

最近要开发智能推荐引擎,后期系统需要搭载在Spark集群上,前期要开发相关脚本,需要一个测试环境,所以向公司申请了一台主机,平台是Linux,操作系统CentOS,背景交代完毕,现在需要在单机Linux主机上部署Spark。

准备:

JDK:1.8
Spark:2.4.5
Linux系统平台:本文所用Linux版本为CentOS 7

步骤

第一步:下载并解压JDK
首先去Oracle官网现在JDK压缩包
官网下载地址
我选择的版本是jdk-8u241-linux-x64.tar.gz
下载完成后上传到Linux服务器下,新建一个文件夹software,然后解压压缩包。
解压的Linux命令:

tar -zxvf jdk-8u241-linux-x64.tar.gz

第二步:下载并解压Spark
首先到spark官网下载Spark压缩包
官网下载地址
现在已经有最新的预览版本是Spark 3.0.0-preview2,已于2019年12月23日发布,有需要的话可以选择此版本,本次我下载的是2.4.5版本。
下载完成后上传到Linux服务器software文件夹下,然后解压压缩包。
在这里插入图片描述
解压的Linux命令:

tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz

(备注:为了后续方便,这里可以重命名Spark文件夹)

第三步:配置环境变量

3.1 配置系统的环境变量:
进入/etc/profile目录下,输入如下:

vim  /etc/profile

会提示文件已存在,见下图,选择“e”,并输入“i”进入编辑模式
在这里插入图片描述
然后在文件的最后加上如下配置:

在这里插入图片描述
然后键盘按下“Esc”,输入“:”冒号加“wq”保存退出vim编辑模式,最后运行:source /etc/profile 使文件修改生效。

3.2 配置spark的配置文件:
首先新建spark-env.sh配置文件(spark环境配置文件):
这个文件默认不存在,这里有spark-env.sh.template,我们复制一份并命名新文件为spaek-env.sh。

首先进入spark的conf目录下:

cd /tmp/software/spark-2.4.5-bin-hadoop2.7/conf

copy一份spark-env.sh

cp  spark-env.sh.template spark-env.sh

然后进入vim编辑模式

vim  spark-env.sh

输入“i”进入编辑模式,在文件的最后加上如下配置

在这里插入图片描述
其中:

  • SPARK_MASTER_IP为自己的Linux的ip地址;
  • SPARK_MASTER_HOST为主机名
  • SPARK_MASTER_PORT为默认端口号7077

然后键盘按下“Esc”,输入“:”冒号加“wq”保存退出vim编辑模式,最后运行:source spark-env.sh 使文件修改生效。

3.3 配置slaves的配置文件:
新建slaves配置文件(子节点配置文件):
首先进入spark的conf目录下:

cd /tmp/software/spark-2.4.5-bin-hadoop2.7/conf

copy一份slaves:

cp  slaves.template slaves

然后进入vim编辑模式:

vim  slaves

输入“i”进入编辑模式,在文件的最后加上如下配置
在这里插入图片描述
配置上localhost,最后“Esc”,输入“:”加“wq”保存退出vim编辑模式,最后source slaves使修改生效。
(备注:由于我使用环境为单机环境,只有一个节点,所以这里配置localhost)

最后:
测试一下,回到spark的主目录中,找到sbin目录,然后启动spark,使用命令sbin/start-all.sh。

sbin/start-all.sh

在这里插入图片描述
提示输入密码,反复输入root密码不对,然后root的密码改了又改还不行,后来搞清楚了此处非root密码,而是slave的密码,后期使用需要不断的输入密码,该繁琐的一步会带来极大的麻烦。因此进行进一步设置,实现ssh localhost免密码登录配置。

ssh localhost免密码登录配置

如果需要频繁的进行SSH登录,远程拷贝,在一台Linux上给另外一台Linux发送SSH指令,每一次都要输入对应Linux的命令就非常的麻烦,为了更加安全和方便,可以建立一种信任机制,让特定的机器、特定的用户可以不用输入密码就可以登录、远程拷贝、执行SSH命令了。这种信任机制可以通过配置SSH免密码登录实现,而想要免密码登录到Linux的机器上,需要生成一对秘钥,一个公钥,一个私约。

第一步:前提配置
使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,见下图:
在这里插入图片描述
然后重启ssh服务:

service sshd restart

第二步:执行命令

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

其中ssh-keygen命令是生成秘钥,-t是加密类型,dsa是一种加密方式。

生成密钥文件

在这里插入图片描述
第三步:执行命令
将 id_dsa.pub文件内容导入/authorized_keys,执行:

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

配置完成后,会在当前用户的家目录的.ssh目录生成两个文件,一个是id_dsa即私钥,另一个是id_dsa.pub即公钥,见下图:

在这里插入图片描述
第四步:修改权限
修改本文件的权限

  • ~/.ssh需要是700权限
  • authorized_keys需要是644权限

严格按照如下操作赋权:

chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

再次测试,执行ssh localhost,普通用户成功…………
但是root下,我又看到了那熟悉的,仿佛夜空中最闪亮的那颗星“Permission denied, please try again”,
在这里插入图片描述

晕,只能再改,后来网上找到了解决办法,

将/etc/ssh/sshd_config文件中PermitRootLogin no改成PermitRootLogin yes
在这里插入图片描述
测试,root下执行ssh localhost成功
在这里插入图片描述
回到spark的主目录中,找到sbin目录,然后启动spark,使用命令sbin/start-all.sh以及使用jps查看是否启动成功。
在这里插入图片描述
显示 Jps、Master、Worker三项,启动成功,并且不再需要密码验证。

后续:

Spark目录:

  • spark根目录下的bin目录,包含用来和Spark交互的可执行文件,如Spark shell
  • examples包含一些单机Spark job,可以研究和运行这些例子
    在这里插入图片描述

Spark的Shell:

  • Spark的shell能够处理分布在集群上的数据
  • Spark把数据加载到节点的内存中,因此分布式处理可在秒级完成
  • 快速使用迭代式计算,实时查询、分析一般能够在shells中完成
  • Spark提供了Python shells和Scala shells。

这里以Scala shell为例,演示读取本地文件并进行操作:
进入Scala shell:

spark-shell

在这里插入图片描述

还可以运行pyspark:

pyspark

在这里插入图片描述
你没看错(此处手动滑稽),还是熟悉的朋友“Hello,world”

End…

参考:
linux下安装spark
Linux安装、运行单机版Spark
Spark认识&环境搭建&运行第一个Spark程序

发布了27 篇原创文章 · 获赞 134 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/yawei_liu1688/article/details/105226781