Spark详解(03) - Spark3.0.0运行环境安装

Spark运行模式

Spark常见部署模式:

Local模式:在本地部署单个Spark服务

所谓的Local模式,就是不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等。

在IDEA中运行代码的环境称之为开发环境,和Local模式还是有区别的。

Standalone模式:Spark自带的任务调度模式。(国内常用)

YARN模式:Spark使用Hadoop的YARN组件进行资源与任务调度。(国内常用)

Windows模式:为了方便在学习测试spark程序,Spark提供了可以在windows系统下启动本地集群的方式,这样,在不使用虚拟机或服务器的情况下,也能满足Spark的基本使用。

Mesos & K8S模式:(了解)。

Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核,在Twitter得到广泛使用,管理着Twitter超过30,0000台服务器上的应用部署,但是在国内,依然使用着传统的Hadoop大数据框架,所以国内使用Mesos框架的并不多,但是原理都差不多。

容器化部署是目前业界很流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是Kubernetes(k8s),而Spark也在最近的版本中支持了k8s部署模式。详情参考官网地址:https://spark.apache.org/docs/latest/running-on-kubernetes.html

Spark安装地址

官网地址:http://spark.apache.org/

文档查看地址:https://spark.apache.org/docs/3.0.0/

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

镜像历史版本下载地址:https://archive.apache.org/dist/spark/

本文使用的版本下载地址:https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz

Local模式安装(测试环境)

Local模式就是运行在一台计算机上的模式,通常就是用于测试环境。

安装

Local模式的安装非常简单,直接将安装包上传到服务器并解压即可使用,具体操作步骤如下

上传安装包park-3.0.0-bin-hadoop3.2.tgz到服务器

解压安装包

[root@hadoop102 software]# tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/

[root@hadoop102 software]# cd /opt/module/

[root@hadoop102 module]# mv spark-3.0.0-bin-hadoop3.2/ spark-local

使用

官方求PI案例验证安装结果

[root@hadoop102 spark-local]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.12-3.0.0.jar 10

运行结果展示

提交命令参数说明

--class:表示要执行程序的主类;

--master local[2]

(1)local: 没有指定线程数,则所有计算都运行在一个线程当中,没有任何并行计算

(2)local[K]:指定使用K个Core来运行计算,比如local[2]就是运行2个Core来执行

(3)local[*]:默认模式。自动按照CPU最多核来设置线程数。比如CPU有8核,Spark自动设置8个线程计算。

spark-examples_2.12-3.0.0.jar:要运行的程序jar包名称;

10:要运行程序的输入参数(这里表示计算圆周率π的次数,计算次数越多,准确率越高);

可以查看spark-submit所有参数:

[root@hadoop102 spark-local]# bin/spark-submit

官方WordCount案例

1)需求:读取多个输入文件,统计每个单词出现的总次数。

2)需求分析:

代码实现:

(1)准备文件

mkdir input

在input下创建2个文件1.txt和2.txt,并输入内容

echo "hello hadoop" >> 1.txt

echo "hello spark" >> 1.txt

echo "hello hadoop" >> 2.txt

echo "hello spark" >> 2.txt

(2)使用bin/spark-shell命令启动spark-shell

注意:sc是SparkCore程序的入口;spark是SparkSQL程序入口;master = local[*]表示本地模式运行。

Spark context Web UI available at http://192.168.194.102:4040

Spark context available as 'sc' (master = local[*], app id = local-1646410143774).

再开启一个hadoop102远程连接窗口,使用jps查看SparkSubmit进程

[root@hadoop102 ~]# jps

1370 Jps

1276 SparkSubmit

运行任务方式说明:

spark-submit,是将jar上传到集群,执行Spark任务;

spark-shell,相当于命令行工具,本身也是一个Application。

(3)登录hadoop102:4040,查看程序运行情况(注意:spark-shell窗口关闭掉,则hadoop102:4040页面关闭)

说明:本地模式下,默认的调度器为FIFO。

(5)运行WordCount程序

