首页 > 其他分享 >今日总结

今日总结

时间:2024-02-05 23:13:13浏览次数:20  
标签:总结 ## server export 今日 spark 如下 Spark

Spark 软件安装包下载:http://spark.apache.org/downloads.html

默认情况下,可以下载官方提供的针对Apache不同版本的Hadoop编译的软件包,但是在实际
企业项目开发中下载Spark对应版本源码,依据所使用的Hadoop版本进行编译,同时不会使用CDH
5.x提供Spark版本(其一:Spark版本太低;其二:CDH 版本Spark功能阉割,尤其在SparkSQL模
块,由于SparkSQL与Cloudera公司Impala属于竞争关系),源码下载地址:https://archive.apache.org/dist/spark/spark-2.4.5/
给大家提供已经针对CDH-5.16.2编译完成Spark安装包,使用Scala版本为2.11.12

具体如何编译Spark源码,参考官方文档,注意Maven版本:http://spark.apache.org/docs/2.4.5/building-spark.html
整个编译大概耗时1个小时左右,具体依赖网络及下载依赖包速度,如下为编译完成截图:


3 Spark 安装
将编译完成spark安装包【spark-2.4.5-bin-cdh5.16.2-2.11.tgz】解压至【/export/server】目录:

## 解压软件包
tar -zxf /export/software/spark-2.4.5-bin-cdh5.16.2-2.11.tgz -C /export/server/
## 创建软连接,方便后期升级
ln -s /export/server/spark-2.4.5-bin-cdh5.16.2-2.11 /export/server/spark
1
2
3
4
其中各个目录含义如下:


第一步、安装Scala-2.11.12
## 解压Scala
tar -zxf /export/softwares/scala-2.11.12.tgz -C /export/server/
## 创建软连接
ln -s /export/server/scala-2.11.12 /export/server/scala
## 设置环境变量
vim /etc/profile
### 内容如下:
# SCALA_HOME
export SCALA_HOME=/export/server/scala
export PATH=$PATH:$SCALA_HOME/bin
1
2
3
4
5
6
7
8
9
10
第二步、修改配置名称
## 进入配置目录
cd /export/server/spark/conf
## 修改配置文件名称
mv spark-env.sh.template spark-env.sh
1
2
3
4
第三步、修改配置文件,$SPARK_HOME/conf/spark-env.sh,增加如下内容:
## 设置JAVA和SCALA安装目录
JAVA_HOME=/export/server/jdk
SCALA_HOME=/export/server/scala
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
1
2
3
4
5
截图如下:


第四步、启动HDFS集群,从HDFS上读取数据文件
# 启动NameNode
hadoop-daemon.sh start namenode
# 启动DataNode
hadoop-daemon.sh start datanode
1
2
3
4
4 运行spark-shell
本地模式运行Spark框架提供交互式命令行:spark-shell,其中本地模式LocalMode含义为:
启动一个JVM Process进程,执行任务Task,使用方式如下:

--master local | local[*] | local[K] 建议 K >= 2 正整数
1
其中K表示启动线程数目(或CPU Core核数),
示意图如下:
本地模式启动spark-shell:

## 进入Spark安装目录
cd /export/server/spark
## 启动spark-shell
bin/spark-shell --master local[2]
1
2
3
4
运行成功以后,有如下提示信息:

其中创建SparkContext实例对象:sc、SparkSession实例对象:spark和启动应用监控页面端
口号:4040,详细说明如下:

Spark context Web UI available at http://192.168.59.140:4040
表示每个Spark 应用运行时WEB UI监控页面,端口号4040
Spark context available as 'sc' (master = local[2], app id = local-1572380095682).
表示SparkContext类实例对象名称为sc
在运行spark-shell命令行的时候,创建Spark 应用程序上下文实例对象SparkContext
主要用于读取要处理的数据和调度程序执行
Spark session available as 'spark'.
Spark2.x出现的,封装SparkContext类,新的Spark应用程序的入口
表示的是SparkSession实例对象,名称spark,读取数据和调度Job执行
1
2
3
4
5
6
7
8
9
将【$SPARK_HOME/README.md】文件上传到HDFS目录【/datas】,使用SparkContext读取文
件,命令如下

