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. 详解商业智能“前世今生”,“嵌入式BI”到底是如何产生的?

    嵌入式分析是使任何应用程序或用户更容易获得数据分析和商业智能的技术. 商业智能是通过分析业务数据辅助决策获取数据背后的 0信息. 商业智能软件和技术包含了报表查询,OLAP,数据挖掘及高级数据分析,最 ...

  2. logback.xml详解

    介绍 之前博文有专门介绍过基于Log4j Appender 实现大数据平台组件日志的采集, 本篇主要对java项目中经常会接触到的logback.xml文件的配置做一个介绍和总结. logback.x ...

  3. jsp页面重定向后地址栏controller名重复而导致报404错误

    今天做ssm项目时遇到了这种错误 看看代码: 无关代码省略... 22 <body> 23 <div id="container"> 24 <ifra ...

  4. vulnhub靶场|NAPPING: 1.0.1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:NAPPING: 1.0.1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/napping/nap ...

  5. Java登录专题-----创建用户(一)

    Java登录专题-----创建用户(一) 我来填坑了 创建用户 入参 应该包括: 用户姓名,用户密码,用户手机号,用户所属机构 用户版本号,角色id 出参: 没有 数据结构: JavaBean    ...

  6. 2022网刃杯ics

    ​ 目录 easyiec Ncsubj 喜欢移动的黑客 xyp07 ICS6-LED_BOOM 根据大佬的wp后,自己做了一遍 这次学到很多东西 ICS easyiec tcp追踪流直接能看到 ​编辑 ...

  7. 二十九、Helm常用命令

    # 创建一个chart范例 helm create HELM-NAME # 检查chart语法 helm lint ./HELM-NAME # 使用默认chart部署到k8s helm install ...

  8. P6492 STEP(线段树维护左右区间pushup)

    题目链接 题目描述: 给定一个长度为\(~\)n\(~\)的字符序列\(~\)a,初始时序列中全部都是字符\(~\)L. 有\(~\)q\(~\)次修改,每次给定一个\(~\)x,做出如下变化: \( ...

  9. mybatis-plus分页失效原因

    mybatis-plus分页失效解决方法 方法一.在启动类添加如下配置 @SpringBootApplication @MapperScan("com.**.mapper") pu ...

  10. 2022春每日一题:Day 28

    题目:最大上升子序列和 就是最长上升子序列的改版,贡献由1改为a[i]其他全部不变 代码: #include <cstdio> #include <cstdlib> #incl ...