首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Spark环境搭建和使用方法

  • 25-03-03 19:23
  • 3785
  • 11809
blog.csdn.net

目录

一、安装Spark

(一)基础环境

(二)安装Python3版本

(三)下载安装Spark

(四)配置相关文件

二、在pyspark中运行代码

(一)pyspark命令

(二)启动pyspark 

三、开发Spark独立应用程序

(一)编写程序

(二)通过spark-submit运行程序 


一、安装Spark

(一)基础环境

安装Spark之前需要安装Linux系统、Java环境(Java8或JDK1.8以上版本)和Hadoop环境。

可参考本专栏前面的博客:
大数据软件基础(3) —— 在VMware上安装Linux集群-CSDN博客
大数据存储技术(1)—— Hadoop简介及安装配置-CSDN博客

(二)安装Python3版本

1、查看当前环境下的Python版本

[root@bigdata zhc]# python --version

 Python 2.7.5 版本已经不能满足当前编程环境需求,所以要安装较高版本的Python3,但Python 2.7.5 版本不能卸载。

2、连网下载Python3

[root@bigdata zhc]# yum install -y python3

 如图所示,Python3安装完成。

 安装的版本为Python 3.6.8。

(三)下载安装Spark

1、Spark安装包下载地址:https://spark.apache.org/

进入下载页面后,点击主页的“Download”按钮进入下载页面,下载页面中提供了几个下载选项,主要是Spark release及Package type的选择,如下图所示。

我这里下的是Spark 2.4.0版本,没有此版本的,也可以下载Spark 3.2.4或更高版本的。

2、解压安装包spark-2.4.0-bin-without-hadoop.tgz至路径 /usr/local

[root@bigdata uploads]# tar -zxvf spark-2.4.0-bin-without-hadoop.tgz -C /usr/local

更改文件目录名:

[root@bigdata local]# mv spark-2.4.0-bin-without-hadoop/ spark 

(四)配置相关文件

1、配置Spark的classpath

先切换到 /usr/local/spark/conf 目录下,复制spark-env.sh.template重命名为spark-env.sh。

  1. [root@bigdata local]# cd /usr/local/spark/conf
  2. [root@bigdata conf]# cp spark-env.sh.template spark-env.sh
  3. [root@bigdata conf]# ll
  4. 总用量 44
  5. -rw-r--r-- 1 zhc zhc 996 10月 29 2018 docker.properties.template
  6. -rw-r--r-- 1 zhc zhc 1105 10月 29 2018 fairscheduler.xml.template
  7. -rw-r--r-- 1 zhc zhc 2025 10月 29 2018 log4j.properties.template
  8. -rw-r--r-- 1 zhc zhc 7801 10月 29 2018 metrics.properties.template
  9. -rw-r--r-- 1 zhc zhc 865 10月 29 2018 slaves.template
  10. -rw-r--r-- 1 zhc zhc 1292 10月 29 2018 spark-defaults.conf.template
  11. -rwxr-xr-x 1 root root 4221 12月 13 20:23 spark-env.sh
  12. -rwxr-xr-x 1 zhc zhc 4221 10月 29 2018 spark-env.sh.template
  13. [root@bigdata conf]# vi spark-env.sh

将如下内容加到spark-env.sh文件的第一行。

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

实现了Spark和Hadoop的交互。

2、配置 /etc/profile 文件

将如下内容添加到 /etc/profile 文件最后,并使其生效。

  1. [root@bigdata conf]# vi /etc/profile
  2. [root@bigdata conf]# source /etc/profile
  1. export SPARK_HOME=/usr/local/spark
  2. export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
  3. export PYSPARK_PYTHON=python3
  4. export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

如下图所示。 

至此,Spark环境就安装配置好了。

输入实例SparkPi验证Spark环境。为了从大量的输出信息中快速找到我们想要的自行结果,可以使用grep命令进行过滤。命令如下:

[root@bigdata spark]# run-example SparkPi 2>&1 |grep "Pi is"

 

二、在pyspark中运行代码

(一)pyspark命令

pyspark命令及其常用的参数如下:

pyspark --master

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

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

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

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

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

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

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

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

  1. $ cd /usr/local/spark
  2. $ ./bin/pyspark --help

