Spark学习(二)Spark高可用集群搭建

Spark-3.2.4 高可用集群安装部署详细图文教程 阅读详情

1、下载Spark安装包

官网网址:http://spark.apache.org/downloads.html


2、Spark安装过程

2.1、上传并解压缩

[potter@potter2 ~]$ tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz -C apps/
 

2.2、修改配置文件

(1)进入配置文件所在目录

/home/potter/apps/spark-2.3.0-bin-hadoop2.7/conf


 
  1. [potter @potter2 conf]$ ll
  2. total 36
  3. -rw-r–r-- 1 potter potter 996 Feb 23 03: 42 docker.properties.template
  4. -rw-r–r-- 1 potter potter 1105 Feb 23 03: 42 fairscheduler.xml.template
  5. -rw-r–r-- 1 potter potter 2025 Feb 23 03: 42 log4j.properties.template
  6. -rw-r–r-- 1 potter potter 7801 Feb 23 03: 42 metrics.properties.template
  7. -rw-r–r-- 1 potter potter 865 Feb 23 03: 42 slaves.template
  8. -rw-r–r-- 1 potter potter 1292 Feb 23 03: 42 spark-defaults.conf.template
  9. -rwxr-xr-x 1 potter potter 4221 Feb 23 03: 42 spark-env.sh.template
(2)修改spark-env.sh文件

复制spark-env.sh.template,并重命名为spark-env.sh,并在文件最后添加配置内容


 
  1. [potter @potter2 conf]$ cp spark-env.sh.template spark-env.sh
  2. [potter @potter2 conf]$ vi spark-env.sh

 
  1. export JAVA_HOME=/usr/local/java/jdk1.8.0_73
  2. #export SCALA_HOME=/usr/share/scala
  3. export HADOOP_HOME=/home/potter/apps/hadoop- 2.7.5
  4. export HADOOP_CONF_DIR=/home/potter/apps/hadoop- 2.7.5/etc/hadoop
  5. export SPARK_WORKER_MEMORY= 500m
  6. export SPARK_WORKER_CORES= 1
  7. export SPARK_DAEMON_JAVA_OPTS= "-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=potter2:2181,potter3:2181,potter4:2181,potter5:2181 -Dspark.deploy.zookeeper.dir=/spark"
注:

#export SPARK_MASTER_IP=hadoop1  这个配置要注释掉。 

集群搭建时配置的spark参数可能和现在的不一样,主要是考虑个人电脑配置问题,如果memory配置太大,机器运行很慢。 

说明: 

-Dspark.deploy.recoveryMode=ZOOKEEPER    #说明整个集群状态是通过zookeeper来维护的,整个集群状态的恢复也是通过zookeeper来维护的。就是说用zookeeper做了spark的HA配置,Master(Active)挂掉的话,Master(standby)要想变成Master(Active)的话,Master(Standby)就要像zookeeper读取整个集群状态信息,然后进行恢复所有Worker和Driver的状态信息,和所有的Application状态信息; 

-Dspark.deploy.zookeeper.url=potter2:2181,potter3:2181,potter4:2181,potter5:2181#将所有配置了zookeeper,并且在这台机器上有可能做master(Active)的机器都配置进来;(我用了4台,就配置了4台) 

-Dspark.deploy.zookeeper.dir=/spark 

这里的dir和zookeeper配置文件zoo.cfg中的dataDir的区别??? 

-Dspark.deploy.zookeeper.dir是保存spark的元数据,保存了spark的作业运行状态; 

zookeeper会保存spark集群的所有的状态信息,包括所有的Workers信息,所有的Applactions信息,所有的Driver信息,如果集群
(3)复制slaves.template变成slaves

 
  1. [potter @potter2 conf]$ cp slaves.template slaves
  2. [potter @potter2 conf]$ vi slaves

添加以下内容:


 
  1. potter2
  2. potter3
  3. potter4
  4. potter5