scala> sc.textFile("/opt/module/spark-local/input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

res0: Array[(String, Int)] = Array((hello,4), (spark,2), (hadoop,2))

注意:只有collect开始执行时,才会加载数据。

登录hadoop102:4040查看程序运行结果

Standalone(独立)模式

Standalone模式(也称独立模式)是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。

这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助Hadoop的Yarn和Mesos等其他框架。

安装

Hadoop102: Master, Worker

Hadoop103:Worker

Hadoop104:Worker

安装jdk环境

配置hosts文件

ssh免密登录

生成key

ssh-keygen

四个回车

将key拷贝到其他机器

ssh-copy-id hadoop102

ssh-copy-id hadoop103

ssh-copy-id hadoop104

关闭防火墙

[root@hadoop102 module]# tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/

[root@hadoop102 module]# cd /opt/module/

[root@hadoop102 module]# mv spark-3.0.0-bin-hadoop3.2/ spark-standlone

[root@hadoop102 module]# cd spark-standlone/conf/

[root@hadoop102 conf]# mv slaves.template slaves

[root@hadoop102 conf]# vi slaves

清空原来内容,添加如下内容

hadoop102

hadoop103

hadoop104

[root@hadoop102 conf]# mv spark-env.sh.template spark-env.sh

[root@hadoop102 conf]# vi spark-env.sh

在文件末尾添加如下内容

SPARK_MASTER_HOST=hadoop102

SPARK_MASTER_PORT=7077

[root@hadoop102 spark-standlone]# cd ../

[root@hadoop102 spark-standlone]# vi /opt/module/spark-standlone/sbin/spark-config.sh

在文件末尾添加如下内容

export JAVA_HOME=export JAVA_HOME=/usr/local/jdk1.8.0_191

如果不配置JAVA_HOME环境变量,在执行sbin/start-all.sh命令启动spark集群的时候可能会出现JAVA_HOME is not set 异常

[root@hadoop102 conf]# cd /opt/module/

[root@hadoop102 module]# scp -r spark-standlone/ hadoop103:/opt/module/spark-standlone

[root@hadoop102 module]# scp -r spark-standlone/ hadoop104:/opt/module/spark-standlone

[root@hadoop102 module]# cd /opt/module/spark-standlone/

[root@hadoop102 spark-standlone]# sbin/start-all.sh

[root@hadoop102 spark-standlone]# jps

2128 Worker

2183 Jps

2059 Master

[root@hadoop103 module]# jps

1739 Worker

1788 Jps

[root@hadoop104 module]# jps

1669 Worker

1718 Jps

目前还看不到任何任务的执行信息。

Spark集群测试案例

[root@hadoop102 spark-standlone]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop102:7077 ./examples/jars/spark-examples_2.12-3.0.0.jar 10

参数:--master spark://hadoop102:7077指定要连接集群的master,如果不设置—master参数会默认使用本机,当远程提交spark任务时必须要制定该参数才能正确的找到spark集群

页面查看http://hadoop102:8080/,发现执行本次任务,默认采用三台服务器节点的总核数3核,每个节点内存1024M。

配置Executor可用内存为2G,使用CPU核数为2个

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://hadoop102:7077 \

--executor-memory 2G \

--total-executor-cores 2 \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

Spark任务提交设置参数的基本语法

bin/spark-submit \

--class <main-class>

--master <master-url> \

... # other options

<application-jar> \

[application-arguments]

相关参数说明

参数

解释

可选值举例

--class

Spark程序中包含主函数的类

 

--master

Spark程序运行的模式

本地模式:local[*]、spark://hadoop102:7077、

Yarn

--executor-memory 1G

指定每个executor可用内存为1G

符合集群内存配置即可,具体情况具体分析。

--total-executor-cores 2

指定所有executor使用的cpu核数为2个

application-jar

打包好的应用jar,包含依赖。这个URL在集群中全局可见。
比如hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path都包含同样的jar

application-arguments

传给main()方法的参数

配置历史服务

由于spark-shell停止掉后,hadoop102:4040页面就看不到历史任务的运行情况,所以开发时都配置历史服务器记录任务运行情况。

1)修改spark-default.conf.template名称

cd spark-standlone/conf

mv spark-defaults.conf.template spark-defaults.conf

2)修改spark-default.conf文件,配置日志存储路径(写),并同步到其他服务器上

vi spark-defaults.conf

修改一下内容

