前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[1032]spark-3.0安装和入门

[1032]spark-3.0安装和入门

作者头像
周小董
发布2021-07-27 14:27:55
9360
发布2021-07-27 14:27:55
举报
文章被收录于专栏:python前行者python前行者

在这之前已经在本地安装了hadoop和hive,参考大数据相关整理

spark官网下载:http://spark.apache.org/downloads.html

一.Windows安装

1.安装

将spark-3.0.0-bin-hadoop3.2.tgz解压到非中文目录

2.使用

bin/spark-shell.cmd : 提供一个交互式shell

val result: String = sc.textFile("input").flatMap(_.split(" ")).map((_, 1)).reduceByKey( _ + _).collect().mkString(",")

可以打开WEB UI:http://localhost:4040/(每一个spark-shell会初始化一个spark-context,是一个job,关闭窗口后,就没有这个页面了)

测试一下电脑上已经安装的Spark版本是否支持Hive,(spark-3.1.2是支持hive的)

scala> import org.apache.spark.sql.hive.HiveContext
<console>:25: error: object hive is not a member of package org.apache.spark.sql
         import org.apache.spark.sql.hive.HiveContext

看到了吧,会返回错误信息,也就是spark无法识别org.apache.spark.sql.hive.HiveContext,这就说明你当前电脑上的Spark版本不包含Hive支持。

如果你当前电脑上的Spark版本包含Hive支持,那么应该显示下面的正确信息:

scala> import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.hive.HiveContext

bin/spark-submit.cmd: 将程序打包后,提交运行!打包过程参考:idea开发spark程序

1)进入D:\SoftWare\spark\spark-3.0.0-bin-hadoop3.2\bin 2)将jar包上传到bin目录下,和测试的文件 3)在该目录路径输入cmd打开cmd窗口

输入以下命令测试

spark-submit --class com.spark.day01.WcCount 09sparkdemo-1.0-SNAPSHOT.jar 1.txt

二.Linux安装

一般安装模式
下载
#下载,地址失效就从官网下载 http://spark.apache.org/downloads.html
$ wget https://mirror.bit.edu.cn/apache/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz
 
#解压,路径为/Users/zheng/spark/spark-3.0.0
$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz
 
#重命名
$ cp spark-3.0.0-bin-hadoop3.2.tgz spark-3.0.0
 
#修改权限,这里不修改权限,最后启动spark的时候会报一些文件找不到
$ chmod -R 755 /spark-3.0.0
设置环境变量
#设置环境变量
$ vim /etc/profile
 
#增加一下配置:
export SPARK_HOME=/Users/zheng/spark/spark-3.0.0
export PATH=$PATH:$SPARK_HOME/bin
 
#保存退出后生效
$ source /etc/profile
修改配置
#进入/spark-3.0.0/conf复制以下几个文件
$ mv spark-defaults.conf.template spark-defaults.conf
$ mv slaves.template slaves
$ mv spark-env.sh.template spark-env.sh
 
#修改spark-defaults.conf启用yarn模式
spark.master     yarn
启动
#进入/spark-3.0.0/sbin,启动spark,start-all.sh表示启动所有
$ ./start-all.sh
确认启动成功

浏览器访问spark master默认地址:http://localhost:8080/

Local模式

一般可以使用local模式进行测试,学习

1.安装

将spark-3.0.0-bin-hadoop3.2.tgz文件上传到linux并解压缩,放置在指定位置,改包名为spark-local

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module 
mv spark-3.0.0-bin-hadoop3.2 spark-local
2.使用

进入 /opt/module/spark-local目录下

spark-shell:命令行工具

执行以下命令

[hadoop@hadoop103 spark-local]$ bin/spark-shell
[hadoop@hadoop103 spark-local]$ bin/spark-shell 
20/07/29 18:54:55 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
20/07/29 18:55:06 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Spark context Web UI available at http://hadoop103:4041
Spark context available as 'sc' (master = local[*], app id = local-1596020106480).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.0.0
      /_/

Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_212)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

通过WEB UI 界面查看:http://hadoop103:4040/jobs/

image
image

执行代码