(4)将安装包分发给其他节点

 
  1. [potter @potter2 apps]$ scp -r spark- 2.3.0-bin-hadoop2.7/ potter3: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 2 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2 a p p s ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 apps] PWD</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="2"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line">[potter<spanclass="hljs−meta">@potter</span>2apps] scp -r spark- 2.3.0-bin-hadoop2.7/ potter4: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 3 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2 a p p s ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 apps] PWD</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="3"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line">[potter<spanclass="hljs−meta">@potter</span>2apps] scp -r spark- 2.3.0-bin-hadoop2.7/ potter5: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; / o l &gt; &lt; / c o d e &gt; &lt; d i v c l a s s = &quot; h l j s − b u t t o n 2 &quot; d a t a − t i t l e = &quot; 复 制 &quot; &gt; &lt; / d i v &gt; &lt; / p r e &gt; &lt; h 2 &gt; &lt; a n a m e = &quot; t 4 &quot; &gt; &lt; / a &gt; 2.3 、 配 置 环 境 变 量 &lt; / h 2 &gt; &lt; p r e o n c l i c k = &quot; h l j s . c o p y C o d e ( e v e n t ) &quot; &gt; &lt; c o d e c l a s s = &quot; l a n g u a g e − j a v a h l j s &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2   ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/code&gt;&lt;div class=&quot;hljs-button {2}&quot; data-title=&quot;复制&quot;&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;t4&quot;&gt;&lt;/a&gt;2.3、配置环境变量&lt;/h2&gt;&lt;pre &quot;hljs.copyCode(event)&quot;&gt;&lt;code class=&quot;language-java hljs&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 ~] PWD</div></div></li></ol></code><divclass="hljs−button2"data−title="复制"></div></pre><h2><aname="t4"></a>2.3、配置环境变量</h2><preonclick="hljs.copyCode(event)"><codeclass="language−javahljs">[potter<spanclass="hljs−meta">@potter</span>2 ] vi .bashrc

 
  1. export SPARK_HOME=/home/potter/apps/spark- 2.3.0-bin-hadoop2.7
  2. export PATH= P A T H : PATH: PATH:SPARK_HOME/bin

保存并使其立即生效

[potter@potter2 ~]$ source .bashrc
 

2.4、配置spark-defaults.conf

Spark默认是本地模式:
进入/home/potter/apps/spark-2.3.0-bin-hadoop2.7/conf

复制一个spark-defaults.conf文件

[potter@potter2 conf]$ cp spark-defaults.conf.template spark-defaults.conf
  
[potter@potter2 conf]$ vi spark-defaults.conf
  

  
  1. # This is useful for setting default environmental settings.
  2. # Example:
  3. spark.master spark: //potter2:7077,potter3:7077,potter4:7077,potter5:7077
  4. # spark.eventLog.enabled true
  5. # spark.eventLog.dir hdfs: //namenode:8021/directory
  6. # spark.serializer org.apache.spark.serializer.KryoSerializer
  7. # spark.driver.memory 5g
  8. # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers= “one two three"

分发到其他节点:

 
  1. [potter @potter2 conf]$ scp -r spark-defaults.conf potter3: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 2 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2 c o n f ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 conf] PWD</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="2"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line">[potter<spanclass="hljs−meta">@potter</span>2conf] scp -r spark-defaults.conf potter4: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 3 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2 c o n f ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 conf] PWD</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="3"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line">[potter<spanclass="hljs−meta">@potter</span>2conf] scp -r spark-defaults.conf potter5: P W D &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; / o l &gt; &lt; / c o d e &gt; &lt; d i v c l a s s = &quot; h l j s − b u t t o n 2 &quot; d a t a − t i t l e = &quot; 复 制 &quot; &gt; &lt; / d i v &gt; &lt; / p r e &gt; &lt; h 1 &gt; &lt; a n a m e = &quot; t 6 &quot; &gt; &lt; / a &gt; 3 、 启 动 &lt; / h 1 &gt; &lt; h 2 &gt; &lt; a n a m e = &quot; t 7 &quot; &gt; &lt; / a &gt; 3.1 、 先 启 动 z o o k e e p e r 集 群 &lt; / h 2 &gt; &lt; p &gt; 所 有 节 点 均 要 执 行 &lt; / p &gt; &lt; p r e o n c l i c k = &quot; h l j s . c o p y C o d e ( e v e n t ) &quot; &gt; &lt; c o d e c l a s s = &quot; l a n g u a g e − j a v a h l j s &quot; &gt; &lt; o l c l a s s = &quot; h l j s − l n &quot; &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 1 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; [ p o t t e r &lt; s p a n c l a s s = &quot; h l j s − m e t a &quot; &gt; @ p o t t e r &lt; / s p a n &gt; 2   ] PWD&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/code&gt;&lt;div class=&quot;hljs-button {2}&quot; data-title=&quot;复制&quot;&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h1&gt;&lt;a name=&quot;t6&quot;&gt;&lt;/a&gt;3、启动&lt;/h1&gt;&lt;h2&gt;&lt;a name=&quot;t7&quot;&gt;&lt;/a&gt;3.1、先启动zookeeper集群&lt;/h2&gt;&lt;p&gt;所有节点均要执行&lt;/p&gt;&lt;pre &quot;hljs.copyCode(event)&quot;&gt;&lt;code class=&quot;language-java hljs&quot;&gt;&lt;ol class=&quot;hljs-ln&quot;&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;[potter&lt;span class=&quot;hljs-meta&quot;&gt;@potter&lt;/span&gt;2 ~] PWD</div></div></li></ol></code><divclass="hljs−button2"data−title="复制"></div></pre><h1><aname="t6"></a>3、启动</h1><h2><aname="t7"></a>3.1、先启动zookeeper集群</h2><p>所有节点均要执行</p><preonclick="hljs.copyCode(event)"><codeclass="language−javahljs"><olclass="hljs−ln"><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="1"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line">[potter<spanclass="hljs−meta">@potter</span>2 ] zkServer.sh start
  2. ZooKeeper JMX enabled by default
  3. Using config: /home/potter/apps/zookeeper- 3.4.10/bin/…/conf/zoo.cfg
  4. Starting zookeeper … already running as process 3703.
  5. [potter @potter2 ~]$ zkServer.sh status
  6. ZooKeeper JMX enabled by default
  7. Using config: /home/potter/apps/zookeeper- 3.4.10/bin/…/conf/zoo.cfg
  8. Mode: follower