spark.eventLog.enabled true

spark.eventLog.dir hdfs://hadoop102:8020/directory

将修改后的文件同步到其他服务上

xsync spark-defaults.conf

3)修改spark-env.sh文件,:

vi spark-env.sh

添加如下配置

export SPARK_HISTORY_OPTS="

-Dspark.history.ui.port=18080

-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory

-Dspark.history.retainedApplications=30"

# 参数1 Dspark.history.ui.port:WEBUI访问的端口号为18080

# 参数2 Dspark.history.fs.logDirectory:指定历史服务器日志存储路径(读)

# 参数3 Dspark.history.retainedApplications:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

4)同步配置文件

xsync spark-env.sh

启动Hadoop集群,并在HDFS上创建/directory目录。

sbin/start-dfs.sh

hadoop fs -mkdir /directory

5)启动历史服务

sbin/start-history-server.sh

6)再次执行任务

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://hadoop102:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

7)查看Spark历史服务地址:hadoop102:18080

配置高可用(HA)

停止集群

sbin/stop-all.sh

安装Zookeeper集群并启动:《Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式》

zk.sh start

修改spark-env.sh文件添加如下配置:

vi spark-env.sh

#注释掉如下内容:

#SPARK_MASTER_HOST=hadoop102

#SPARK_MASTER_PORT=7077

#添加如下内容。配置由Zookeeper管理Master

export SPARK_DAEMON_JAVA_OPTS="

-Dspark.deploy.recoveryMode=ZOOKEEPER

-Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104

-Dspark.deploy.zookeeper.dir=/spark"

#添加如下代码

#Zookeeper3.5的AdminServer默认端口是8080,和Spark的WebUI冲突

export SPARK_MASTER_WEBUI_PORT=8989

在Zookeeper节点中自动创建/spark目录,用于管理:

同步配置文件

xsync spark-env.sh

在hadoop102上启动spark的全部节点

sbin/start-all.sh

在hadoop103上单独启动master节点

sbin/start-master.sh

再启动一个hadoop102窗口,将/opt/module/spark-local/input中的测试数据上传到hadoop集群的/input目录

hadoop fs -put /opt/module/spark-local/input/ /input

Spark HA集群访问

bin/spark-shell \

--master spark://hadoop102:7077,hadoop103:7077 \

--executor-memory 2g \

--total-executor-cores 2

参数:--master spark://hadoop102:7077指定要连接的集群的master

执行WordCount程序

