Spark环境搭建和利用方法

[复制链接]
发表于 2026-2-19 23:49:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
一、安装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版本
  1. [root@bigdata zhc]# python --version
复制代码

 Python 2.7.5 版本已经不能满意当前编程环境需求,以是要安装较高版本的Python3,但Python 2.7.5 版本不能卸载。
2、连网下载Python3
  1. [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

  1. [root@bigdata uploads]# tar -zxvf spark-2.4.0-bin-without-hadoop.tgz -C /usr/local
复制代码
更改文件目次名:
  1. [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文件的第一行。
  1. 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下令举行过滤。下令如下:
  1. [root@bigdata spark]# run-example SparkPi 2>&1 |grep "Pi is"
复制代码
 
二、在pyspark中运行代码

(一)pyspark下令

pyspark下令及其常用的参数如下:
   pyspark --master <master-url>
  Spark的运行模式取决于通报给SparkContext的Master URL的值。Master URL可以是以下任一种情势:
        (1)local 利用一个Worker线程当地化运行SPARK(完全不并行)
        (2)local
  • 利用逻辑CPU个数数目标线程来当地化运行Spark
            (3)local[K] 利用K个Worker线程当地化运行Spark(理想环境下,K应该根据运行呆板的CPU核数设定)
            (4)spark://HOSTORT 毗连到指定的Spark standalone master。默认端口是7077
            (5)yarn-client 以客户端模式毗连YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
            (6)yarn-cluster 以集群模式毗连YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
            (7)mesos://HOSTORT 毗连到指定的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:
    1. >>> 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 <master-url>  
              --deploy-mode <deploy-mode>   #摆设模式  
              ... #其他参数  
              <application-file>  #Python代码文件  
              [application-arguments]  #通报给主类的主方法的参数
      可以实行“spark-submit  --help”下令,获取完备的选项列表,具体如下:
    1. $ cd /usr/local/spark
    2. $ ./bin/spark-submit --help
    复制代码
    以通过 spark-submit 提交到 Spark 中运行,下令如下:
    注意要在 /home/zhc/mycode/ 路径下实行spark-submit,否则要利用绝对路径。
    1. [root@bigdata mycode]# spark-submit WordCount.py
    复制代码
    1. [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信息了。
    1. [root@bigdata mycode]# spark-submit WordCount.py
    复制代码


  • 回复

    使用道具 举报

    登录后关闭弹窗

    登录参与点评抽奖  加入IT实名职场社区
    去登录
    快速回复 返回顶部 返回列表