3.2、启动HDFS集群

任意一个节点执行即可

[potter@potter2 ~]$ start-dfs.sh
 

3.3、再启动Spark集群


 
  1. [potter @potter2 ~]$ cd apps/spark- 2.3.0-bin-hadoop2.7/sbin/
  2. [potter @potter2 sbin]$ ./start-all.sh

3.4、查看进程


 
  1. [potter @potter2 sbin]$ jps
  2. 6464 Master
  3. 6528 Worker
  4. 6561 Jps
  5. 6562 Jps
  6. 3909 NameNode
  7. 6565 Jps
  8. 3703 QuorumPeerMain
  9. 5047 NodeManager
  10. 4412 DFSZKFailoverController
  11. 4204 JournalNode
  12. 4014 DataNode

 
  1. [potter @potter3 conf]$ jps
  2. 4609 Jps
  3. 3441 DataNode
  4. 3284 QuorumPeerMain
  5. 4581 Worker
  6. 3879 NodeManager
  7. 3576 JournalNode
  8. 3372 NameNode
  9. 3676 DFSZKFailoverController

 
  1. [potter @potter4 conf]$ jps
  2. 3456 JournalNode
  3. 3607 NodeManager
  4. 4123 Jps
  5. 3356 DataNode
  6. 3260 QuorumPeerMain
  7. 4095 Worker

 
  1. [potter @potter5 conf]$ jps
  2. 3216 QuorumPeerMain
  3. 3447 NodeManager
  4. 3304 DataNode
  5. 3945 Jps
  6. 3916 Worker

3.5、启动spark

出现以下就算启动成功:

3.5、问题

查看进程发现spark集群只有hadoop1成功启动了Master进程,其他3个节点均没有启动成功,需要手动启动,进入到/home/hadoop/apps/spark/sbin目录下执行以下命令,3个节点都要执行


 
  1. [potter @potter3 ~]$ cd apps/spark- 2.3.0-bin-hadoop2.7/sbin/
  2. [potter @potter3 sbin]$ ./start-master.sh

 
  1. [potter @potter4 ~]$ cd apps/spark- 2.3.0-bin-hadoop2.7/sbin/
  2. [potter @potter4 sbin]$ ./start-master.sh

 
  1. [potter @potter5 ~]$ cd apps/spark- 2.3.0-bin-hadoop2.7/sbin/
  2. [potter @potter5 sbin]$ ./start-master.sh

3.6、执行之后再次查看进程

Master进程和Worker进程都可以启动成功


 
  1. [potter @potter3 sbin]$ jps
  2. 3441 DataNode
  3. 3284 QuorumPeerMain
  4. 4581 Worker
  5. 3576 JournalNode
  6. 3372 NameNode
  7. 3676 DFSZKFailoverController
  8. 5020 Jps
  9. 4894 Master

 
  1. [potter @potter4 sbin]$ jps
  2. 3456 JournalNode
  3. 4179 Master
  4. 3356 DataNode
  5. 3260 QuorumPeerMain
  6. 4238 Jps
  7. 4095 Worker

 
  1. [potter @potter5 sbin]$ jps
  2. 3216 QuorumPeerMain
  3. 3304 DataNode
  4. 4057 Jps
  5. 3916 Worker
  6. 3998 Master

4、验证

4.1、查看Web界面Master状态

potter2是ALIVE状态,potter3、potter4和potter5均是STANDBY状态

potter2


potter3


potter4


potter5


4.2、手动干掉potter2上面的Master进程,观察是否进行自动切换


 
  1. [potter @potter2 ~]$ jps
  2. 6464 Master
  3. 6528 Worker
  4. 6901 Jps
  5. 3909 NameNode
  6. 3703 QuorumPeerMain
  7. 4412 DFSZKFailoverController
  8. 4204 JournalNode
  9. 4014 DataNode
  10. [potter @potter2 ~]$ kill - 9 6464
  11. [potter @potter2 ~]$

干掉potter2上的Master进程之后,再次查看web界面