scala> sc.textFile("/opt/module/spark_testdata/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res0: Array[(String, Int)] = Array((hello,2), (world,2), (spark,1), (hi,2))  

spark-submit :提交应用

将写好的spark打包上传至linux,然后执行以下命令

[hadoop@hadoop103 spark-local]$bin/spark-submit --class com.spark.day01.WcCount /opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar /opt/module/spark_testdata/1.txt
bin/spark-submit \               --提交应用
--class com.spark.day01.WcCount \ --主类名字
/opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar \ --应用类所在的jar包
/opt/module/spark_testdata/1.txt --程序的入口参数
yarn模式

前提,环境中已经安装好hadoop

spark只是类似一个客户端(选择任意一台可以连接上YARN的机器安装即可),YARN是服务端!

1.安装

将spark-3.0.0-bin-hadoop3.2.tgz文件上传到linux并解压缩,放置在指定位置,改包名为spark-yarn

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module 
mv spark-examples_2.12-3.0.0 spark-yarn

配置

①修改hadoop的/hadoop/etc/hadoop/yarn-site.xml配置文件,然后分发

<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
     <name>yarn.nodemanager.pmem-check-enabled</name>
     <value>false</value>
</property>

<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
     <name>yarn.nodemanager.vmem-check-enabled</name>
     <value>false</value>
</property>
<!--允许第三方程序,例如spark将Job的日志,提交给Hadoop的历史服务 -->
<property>
     <name>yarn.log.server.url</name>
     <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

②修改conf/spark-env.sh,添加JAVA_HOME和YARN_CONF_DIR配置

改名 : mv spark-env.sh.template spark-env.sh

YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
#环境变量中有可以不配
export JAVA_HOME=/opt/module/jdk1.8.0_144 
2.使用

① 启动HDFS和yarn集群

jps验证下

[hadoop@hadoop103 spark-local]$ myjps 
================  hadoop102 JPS  =====================
1809 NameNode
2434 Jps
1939 DataNode
2281 NodeManager
================  hadoop103 JPS  =====================
2867 NodeManager
2552 DataNode
2744 ResourceManager
3263 Jps
================  hadoop104 JPS  =====================
1587 DataNode
1797 NodeManager
1676 SecondaryNameNode
1951 Jps

web界面验证下:

HDFS:http://hadoop102:9870/ YARN:http://hadoop103:8088/

② 提交应用

官方案例

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

自定义的WordCount程序

bin/spark-submit \
--class com.spark.day01.WcCount \
--master yarn \
--deploy-mode cluster \
/opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar \
hdfs://hadoop102:8020/input	

注意:

读取的文件最好放在hdfs路径,注意端口号别写错,core-site.xml中配置。

放在本地路径可能出现文件找不到的异常。

3.spark的历史服务器集成yarn

① 修改spark-defaults.conf.template文件名为spark-defaults.conf

spark.eventLog.enabled           true
#HDFS的节点和端口和目录
spark.eventLog.dir               hdfs://hadoop102:8020/spark-logs

#spark的历史服务器,在spark所在节点,端口18080
spark.yarn.historyServer.address=hadoop03:18080
spark.history.ui.port=18080

注意:HDFS上的目录需要提前存在。

② 修改spark-env.sh文件,配置日志存储路径

#spark的历史服务器
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/spark-logs 
-Dspark.history.retainedApplications=30"

③ 启动spark的历史服务器

sbin/start-history-server.sh

④ 提交应用程序

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

⑤ 观察web界面

yarn:http://hadoop103:8088/

spark的历史服务器

hadoop的历史服务器

参考:https://www.cnblogs.com/wh984763176/p/13399538.html https://blog.csdn.net/zheng911209/article/details/105442186 https://www.cnblogs.com/a155-/p/14438529.html

大数据-从部署到代码:https://blog.csdn.net/zheng911209/article/details/105498505

spark厦门大学林子雨系列教程:http://dblab.xmu.edu.cn/blog/spark/ Spark2.1.0入门:连接Hive读写数据:http://dblab.xmu.edu.cn/blog/1729-2/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在这之前已经在本地安装了hadoop和hive,参考大数据相关整理
  • 一.Windows安装
    • 1.安装
      • 2.使用
      • 二.Linux安装
        • 一般安装模式
          • 下载
          • 设置环境变量
          • 修改配置
          • 启动
          • 确认启动成功
        • Local模式
          • 1.安装
          • 2.使用
        • yarn模式
          • 1.安装
          • 2.使用
          • 3.spark的历史服务器集成yarn
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档