## 上传HDFS文件
hdfs dfs -mkdir -p /datas/
hdfs dfs -put /export/server/spark/README.md /datas
## 读取文件
val datasRDD = sc.textFile("/datas/README.md")
## 条目数
datasRDD.count
## 获取第一条数据
datasRDD.first
1
2
3
4
5
6
7
8
9
相关截图如下:


5 词频统计WordCount
大数据框架经典案例:词频统计WordCount,从文件读取数据,统计单词个数。

5.1 MapReduce WordCount
首先回顾一下MapReduce框架如何实现,流程如下图所示:

第一步、Map阶段:读取文件数据,分割为单词,出现次数为1
第二步、Reduce阶段:对map阶段输出的数据分组聚合,将相同Key的Value放在一起,聚合每
个单词出现的总次数。
5.2 Spark WordCount
使用Spark编程实现,分为三个步骤:

第一步、从HDFS读取文件数据,sc.textFile方法,将数据封装到RDD中
第二步、调用RDD中高阶函数,进行处理转换处理,函数:flapMap、map和reduceByKey
第三步、将最终处理结果RDD保存到HDFS或打印控制台
首先回顾一下Scala集合类中高阶函数flatMap与map函数区别,map函数:会对每一条输入进
行指定的func操作,然后为每一条输入返回一个对象;flatMap函数:先映射后扁平化;
Scala中reduce函数使用案例如下:
在Spark数据结构RDD中reduceByKey函数,相当于MapReduce中shuffle和reduce函数合在
一起:按照Key分组,将相同Value放在迭代器中,再使用reduce函数对迭代器中数据聚合。
5.3 编程实现
准备数据文件:wordcount.data,内容如下,上传HDFS目录【/datas/】

## 创建文件
vim wordcount.data
## 内容如下
spark spark hive hive spark hive
hadoop sprk spark
## 上传HDFS
hdfs dfs -put wordcount.data /datas/
1
2
3
4
5
6
7
编写代码进行词频统计:

## 读取HDFS文本数据,封装到RDD集合中,文本中每条数据就是集合中每条数据
val inputRDD = sc.textFile("/datas/wordcount.data")
## 将集合中每条数据按照分隔符分割,使用正则:https://www.runoob.com/regexp/regexp-syntax.html
val wordsRDD = inputRDD.flatMap(line => line.split("\\s+"))
## 转换为二元组,表示每个单词出现一次
val tuplesRDD = wordsRDD.map(word => (word, 1))
# 按照Key分组,对Value进行聚合操作, scala中二元组就是Java中Key/Value对
## reduceByKey:先分组,再聚合
val wordcountsRDD = tuplesRDD.reduceByKey((tmp, item) => tmp + item)
## 查看结果
wordcountsRDD.take(5)
## 保存结果数据到HDFs中
wordcountsRDD.saveAsTextFile("/datas/spark-wc")
## 查结果数据
hdfs dfs -text /datas/spark-wc/par*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
截图如下:
查看保存结果:

5.4 监控页面
每个Spark Application应用运行时,启动WEB UI监控页面,默认端口号为4040,使用浏览器
打开页面,如下:

点击【Job 0】,进入到此Job调度界面,通过DAG图展示,具体含义后续再讲。
大多数现有的集群计算系统都是基于非循环的数据流模型。即从稳定的物理存储(如分布式文
件系统)中加载记录,记录被传入由一组确定性操作构成的 DAG(Directed AcyclicGraph,有向
无环图),然后写回稳定存储。 DAG 数据流图能够在运行时自动实现任务调度和故障恢复。

6 运行圆周率
Spark框架自带的案例Example中涵盖圆周率PI计算程序,可以使用
【$SPARK_HOME/bin/spark-submit】提交应用执行,运行在本地模式。

自带案例jar包:【/export/server/spark/examples/jars/spark-examples_2.11-2.4.5.jar】

提交运行PI程序

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master local[2] \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10
1
2
3
4
5
6
运行结果截图如下:

扩展:圆周率计算方式,采用蒙特卡洛算法