potter2节点,由于Master进程被干掉,所以界面无法访问


potter3节点,Master被干掉之后,potter3节点上的Master成功篡位成功,成为ALIVE状态


potter4


potter5


五、执行Spark程序on standalone

(1)执行第一个Spark程序

 
  1. [potter @potter2 apps]$ cd
  2. [potter @potter2 ~]$ /home/potter/apps/spark- 2.3.0-bin-hadoop2.7/bin/spark-submit </div>
  3. > – class org.apache.spark.examples.SparkPi </span>
  4. > –master spark?/potter2:7077 </span>
  5. > –executor-memory 500m </span>
  6. > –total-executor-cores 1 </span>
  7. > /home/potter/apps/spark-2.3.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.0.jar </span>
  8. > 100

其中的spark://hadoop1:7077是下图中的地址


运行结果:


(2)启动spark-shell


 
  1. /home/potter/apps/spark- 2.3.0-bin-hadoop2.7/bin/spark-shell </div>
  2. –master spark: //potter2:7077 </span>
  3. –executor-memory 500m </div>
  4. –total-executor-cores 1

参数说明:

–master spark://potter2:7077 指定Master的地址
–executor-memory 500m:指定每个worker可用内存为500m
–total-executor-cores 1: 指定整个集群使用的cup核数为1个

注意:

如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可

Spark Shell中已经默认将SparkSQl类初始化为对象spark。用户代码如果需要用到,则直接应用spark即可

(3)在spark shell中编写workcount程序
1)编写一个workcount.txt文件并上传到HDFS上的 / 目录下

 
  1. [potter @potter2 ~]$ vi workcount.txt
  2. [potter @potter2 ~]$ hadoop fs -put hello.txt /

workcount.txt的内容是:


 
  1. you,jump
  2. i,jump