scala>sc.textFile("hdfs://hadoop102:8020/input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

res0: Array[(String, Int)] = Array((hadoop,6), (oozie,3), (spark,3), (hive,3), (atguigu,3), (hbase,6))

使用jps命令查看hadoop102的master进程

5506 Worker

5394 Master

5731 SparkSubmit

4869 QuorumPeerMain

5991 Jps

5831 CoarseGrainedExecutorBackend

Kill掉hadoop102的master进程,页面中观察http://hadoop103:8080/的状态是否切换为active。

kill -9 5394

再启动hadoop102的master进程

sbin/start-master.sh

运行模式

Spark有standalone-client(客户端模式)和standalone-cluster(集群模式)两种模式,主要区别在于:Driver程序的运行节点。

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://hadoop102:7077 \

--executor-memory 2G \

--total-executor-cores 1 \

--deploy-mode client \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

--deploy-mode client,表示Driver程序运行在本地客户端

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://hadoop102:7077 \

--executor-memory 2G \

--total-executor-cores 1 \

--deploy-mode cluster \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

--deploy-mode cluster,表示Driver程序运行在集群

client用于测试,因为该模式的Driver运行在本地客户端,会与yarn集群产生较大的网络通信,从而导致网卡流量激增;它的好处在于直接执行时,在本地可以查看到所有的log,方便调试;

cluster用于生产环境,因为Driver运行在NodeManager,相当于一个ApplicationMaster,没有网卡流量激增的问题;缺点在于调试不方便,本地用spark-submit提交后,看不到log,只能通过yarn application_id这种命令来查看,由于应用的运行结果不能在客户端显示,所以最好将那些将结果保存在外部存储介质(如HDFS、Redis、Mysql)而非stdout输出的应用程序,客户端的终端显示的仅是job的简单运行状况。

由于cluster模式,客户端的终端显示的仅是简单运行状况,无法像client模式将所有的日志信息都显示到客户端的终端上,若要查看cluster模式下的运行日志信息,只能够通过如下方式进行查看

http://192.168.194.102:8080/页面点击Completed Drivers里面的Worker

跳转到Spark Worker页面,点击Finished Drivers中Logs下面的stdout

最终日志的打印结果如下

注意:在测试Standalone模式,cluster运行流程的时候,阿里云用户访问不到Worker,因为Worker是从Master内部跳转的,这是正常的,实际工作中我们不可能通过客户端访问的,这些端口对外都会禁用,需要的时候会通过授权到Master访问Worker

Spark ON Yarn模式(重点)

Spark客户端直接连接Yarn,不需要额外构建Spark集群。

安装

[hadoop@hadoop102 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/

[hadoop@hadoop102 software]$ cd /opt/module/

[hadoop@hadoop102 module]$ mv spark-3.0.0-bin-hadoop3.2/ spark-yarn

如果使用的环境是虚拟机且内存较少,为防止执行过程进行被意外杀死,做如下配置

若是在生产环境或内存充足的情况下,则可以不添加该配置

vi 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>

分发配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml

[hadoop@hadoop102 conf]$ mv spark-env.sh.template spark-env.sh

[hadoop@hadoop102 conf]$ vi spark-env.sh

在文件末尾添加YARN_CONF_DIR配置,保证后续运行任务的路径都变成集群路径

YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop

[hadoop@hadoop102 spark-yarn]$ bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn ./examples/jars/spark-examples_2.12-3.0.0.jar 10

参数:--master yarn,表示Yarn方式运行;--deploy-mod表示客户端方式运行程序

如果运行的时候,抛出如下异常ClassNotFoundException:com.sun.jersey.api.client.config.ClientConfig

-原因分析:Spark2中jersey版本是2.22,但是yarn中还需要依赖1.9,版本不兼容

-解决方式:在yarn-site.xml中,添加

<property>

<name>yarn.timeline-service.enabled</name>

<value>false</value>

</property>

9)查看http://192.168.194.102:8088/页面,点击History,查看历史页面

spark-shell --master yarn --deploy-mode client

配置历史服务

为了查看spark程序的历史运行情况,需要配置一下历史服务器。

[hadoop@hadoop102 conf]$ mv spark-defaults.conf.template spark-defaults.conf

[hadoop@hadoop102 conf]$ vi spark-defaults.conf

在文件末尾添加如下内容

spark.eventLog.enabled true

spark.eventLog.dir hdfs://hadoop102:9820/directory

[hadoop@hadoop102 conf]$ vi spark-env.sh

在文件末尾添加如下内容

export SPARK_HISTORY_OPTS="

-Dspark.history.ui.port=18080

-Dspark.history.fs.logDirectory=hdfs://hadoop102:9820/directory

-Dspark.history.retainedApplications=30"

# 参数1含义:WEBUI访问的端口号为18080

# 参数2含义:指定历史服务器日志存储路径

# 参数3含义:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

hadoop@hadoop102 conf]$ vi spark-defaults.conf

在文件末尾添加如下内容

spark.yarn.historyServer.address=hadoop102:18080

spark.history.ui.port=18080

[hadoop@hadoop102 conf]$ hadoop fs -mkdir /directory

启动Spark历史服务

[hadoop@hadoop102 spark-yarn]$ sbin/start-history-server.sh

停止命令:sbin/stop-history-server.sh

提交任务到Yarn执行

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

Web页面查看日志:http://hadoop102:8088/cluster

待spark任务执行成功后点击"history"跳转到http://hadoop102:18080/

Spark ON Yarn运行模式

Spark有yarn-client(客户端模式)和yarn-cluster(集群模式)两种模式,主要区别在于:Driver程序的运行节点。

yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到spark程序的输出结果。

yarn-cluster:Driver程序运行在由ResourceManager启动的APPMaster适用于生产环境。


集群模式下查看Spark任务输出日志的方式

查看http://hadoop103:8088/cluster页面,点击History按钮,跳转到历史详情页面