1)、在一个正方形中, 内切出一个圆形

2)、随机向正方形内均匀投 n 个点, 其落入内切圆内的内外点的概率满足如下

以上就是蒙特卡洛的大致理论, 通过这个蒙特卡洛, 便可以通过迭代循环投点的方式实现蒙特
卡洛算法求圆周率。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/zgl_cyy/article/details/116407227

标签:总结,##,server,export,今日,spark,如下,Spark
From: https://www.cnblogs.com/zhaoyueheng/p/18008981

相关文章

  • 2024年2月5号总结
    P1194买礼物洛谷题目链接解题思路这个题目是一个最小生成树或者说是贪心的题目,在这里我们把买的东西定义成顶点,边是优惠的价格那么我们只要把每一个顶点连接起来可以了,但要注意优惠的价格​ 可能大于A,因此我们要比较A的价格和优惠的价格谁的花费少接下来就是最小生成树的......
  • 每日总结
    Scala是ScalableLanguage的简写,是一门多范式的编程语言联邦理工学院洛桑(EPFL)的MartinOdersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。Odersky先前的工作是GenericJava和javac(SunJava编译器)。Java平台的Scala于......
  • 2024.2.5寒假每日总结27
    LeetCode跳跃游戏VI1696.跳跃游戏VI-力扣(LeetCode)题目描述给你一个下标从0开始的整数数组nums和一个整数k。一开始你在下标0处。每一步,你最多可以往前跳k步,但你不能跳出数组的边界。也就是说,你可以从下标i跳到[i+1,min(n-1,i+k)]包含两个端点的任......
  • 代码随想录算法训练营第十三天|239. 滑动窗口最大值 347.前 K 个高频元素 总结
    239.滑动窗口最大值题目链接:239.滑动窗口最大值-力扣(LeetCode)给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。思路:首先在不考虑......
  • UML类图及各种线代表的关系含义总结
    原文:UML类图及各种线代表的关系含义总结_uml各种线条代表什么意义,请用uml图例详细说明-CSDN博客一、认识类图类图可以说是UML里使用频率最高的,类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确......
  • 一款后台管理框架的年终总结
    这是一篇关于Fantastic-admin这款后台管理框架的年终总结。不过与其说是年终总结,更像是一场回顾,看看这一年Fantastic-admin都做了哪些与众不同的功能,也给大家提供一些创造思路。或许有些功能,你可以在自己的项目里实现。以下按commit时间顺序汇总:可阅读时间这是一个将......
  • 《程序是怎样跑起来的》第二章总结
    在学JAVA的时候网课上提到过左移右移,不过并没有作为重点来讲,只是大概地说了一下是什么含义。刚看第二章作者提出的六个问题就有四个难住了我。比如一串二进制数左移两位会变成原数的几倍、还有补码形式表示的八进制如何用二进制表示等等,这些问题一点都不会。不过看完答案和作者给......
  • 《程序是怎样跑起来的》第一章总结
    第一章的主要内容就是对CPU进行了详细的解释.CPU相当于计算机的大脑,它有数百万至数一个晶体管构成.CPU的内部主要有控制器,运算器,寄存器和时钟构成.如寄存器可用来暂存指令,数据等处理对象可以将其看作是内存的一种,控制器负责把内存上的指令,数据等读人寄存器,并......
  • SM学习总结
    图的应用(1)---updatebylgj   拓扑序列 测试1  拓扑序列练习  测试2 拓扑排序-cn是大帅哥886-博客园(cnblogs.com) 断网测试1 断网测试1-拓扑排序-TimelineG(拓扑排序)-cn是大帅哥886-博客园(cnblogs.com) priority_queue简介与用法......
  • 一句话总结Docker与K8S的关系
    一句话总结:Docker只是容器的一种,它面向的是单体,K8S可以管理多种容器,它面向的是集群,Docker可以作为一种容器方案被K8S管理。下文继续具体介绍。1、容器的核心概念介绍这几个核心概念:OCI、CR、Runc、Containerd、CRI。1.1、容器运行规范容器运行规范OCI(OpenContainerInitiat......