2)在spark shell中用scala语言编写spark程序
scala> sc.textFile(”/workcount.txt").flatMap(.split(",")).map((,1)).reduceByKey(+).collect
 

说明:

sc是SparkContext对象,该对象是提交spark程序的入口
textFile("/spark/hello.txt")是hdfs中读取数据
flatMap(.split(" "))先map再压平
map((
,1))将单词和1构成元组
reduceByKey(+)按照key进行reduce,并将value累加
saveAsTextFile("/spark/out")将结果写入到hdfs中

运行结果:


六、执行Spark程序on YARN

(1)前提

成功启动zookeeper集群、HDFS集群、YARN集群

(2)启动Spark on YARN
[potter@potter2 ~]$ spark-shell --master yarn --deploy-mode client
 

报错如下:


报错原因:内存资源给的过小,yarn直接kill掉进程,则报rpc连接失败、ClosedChannelException等错误。

解决方法:

先停止YARN服务,然后修改yarn-site.xml,增加如下内容

 
  1. <property>
  2. <name>yarn.nodemanager.vmem-check-enabled</name>
  3. <value> false</value>
  4. <description>Whether virtual memory limits will be enforced for containers</description>
  5. </property>
  6. <property>
  7. <name>yarn.nodemanager.vmem-pmem-ratio</name>
  8. <value> 4</value>
  9. <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
  10. </property>

将新的yarn-site.xml文件分发到其他Hadoop节点对应的目录下,最后在重新启动YARN。 

重新执行以下命令启动spark on yarn

[potter@potter2 hadoop]$ spark-shell --master yarn --deploy-mode client
 

(3)打开YARN的web界面

打开YARN的web界面:http://potter4:8088

可以看到Spark shell应用程序正在运行


 单击ID号链接,可以看到该应用程序的详细信息


单击“ApplicationMaster”链接


(4)运行程序

 
  1. scala> val array = Array( 1, 2, 3, 4, 5)
  2. array: Array[Int] = Array( 1, 2, 3, 4, 5)
  3. scala> val rdd = sc.makeRDD(array)
  4. rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[ 0] at makeRDD at <console>: 26
  5. scala> rdd.count
  6. res0: Long = 5
  7. scala>

再次查看YARN的web界面


(5)执行Spark自带的示例程序PI

 
  1. spark-submit – class org.apache.spark.examples.SparkPi </span>
  2. –master yarn </span>
  3. –deploy-mode cluster </span>
  4. –driver-memory 500m </span>
  5. –executor-memory 500m </span>
  6. –executor-cores 1 </span>
  7. /home/potter/apps/spark-2.3.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.0.jar </span>
  8. 10

执行过程:


 
  1. 2018- 04- 22 18: 16: 08 WARN NativeCodeLoader: 62 - Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
  2. 2018- 04- 22 18: 16: 13 INFO Client: 54 - Requesting a new application from cluster with 4 NodeManagers
  3. 2018- 04- 22 18: 16: 14 INFO Client: 54 - Verifying our application has not requested more than the maximum memory capability of the cluster (8192 MB per container)
  4. 2018-04-22 18:16:14 INFO Client:54 - Will allocate AM container, with 884 MB memory including 384 MB overhead
  5. 2018-04-22 18:16:14 INFO Client:54 - Setting up container launch context for our AM
  6. 2018-04-22 18:16:14 INFO Client:54 - Setting up the launch environment for our AM container
  7. 2018-04-22 18:16:14 INFO Client:54 - Preparing resources for our AM container
  8. 2018-04-22 18:16:18 WARN Client:66 - Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
  9. 2018-04-22 18:16:26 INFO Client:54 - Uploading resource file:/tmp/spark-e645ee0d-099c-4b22-8729-cb77babf5e0a/__spark_libs__3299474380368175903.zip -> hdfs://myha01/user/potter/.sparkStaging/application_1524389838076_0006/__spark_libs__3299474380368175903.zip
  10. 2018-04-22 18:17:04 INFO Client:54 - Uploading resource file:/home/potter/apps/spark-2.3.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.0.jar -> hdfs://myha01/user/potter/.sparkStaging/application_1524389838076_0006/spark-examples_2.11-2.3.0.jar
  11. 2018-04-22 18:17:05 INFO Client:54 - Uploading resource file:/tmp/spark-e645ee0d-099c-4b22-8729-cb77babf5e0a/__spark_conf__7169638864757569614.zip -> hdfs://myha01/user/potter/.sparkStaging/application_1524389838076_0006/spark_conf.zip
  12. 2018-04-22 18:17:05 INFO SecurityManager:54 - Changing view acls to: potter
  13. 2018-04-22 18:17:05 INFO SecurityManager:54 - Changing modify acls to: potter
  14. 2018-04-22 18:17:05 INFO SecurityManager:54 - Changing view acls groups to:
  15. 2018-04-22 18:17:05 INFO SecurityManager:54 - Changing modify acls groups to:
  16. 2018-04-22 18:17:05 INFO SecurityManager:54 - SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(potter); groups with view permissions: Set(); users with modify permissions: Set(potter); groups with modify permissions: Set()
  17. 2018- 04- 22 18: 17: 06 INFO Client: 54 - Submitting application application_1524389838076_0006 to ResourceManager
  18. 2018- 04- 22 18: 17: 06 INFO YarnClientImpl: 273 - Submitted application application_1524389838076_0006
  19. 2018- 04- 22 18: 17: 07 INFO Client: 54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  20. 2018-04-22 18:17:07 INFO Client:54 -
  21. client token: N/A
  22. diagnostics: N/A
  23. ApplicationMaster host: N/A
  24. ApplicationMaster RPC port: -1
  25. queue: default
  26. start time: 1524392325362
  27. final status: UNDEFINED
  28. tracking URL: http://potter4:8088/proxy/application_1524389838076_0006/
  29. user: potter
  30. 2018-04-22 18:17:08 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  31. 2018-04-22 18:17:09 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  32. 2018-04-22 18:17:10 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  33. 2018-04-22 18:17:11 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  34. 2018-04-22 18:17:12 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  35. 2018-04-22 18:17:13 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  36. 2018-04-22 18:17:14 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  37. 2018-04-22 18:17:15 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  38. 2018-04-22 18:17:16 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  39. 2018-04-22 18:17:17 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  40. 2018-04-22 18:17:18 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  41. 2018-04-22 18:17:19 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  42. 2018-04-22 18:17:20 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  43. 2018-04-22 18:17:22 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  44. 2018-04-22 18:17:23 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  45. 2018-04-22 18:17:24 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  46. 2018-04-22 18:17:25 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  47. 2018-04-22 18:17:26 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  48. 2018-04-22 18:17:28 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  49. 2018-04-22 18:17:29 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  50. 2018-04-22 18:17:30 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  51. 2018-04-22 18:17:31 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  52. 2018-04-22 18:17:33 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  53. 2018-04-22 18:17:34 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  54. 2018-04-22 18:17:35 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  55. 2018-04-22 18:17:36 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  56. 2018-04-22 18:17:37 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  57. 2018-04-22 18:17:38 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  58. 2018-04-22 18:17:40 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  59. 2018-04-22 18:17:41 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  60. 2018-04-22 18:17:42 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  61. 2018-04-22 18:17:43 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  62. 2018-04-22 18:17:44 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  63. 2018-04-22 18:17:45 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  64. 2018-04-22 18:17:46 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  65. 2018-04-22 18:17:47 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  66. 2018-04-22 18:17:48 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  67. 2018-04-22 18:17:49 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  68. 2018-04-22 18:17:50 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  69. 2018-04-22 18:17:51 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  70. 2018-04-22 18:17:52 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  71. 2018-04-22 18:17:53 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  72. 2018-04-22 18:17:54 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  73. 2018-04-22 18:17:55 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  74. 2018-04-22 18:17:56 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  75. 2018-04-22 18:17:57 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  76. 2018-04-22 18:17:58 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  77. 2018-04-22 18:17:59 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  78. 2018-04-22 18:18:00 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  79. 2018-04-22 18:18:01 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  80. 2018-04-22 18:18:02 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  81. 2018-04-22 18:18:03 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  82. 2018-04-22 18:18:04 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  83. 2018-04-22 18:18:05 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  84. 2018-04-22 18:18:06 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  85. 2018-04-22 18:18:07 INFO Client:54 - Application report for application_1524389838076_0006 (state: ACCEPTED)
  86. 2018-04-22 18:18:08 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  87. 2018-04-22 18:18:08 INFO Client:54 -
  88. client token: N/A
  89. diagnostics: N/A
  90. ApplicationMaster host: 192.168.123.102
  91. ApplicationMaster RPC port: 0
  92. queue: default
  93. start time: 1524392325362
  94. final status: UNDEFINED
  95. tracking URL: http://potter4:8088/proxy/application_1524389838076_0006/
  96. user: potter
  97. 2018-04-22 18:18:09 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  98. 2018-04-22 18:18:10 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  99. 2018-04-22 18:18:11 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  100. 2018-04-22 18:18:12 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  101. 2018-04-22 18:18:13 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  102. 2018-04-22 18:18:14 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  103. 2018-04-22 18:18:15 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  104. 2018-04-22 18:18:16 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  105. 2018-04-22 18:18:17 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  106. 2018-04-22 18:18:19 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  107. 2018-04-22 18:18:20 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  108. 2018-04-22 18:18:21 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  109. 2018-04-22 18:18:23 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  110. 2018-04-22 18:18:24 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  111. 2018-04-22 18:18:25 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  112. 2018-04-22 18:18:26 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  113. 2018-04-22 18:18:27 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  114. 2018-04-22 18:18:28 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  115. 2018-04-22 18:18:29 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  116. 2018-04-22 18:18:30 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  117. 2018-04-22 18:18:31 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  118. 2018-04-22 18:18:32 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  119. 2018-04-22 18:18:33 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  120. 2018-04-22 18:18:35 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  121. 2018-04-22 18:18:36 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  122. 2018-04-22 18:18:37 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  123. 2018-04-22 18:18:38 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  124. 2018-04-22 18:18:39 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  125. 2018-04-22 18:18:40 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  126. 2018-04-22 18:18:41 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  127. 2018-04-22 18:18:42 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  128. 2018-04-22 18:18:43 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  129. 2018-04-22 18:18:44 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  130. 2018-04-22 18:18:45 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  131. 2018-04-22 18:18:46 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  132. 2018-04-22 18:18:47 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  133. 2018-04-22 18:18:48 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  134. 2018-04-22 18:18:49 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  135. 2018-04-22 18:18:50 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  136. 2018-04-22 18:18:51 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  137. 2018-04-22 18:18:52 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  138. 2018-04-22 18:18:53 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  139. 2018-04-22 18:18:54 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  140. 2018-04-22 18:18:55 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  141. 2018-04-22 18:18:56 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  142. 2018-04-22 18:18:57 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  143. 2018-04-22 18:18:58 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  144. 2018-04-22 18:18:59 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  145. 2018-04-22 18:19:00 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  146. 2018-04-22 18:19:01 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  147. 2018-04-22 18:19:02 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  148. 2018-04-22 18:19:03 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  149. 2018-04-22 18:19:04 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  150. 2018-04-22 18:19:05 INFO Client:54 - Application report for application_1524389838076_0006 (state: RUNNING)
  151. 2018-04-22 18:19:06 INFO Client:54 - Application report for application_1524389838076_0006 (state: FINISHED)
  152. 2018-04-22 18:19:06 INFO Client:54 -
  153. client token: N/A
  154. diagnostics: N/A
  155. ApplicationMaster host: 192.168.123.102
  156. ApplicationMaster RPC port: 0
  157. queue: default
  158. start time: 1524392325362
  159. final status: SUCCEEDED
  160. tracking URL: http://potter4:8088/proxy/application_1524389838076_0006/
  161. user: potter
  162. 2018-04-22 18:19:08 INFO ShutdownHookManager:54 - Shutdown hook called
  163. 2018-04-22 18:19:09 INFO ShutdownHookManager:54 - Deleting directory /tmp/spark-6f009c18-9d50-460b-b480-77b0ca856369
  164. 2018-04-22 18:19:09 INFO ShutdownHookManager:54 - Deleting directory /tmp/spark-e645ee0d-099c-4b22-8729-cb77babf5e0a
  165. [potter@potter2 ~]$

Spark集群搭建的三种方式详解 Local 模式: 在本地模式下,Spark 将作为一个单独的 Java 进程在本地运行,不需要启动额外的集群资源。本地模式适用于开发和调试,可以快速运行 Spark 应用程序并查看结果,而不需要配置和管理集群资源。Standalone 模式: Standalone 模式是 Spark 提供的最简单的部署方式,也是默认的部署模式。在 Standalone 模式下,Spark 自身作为一个独立的集群运行,可以通过启动 Spark Master 和 Spark Worker 进程来启动一个完整的 Spark 集 阅读详情

相关推荐

【Spark】使用Spark集群搭建-Standalone

刷新 Master Web UI,应看到两个 Worker 节点已注册。,应看到 Spark Master 界面。验证 Master 启动成功:访问。

2301_81665462的博客 1402

spark高可用集群的搭建

1 两种解决方案 1基于文件系统的单点恢复,主要用于开发或者测试环境,spark提供目录保存spark application和worker的注册信息,并将它们的恢复状态写入该目录中。一旦master发生故障,就可以通过重新启动master进程(sbin/start-master.sh),恢复已运行的spark application和worker的注册信息。 2基于zookeeper的standby masters:通过zk来选举一个master,其他master处于standby状态。整个选举恢复需

健康平安的活着的专栏 492

Spark基础学习笔记07:搭建Spark HA集群

1. 了解Spark HA集群工作原理 2. 掌握搭建Spark HA集群基本步骤 3. 能够测试Spark HA集群的高可用性

howard2005的专栏 2007

Spark Core

Spark CoreCreate Repository 全阶段目标 理解 Spark 的特点和作用 能够完成 Spark 的集群搭建和安装 通过入门案例理解 Spark 的编程模型 RDD 了解 RDD 的常见使用 Table of Contents 1. Spark 概述 1.1. Spark是什么...

wz_TXWY的博客 718

第8章 Stata主成分分析与因子分析

在进行数据统计分析时,还往往会遇见变量特别多的情况,而且很多时候这些变量之间还存在着很强的相关关系或者说变量之间存在着很强的信息重叠,如果我们直接对数据进行分析,一方面会带来工作量的无畏的加大,另一方面还会出现一些模型应用的错误,于是主成分分析与因子分析应运而生。这两种分析方法的基本思想都是在不损失大量信息的前提下,利用较少的独立变量来替代原来的变量进行进一步的分析。 8.1主成分分析 基本思想是将众多的初始变量整合成少数几个互相无关的主成分变量,而这些新变量尽可能地包含...

qq_45112156的博客 5万+

FLUX.1 LoRa 微调

微调的好处:可以让你突破换脸这种输入图片的场景约束,微调好的模型可以让你真正的文生图。换脸只能根据输入的图片和视频来生成内容。

szmars的博客 3622

Spark集群搭建

现有机器:master01,master02,worker01。

qq_73339471的博客 2026

赛灵思Xilinx 7系列FPGA硬件设计知识总结

本文讲述了赛灵思7系列FPGA硬件设计的关键点,为使用该系列FPGA提供硬件设计参考。

csdn_dsw的博客 3624

Spark 集群搭建(完整)

如果要在 Yarn 中运行 Spark 程序, 首先会和 RM 交互, 开启 ApplicationMaster, 其中运行了 Driver, Driver创建基础环境后, 会由 RM 提供对应的容器, 运行 Executor, Executor会反向向 Driver 反向注册自己, 并申请 Tasks 执行。对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行。

weixin_45131680的博客 7387

unity游戏开发日志(一)将mmd模型导入unity,并解决材质丢失的问题

unity音乐游戏开发,导入角色模型并解决材质问题

yizhigou1的博客 1765

破解拼多多网页字体加密的Python实现(静态)

爬取或者复制粘贴出来发现数字不是6372,而是这样的一个东西 ""从上图我们可以看出数字是一行的空白,后面被浏览器渲染后才展现的数字。我们可以用这个代码查看十六位进制对应的十进制,为什么要看十进制呢?​,而字体文件中的字符映射关系(cmap)也是以十进制存储的。我们搜索这个属性我们可以看到第一个这样的属性有一个URL,这个就是解密的字体包。然后我们构造一个这样的映射字典 key就是对应的十进制,后面的值就是对应的数字。然后我们需要封装一个函数,将加密文字和映射字典传入,返回解密后的数字。

weixin_64179111的博客 3544

Spark学习(二)Spark集群的搭建

Spark集群一、Spark集群的四种运行模式二、基于Standalone的Spark集群搭建三、基于Standalone的高可用Spark集群搭建 一、Spark集群的四种运行模式 1、Local 单机运行,一般用于开发测试。 2、Yarn Spark客户端直接连接Yarn,不需要额外构建Spark集群。 3、Standalone 构建一个由Master+Worker构成的Spark集群,Spa...

滴水穿石的博客 3917

在 SAP 世界里拥抱非 SAP 技术:一名 ABAP 开发者的成长路径与实战方法论

那段时间非常煎熬,但它带来的回报也很真实:你会更尊重“可观测性”的价值,也会更愿意在 SAP 场景里把日志、追踪、断言、隔离测试做扎实。解决这类问题,靠的并不是某个神奇的 SAP 函数,而是跨栈的工程设计:接口要有业务幂等键,SAP 侧要有落库与锁策略,返回要有可识别的状态码,异常要能回放,补偿要有可追踪的工单或队列。这套体系吸引我的地方,在于它更贴近真实业务:客户要的往往不是“能打印”,而是“能规范地输出”,包括版式、字体、条码、二维码、电子签章位置、分页规则、多语言、合规水印、可回写的交互字段等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 170

Hadoop+Spark+Zookeeper高可用集群搭建(五)

文章目录1. 前言2. 准备工作3. 配置Spark系统变量3.1 配置Spark 和 Scala 系统变量3.2 配置Spark环境变量3.3 配置Spark工作节点4. 启动Spark集群4.1 在三个Slave节点上启动ZK集群4.2 在master001上启动HDFS集群4.3 在master001上启动Spark集群的Master节点4.4 在master002上启动Spark集群的Ma...

RivenDong 1930

新手强化学习—深入解析 YOLOv13 项目包中的文件结构和各文件作用

YOLOv13是YOLO系列最新发布的计算机视觉模型。在这篇博客中,我将深入分析YOLOv13中各个文件的作用,对整个项目的文件结构有更清晰的认识。

Limiiiing的博客 485

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spark —— 高可用集群搭建

一、集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务。同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop003上分别部署备用的Master服务,Master服务由Zookeeper集群进行协调管理,如果主Master不可用,则备用Master会成为新的主Master。 二、前置条件 搭建Spark集群...

黑白影的博客 576

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

spark高可用集群搭建及运行测试

之前的文章spark集群的搭建基础上建立的,重复操作已经简写; 之前的配置中使用了master01、slave01、slave02、slave03; 本篇文章还要添加master02和CloudDeskTop两个节点,并配置好运行环境; 一、流程: 1、在搭建高可用集群之前需要先配置高可用,首先在master01上:  [hadoop@master01 ~]$ cd /software/...

yangbosos的博客 598

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【大数据环境安装指南】ZooKeeper搭建spark高可用集群教程

本文介绍了Spark集群的搭建与高可用配置,主要包括:1)Spark核心组件与架构,包括Spark Core、SQL、Streaming等模块功能及Standalone集群架构;2)Spark集群搭建步骤,包括环境准备、版本选择、安装配置及集群部署;3)高可用实现方案,通过ZooKeeper协调多Master节点实现故障自动切换;4)集群启动流程,需依次启动ZooKeeper、Hadoop和Spark服务。文章详细说明了在CentOS/Rocky/Kylin系统下基于Hadoop 3.4.2和JDK 8环境