在http://hadoop102:18080点击Executors->点击driver中的stdout

注意:如果在yarn日志端无法查看到具体的日志,则需要配置并启动Yarn历史服务器,具体配置流程请参考文章《Hadoop详解(02)Hadoop集群运行环境搭建》--配置历史服务器(可选)章节

Windows模式(开发环境)

在自己学习时,每次都需要启动虚拟机,启动集群,这是一个比较繁琐的过程,并且会占大量的电脑系统资源,导致系统执行变慢,不仅仅影响学习效果,也影响学习进度,Spark地提供了可以在windows系统下启动本地集群的方式,这样,在不使用虚拟机的情况下,也能使用Spark的基本功能。

将文件spark-3.0.0-bin-hadoop3.2.tgz解压缩到无中文无空格的任意路径下

双击执行解压缩文件路径下bin目录中的spark-shell.cmd文件,启动Spark本地环境

创建D:/input/word.txt文件并在文件中添加内容, 在命令行中输入脚本代码

scala> sc.textFile("D:/input/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

res0: Array[(String, Int)] = Array((hello,2), (spark,1), (hadoop,1))

如果出现如下错误

Exception in thread "Thread-16" java.io.FileNotFoundException: C:\Users\Administrator\.scala_history (拒绝访问。)

则需要在启动spark-shell.cmd脚本的时候使用以管理员身份运行

在spark安装目录的bin目录下,按Shift右键空白处,选择 在此处打开Powershell窗口

在DOS命令行窗口中执行提交指令

在打开的DOS命令行窗口中执行提交命令

PS D:\ruanjian\spark-3.0.0-bin-hadoop3.2\bin> ./spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ../examples/jars/spark-examples_2.12-3.0.0.jar 10

Mesos & K8S模式(了解)

Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核,在Twitter得到广泛使用,管理着Twitter超过30,0000台服务器上的应用部署,但是在国内使用Mesos框架的并不多,原理其实都差不多,使用Spark客户端直接连接Mesos,不需要额外构建Spark集群。

容器化部署是目前业界很流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是Kubernetes(k8s),而Spark也在最近的版本中支持了k8s部署模式。官方使用文档地址:https://spark.apache.org/docs/latest/running-on-kubernetes.html

几种部署模式对比

模式

Spark安装机器数

需启动的进程

所属者

Local

1

Spark

Standalone

3

Master及Worker

Spark

Yarn

1

Yarn及HDFS

Hadoop

端口号总结

1)Spark查看当前Spark-shell运行任务情况端口号:4040

2)Spark Master内部通信服务端口号:7077    (类比于Hadoop的9820端口)

3)Spark Standalone模式Master Web端口号:8080(类比于Hadoop YARN任务运行情况查看端口号:8088)

4)Spark历史服务器端口号:18080(类比于Hadoop历史服务器端口号:19888)

其他常用端口汇总

50070:HDFSwebUI的端口号

8485:journalnode默认的端口号

9000:非高可用访问数rpc端口

8020:高可用访问数据rpc

8088:yarn的webUI的端口号

8080:master的webUI,Tomcat的端口号

7077:spark基于standalone的提交任务的端口号

8081:worker的webUI的端口号

18080:historyServer的webUI的端口号

4040:application的webUI的端口号

2181:zookeeper的rpc端口号

9083:hive的metastore的端口号

60010:Hbase的webUI的端口号

6379:Redis的端口号

8080:sparkwebUI的端口号

9092:kafka broker的端口