(二)启动pyspark 

执行如下命令启动pyspark(默认是local模式):

  1. [root@bigdata zhc]# cd /usr/local/spark
  2. [root@bigdata spark]# pyspark

可以在里面输入scala代码进行调试:

  1. >>> 8*2+5
  2. 21

 可以使用命令“exit()”退出pyspark:

>>> exit()

三、开发Spark独立应用程序

(一)编写程序

  1. # /home/zhc/mycode/WordCount.py
  2. from pyspark import SparkConf, SparkContext
  3. conf = SparkConf().setMaster("local").setAppName("My App")
  4. sc = SparkContext(conf = conf)
  5. logFile = "file:///usr/local/spark/README.md"
  6. logData = sc.textFile(logFile, 2).cache()
  7. numAs = logData.filter(lambda line: 'a' in line).count()
  8. numBs = logData.filter(lambda line: 'b' in line).count()
  9. print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

对于这段Python代码,可以直接使用如下命令执行:

  1. [root@bigdata zhc]# cd /home/zhc/mycode
  2. [root@bigdata mycode]# vi WordCount.py
  3. [root@bigdata mycode]# ll
  4. 总用量 8
  5. -rw-r--r-- 1 root root 430 12月 14 12:54 WordCount.py
  6. -rw-r--r-- 1 root root 56 12月 9 18:55 word.txt
  7. [root@bigdata mycode]# python3 WordCount.py

执行该命令以后,可以得到如下结果:

(二)通过spark-submit运行程序 

可以通过spark-submit提交应用程序,该命令的格式如下:

spark-submit  

        --master  

        --deploy-mode   #部署模式  

        ... #其他参数  

          #Python代码文件  

        [application-arguments]  #传递给主类的主方法的参数

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

  1. $ cd /usr/local/spark
  2. $ ./bin/spark-submit --help

以通过 spark-submit 提交到 Spark 中运行,命令如下:
注意要在 /home/zhc/mycode/ 路径下执行spark-submit,否则要使用绝对路径。

[root@bigdata mycode]# spark-submit WordCount.py
[root@bigdata zhc]# spark-submit /home/zhc/mycode/WordCount.py    #绝对路径

运行结果如图所示: 

此时我们发现有大量的INFO信息,这些信息属于干扰信息,对于我们有用的只有“Lines with a: 62, Lines with b: 30”这一行。为了避免其他多余信息对运行结果的干扰,可以修改log4j的日志信息显示级别,具体方法如下:

  1. [root@bigdata spark]# cd /usr/local/spark/conf
  2. [root@bigdata conf]# ll
  3. 总用量 44
  4. -rw-r--r-- 1 zhc zhc 996 10月 29 2018 docker.properties.template
  5. -rw-r--r-- 1 zhc zhc 1105 10月 29 2018 fairscheduler.xml.template
  6. -rw-r--r-- 1 zhc zhc 2025 10月 29 2018 log4j.properties.template
  7. -rw-r--r-- 1 zhc zhc 7801 10月 29 2018 metrics.properties.template
  8. -rw-r--r-- 1 zhc zhc 865 10月 29 2018 slaves.template
  9. -rw-r--r-- 1 zhc zhc 1292 10月 29 2018 spark-defaults.conf.template
  10. -rwxr-xr-x 1 root root 4300 12月 13 20:33 spark-env.sh
  11. -rwxr-xr-x 1 zhc zhc 4221 10月 29 2018 spark-env.sh.template
  12. [root@bigdata conf]# cp log4j.properties.template log4j.properties
  13. [root@bigdata conf]# vi log4j.properties

打开 log4j.properties 文件后,可以发现包含如下一行信息:

log4j.rootCategory=INFO, console

将其修改为: 

log4j.rootCategory=ERROR, console

再次回到 /home/zhc/mycode/ 路径下执行spark-submit,就会发现没有INFO信息了。

[root@bigdata mycode]# spark-submit WordCount.py

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览18143 人正在系统学习中
Francek Chen
微信名片
注:本文转载自blog.csdn.net的Francek Chen的文章"https://blog.csdn.net/Morse_Chen/article/details/134979681"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top