ayst1994的博客 1399

《Spark on K8s:从零搭建高可用集群的完整指南》

通过Prometheus+Grafana的监控体系,企业能够实现对K8s大数据组件的全面监控,从资源利用到作业执行,确保系统稳定运行。随着云原生技术的演进,该方案将持续优化,为大数据处理提供更强大的可观测性支持。Spark on Kubernetes 允许您将 Spark 驱动程序和执行器作为 Pod 运行在 K8s 集群中。高可用性通过 Kubernetes 的机制(如 ReplicaSets 和服务发现)实现,确保主节点故障时自动切换。硬件要求。

aaisjhsgxksgdj的博客 1917

Spark 系列(七)—— 基于ZooKeeper搭建Spark高可用集群

一、集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务。同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop003上分别部署备用的Master服务,Master服务由Zookeeper集群进行协调管理,如果主Master不可用,则备用Master会成为新的主Master。 二、前置条件 搭建Spark集群...

黑白影的博客 701

搭建基于Zookeeper的Spark高可用集群

搭建基于Zookeeper的Spark高可用集群 步骤1: 实验环境准备测试 根据镜像创建实验环境,包括server1, server2,server3. 创建环境的硬件要求1核2G。 2.ifconfig查看IP,修改/etc/hosts文件的中的主机ip地址为最新ip地址。记得替换ip1/2/3。并拷贝到server2,server3。 172.16.84.55 172.16.80.205 172.16.202.102 ip1 server1 ip2 server2 ip3 server3 3

weixin_45793065的博客 368
上一篇: Spark集群三种部署模式的区别
下一篇: 安装Spark+hadoop,spark、hadoop分布式集群搭建...(亲自搭建过!!)
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值