Spark详解(03) - Spark3.0.0运行环境安装的更多相关文章

  1. RocketMQ详解(三)启动运行原理

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  2. Tsung运行环境安装(转)

    转自:http://www.cnblogs.com/tsbc/p/4272974.html#_Toc372013359 tsung Tsung运行环境安装 检查安装一下依赖包,以免在安装的时候报错.( ...

  3. AppCrawler自动化遍历使用详解(版本2.1.0 )

    AppCrawle是自动遍历的app爬虫工具,最大的特点是灵活性,实现:对整个APP的所有可点击元素进行遍历点击.   优点: 1.支持android和iOS, 支持真机和模拟器 2.可通过配置来设定 ...

  4. AppCrawler自动化遍历使用详解(版本2.1.0 )(转)

    AppCrawle是自动遍历的app爬虫工具,最大的特点是灵活性,实现:对整个APP的所有可点击元素进行遍历点击.   优点: 1.支持android和iOS, 支持真机和模拟器 2.可通过配置来设定 ...

  5. 详解 Vue 2.4.0 带来的 4 个重大变化

    在这篇文章中,我将跟大家分享4个有突破性新特性. 服务端渲染异步组件 包裹组件内实现属性继承 异步组件支持webpack3 组件渲染后可保留HTML注释 1.服务端渲染异步组件 在vue2.4.0以前 ...

  6. Spark详解

    原文连接 http://xiguada.org/spark/ Spark概述 当前,MapReduce编程模型已经成为主流的分布式编程模型,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的 ...

  7. PayPal 开发详解(七):运行REST API SAMPLE

    1.编译成功,修改配置文件 sdk_config.properties ,使用我们申请的测试帐号执行收款测试,clientId 和 clientSecret 参见 PayPal 开发详解(五) 2.将 ...

  8. rest_framework之频率详解 03

    访问频率(节流) 1.某个用户一分钟之内访问的次数不能超过3次,超过3次则不能访问了,需要等待,过段时间才能再访问. 2.自定义访问频率.两个方法都必须写上. 登入页面的视图加上访问频率 3.返回值F ...

  9. spark——详解rdd常用的转化和行动操作

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark第三篇文章,我们继续来看RDD的一些操作. 我们前文说道在spark当中RDD的操作可以分为两种,一种是转化操作(trans ...

  10. nexus3.14.0版本linux环境安装、启动、搭建私库

    本文介绍的是nexus3.14.0版本在linux环境下安装.启动.搭建私库. nexus3以上的版本太新了,网上很少介绍安装细节的.据了解和2.X版本有所不同了. 1.前提 linux机器上需先安装 ...

随机推荐

  1. Spring Boot 配置 jar 包外面的 Properties 配置文件

    一.概述 Properties 文件是我们可以用来存储项目特定信息的常用方法.理想情况下,我们应该将其保留在 jar 包之外,以便能够根据需要对配置进行更改. 在这个教程中,我们将研究在 Spring ...

  2. 6.MongoDB系列之特殊索引和集合类型

    1. 地理空间索引及全文搜索 与Elasitcsearch一样,MongoDB同样支持地理空间索引及全文搜索,由于选型常用ES而非MongoDB此处略过 2. TTL索引 首先先了解下固定集合,其类似 ...

  3. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

  4. Educational Codeforces Round 138 (Rated for Div. 2) A-E

    比赛链接 A 题解 知识点:贪心. 注意到 \(m\geq n\) 时,不存在某一行或列空着,于是不能移动. 而 \(m<n\) 时,一定存在,可以移动. 时间复杂度 \(O(1)\) 空间复杂 ...

  5. SQL中的转义字符和通配符

    一.通配符 如果想查找"_cs"结尾的的账户   select * from [user] where loginname like '%_cs'是不行的,  _ 被认为是任意的字 ...

  6. DQL-聚合函数

    DQL-聚合函数 SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数. 聚合函数对一组值执行计算并返回单一的值.除 COUNT 以外,聚合函数忽略空值,如果COUNT函数的应用对象 ...

  7. Java集合精选常见面试题

    前言 博主只是这篇文章的搬运工,为了加强记忆自己梳理了一遍并扩展了部分内容. 集合拓展链接:集合概述&集合之Collection接口 - 至安 - 博客园 (cnblogs.com) Java ...

  8. Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

    前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...

  9. 记一次线上频繁fullGc的排查解决过程

    发生背景 最近上线的一个项目几乎全是查询业务,并且都是大表的慢查询,sql优化是做了一轮又一轮,前几天用户反馈页面加载过慢还时不时的会timeout,但是我们把对应的sql都优化一遍过后,前台响应还是 ...

  10. docker安装消息队列(rabbitmq)及数据库(mongo、mysql)

    解决ipv6 访问问题 nohup socat TCP6-LISTEN:36001,reuseaddr,fork TCP4:127.0.0.1:36000 > /root/ip6to4.log ...