【Hadoop和Spark伪分布式安装与使用】

本文详细介绍了如何在已搭建好的Hadoop环境中安装Spark,重点讲解了Spark的Local模式安装步骤,包括下载、配置、环境变量设置及验证安装。此外,还提到了Spark的其他部署模式和pyspark的使用方法。
摘要由CSDN通过智能技术生成

Hadoop和Spark伪分布式安装与使用(第四期)

前三期将Hadoop环境已经搭建好了,本期就来安装Spark,以及在pyspark中运行代码

16、Spark安装

下载地址:https://spark.apache.org/downloads.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载速度较慢,耐心等待一下。说明一下,Pre-build with user-provided Hadoop属于“Hadoop free”版,这样,下载到的Spark,可应用到任意Hadoop 版本。

Spark部署模式主要有四种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、YARN模式(使用YARN作为集群管理器)和Mesos模式(使用Mesos作为集群管理器)。

这里介绍Local模式(单机模式)的 Spark安装。

将下载好后的压缩包拖拽(和第一期方式一样)到Downloads目录下,执行以下命令进行安装:

sudo tar -zxf ~/Downloads/spark-3.5.1-bin-without-hadoop.tgz -C /usr/local
cd /usr/local
sudo mv spark-3.5.1-bin-without-hadoop spark
sudo chown -R hadoop:hadoop spark   # 此处的 hadoop 为你的用户名

安装后,修改Spark的配置文件spark-env.sh

cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

有了上面的配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据,无法读写HDFS数据。

接着,修改环境变量(vim ~/.bashrc),在.bashrc文件中添加如下内容:

export SPARK_HOME=/usr/local/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9.7-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

注意,代码中py4j-0.10.9.7-src.zip的版本要换成你自己下载的版本,可在下图路径下找到:

在这里插入图片描述

PYTHONPATH环境变量主要是为了在Python3中引入pyspark库,PYSPARK_PYTHON变量主要是设置pyspark运行的python版本。.bashrc中必须包含JAVA_HOME,HADOOP_HOME,SPARK_HOME,PYTHONPATH,PYSPARK_PYTHON,PATH这些环境变量。如果已经设置了这些变量则不需要重新添加设置。另外需要注意,上面的配置项中,PYTHONPATH这一行有个py4j-0.10.4-src.zip,这个zip文件的版本号一定要和“/usr/local/spark/python/lib”目录下的py4j-0.10.4-src.zip文件保持版本一致。比如,如果“/usr/local/spark/python/lib”目录下是py4j-0.10.7-src.zip,那么,PYTHONPATH这一行后面也要写py4j-0.10.7-src.zip,从而使二者版本一致。

接着执行(source ~/.bashrc)该环境变量生效。

配置完成后就可以直接使用,不需要像Hadoop运行启动命令。

最后通过运行Spark自带的示例,验证Spark是否安装成功。

cd /usr/local/spark
bin/run-example SparkPi

注意:如果正常执行出下图结果就不用执行下面命令,如果执行时输出非常多的运行信息,会使输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的2>&1可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):

bin/run-example SparkPi 2>&1 | grep "Pi is"

过滤后的运行结果如下图示,可以得到π 的5位小数近似值:

在这里插入图片描述
17、在pyspark中运行代码

前面已经安装了Hadoop和Spark,如果Spark不使用HDFS和YARN,那么就不用启动Hadoop也可以正常使用Spark。如果在使用Spark的过程中需要用到 HDFS,就要首先启动 Hadoop(启动Hadoop的方法可以参考上面给出的Hadoop安装教程)。

这里假设不需要用到HDFS,因此,就没有启动Hadoop。现在我们直接开始使用Spark。

bin/pyspark

该命令省略了参数,这时,系统默认是“bin/pyspark–master local[*]”,也就是说,是采用本地模式运行,并且使用本地所有的CPU核心。

启动pyspark后,就会进入“>>>”命令提示符状态,如下图所示:

在这里插入图片描述

现在,你就可以在里面输入python代码进行调试了。
比如,下面在命令提示符后面输入一个表达式“8*2+ 5”(注意>>>后不要有空格),然后回车,就会立即得到结果:

在这里插入图片描述

最后,可以使用命令“exit()”退出pyspark,如下所示:

在这里插入图片描述

或者,也可以直接使用“Ctrl+D”组合键,退出pyspark。

18、Spark独立应用程序编程

接着我们通过一个简单的应用程序来演示如何通过 Spark API 编写一个独立应用程序。使用 Python进行spark编程比Java和Scala简单得多。

接下来即可进行Python编程。 在~目录下新建一个test.py文件,并在test.py添加代码。

cd ~
vim test.py

在test.py中添加如下代码并保存退出:

from pyspark import SparkContext
sc = SparkContext( 'local', 'test')
logFile = "file:///usr/local/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

保存代码后,通过如下命令执行:

python3 ~/test.py

最终得到的结果如下:
在这里插入图片描述
至此,在单机模式下,你就完成了你的第一个 Spark 应用程序了。

附录:pyspark命令及其常用的参数

./bin/pyspark --master <master-url>

Spark的运行模式取决于传递给SparkContext的Master URL的值。Master URL可以是以下任一种形式:

  • local 使用一个Worker线程本地化运行SPARK(完全不并行)
  • local[*]使用逻辑CPU个数数量的线程来本地化运行Spark
  • local[K]使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
  • spark://HOST:PORT 连接到指定的Spark standalone master。默认端口是7077.
  • yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
  • yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
  • mesos://HOST:PORT 连接到指定的Mesos集群。默认接口是5050。

需要强调的是,这里我们采用“本地模式”(local)运行Spark,关于如何在集群模式下运行Spark,可以参考后面的“在集群上运行Spark应用程序”。
在Spark中采用本地模式启动pyspark的命令主要包含以下参数:
–master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是使用本地模式启动pyspark,其中,中括号内的星号表示需要使用几个CPU核心(core);
–jars:这个参数用于把相关的JAR包添加到CLASSPATH中;如果有多个jar包,可以使用逗号分隔符连接它们;

比如,要采用本地模式,在4个CPU核心上运行pyspark:

cd /usr/local/spark
./bin/pyspark --master local[4]

或者,可以在CLASSPATH中添加code.jar,命令如下:

cd /usr/local/spark
./bin/pyspark --master local[4] --jars code.jar 

可以执行“pyspark --help”命令,获取完整的选项列表,具体如下:

cd /usr/local/spark
./bin/pyspark --help

后续还会追更和完善本期刊的内容,比如编写Scala独立应用程序、Java独立应用编程等其他内容。

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值