Spark2.1集群安装(standalone模式)

摘要:
启动SparkShell SparkShell是Spark提供的一个交互式shell程序,方便用户进行交互式编程。用户可以使用scala在命令行/home/hadop/app/spark2.0/Spark-2.1.0-bin-hadoop2.6/bin/park-shell--ma下编写Spark程序sterspark://intsmaze-131:7077--Executor-memory2g--total Executor-res2参数描述:--masterspark://intsmaze-131:7077指定master的地址--executor-mory2g。指定每个工作程序的可用内存为2G。现有集群的任务无法启动,应修改为512m--Total executor-res2指定整个任务使用的杯型核心数为2。askSchedulerImpl:Initialjob未接受任何资源;检查集群UI以确保工作人员已注册并拥有足够的资源。如果在启动Sparkshell时未指定主地址,也可以启动Sparksshell并正常执行Sparkshell中的程序。实际上,Spark的本地模式已启动。此模式仅在本地计算机上启动进程,不与群集建立联系。默认情况下,SparkContext类已在SparkShell中初始化为对象sc。

机器部署

  准备三台Linux服务器,安装好JDK1.7

下载Spark安装包

  上传spark-2.1.0-bin-hadoop2.6.tgz安装包到Linux(intsmaze-131)上

  解压安装包到指定位置tar -zxvf spark-2.1.0-bin-hadoop2.6.tgz -C /home/hadoop/app/spark2.0/

原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6569036.html

微信:intsmaze

Spark2.1集群安装(standalone模式)第1张

配置Spark

  进入到Spark安装目录

  cd /spark-2.1.0-bin-hadoop2.6/conf

  mv spark-env.sh.template spark-env.sh

  vi spark-env.sh

  在该配置文件中添加如下配置  

export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export SPARK_MASTER_IP=intsmaze-131(指定standalone模式中主节点master是哪一台spark节点)
export SPARK_MASTER_PORT=7077 

  mv slaves.template slaves

  vi slaves

  在该文件中添加子节点所在的位置(Worker节点)

intsmaze-131
intsmaze-132
intsmaze-134

  将配置好的Spark拷贝到其他节点上(注意节点的路径必须和master一样,否则master启动集群回去从节点中对应目录中去启动work,不一致会报No such file or directory

scp -r spark-2.1.0-bin-hadoop2.6/ intsmaze-132:/home/hadoop/app/spark2.0/
scp -r spark-2.1.0-bin-hadoop2.6/ intsmaze-134:/home/hadoop/app/spark2.0/

  Spark集群配置完毕,目前是1个Master,3个Work,在intsmaze-131(master节点)上启动Spark集群

/home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/sbin/start-all.sh(spark集群不需要启动hadoop集群等,与hadoop集群无关。如果配置为spark on yarn上,那么必须启动spark和yarn集群而不需要启动hadoop)

  启动后执行jps命令,主节点上有Master进程和Work进程,其他子节点上有Work进程,登录Spark管理界面查看集群状态(主节点):http://intsmaze-131:8080/

Spark2.1集群安装(standalone模式)第2张

执行第一个spark程序

/home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/bin/spark-submit 
 --class org.apache.spark.examples.SparkPi 
 --master spark://intsmaze-131:7077 
 --executor-memory 1G 
 --total-executor-cores 2 /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.1.0.jar 
 100

 该算法是利用蒙特·卡罗算法求PI。

启动Spark Shell

  spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。

 /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/bin/spark-shell 
 --master spark://intsmaze-131:7077 
--executor-memory 2g 
--total-executor-cores 2

参数说明:

--master spark://intsmaze-131:7077 指定Master的地址

--executor-memory 2g 指定每个worker可用内存为2G,现有集群该任务将无法启动,应该修改为512m。

--total-executor-cores 2 指定整个任务使用的cup核数为2个。

  注意:如果给该任务分配的资源无法达到指定的,将无法成功启动job。比如服务器节点可以内存为为1G,你设置每个worker2G,将会无法启动任务。askSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

  如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可。

在spark shell中编写WordCount程序

1.首先启动hdfs

2.向hdfs上传一个文件到intsmaze-131:9000/words.txt

3.在spark shell中用scala语言编写spark程序

sc.textFile("hdfs://192.168.19.131:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://192.168.19.131:9000/out")

4.使用hdfs命令查看结果

hdfs dfs -ls hdfs://intsmaze-131:9000/out/p*

说明:

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

配置Spark的高可用

  到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:

  Spark集群规划:intsmaze-131,intsmaze-132是Master;intsmaze-131,intsmaze-132,intsmaze-134是Worker

  安装配置zk集群,并启动zk集群

  停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置

  export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"

  在node4上执行sbin/start-all.sh脚本,然后在node5上执行sbin/start-master.sh启动第二个Master

免责声明:文章转载自《Spark2.1集群安装(standalone模式)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.NET上传大文件的三种解决方案全局图片防盗链处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

hadoop集群搭建

一、准备工作: 1、环境:CentOS6.4-64bit JDK1.7-64bit 基于虚拟机拷贝4个虚拟机,一个作为Master,另外三个作为Slave,在这拷贝出来的四台虚拟机上分别执行下面的脚本初始化网卡eth0设备: /install/initNetwork.sh 2、配置集群网络 A、Master机器: 1 #配置主机名 2 hostname...

Visual Studio 2008 、 Windows 环境变量介绍 和 如何在文件中引用环境变量 .

Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 关于如何自己定义环境变量详见我的另一文章:http://blog.csdn.net/jtop0/artic...

Hadoop集群的hbase介绍、搭建、环境、安装

1、hbase的介绍(自行百度hbase,比我总结的全面具体) HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系...

Android Monkey压力测试使用

一、Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。只针对Activity做测试,不能对Servic...

hbase安装配置(整合到hadoop)

如果想详细了解hbase的安装:http://abloz.com/hbase/book.html 和官网http://hbase.apache.org/ 1.  快速单击安装 在单机安装Hbase的方法。会引导你通过shell创建一个表,插入一行,然后删除它,最后停止Hbase。只要10分钟就可以完成以下的操作。 1.1下载解压最新版本 选择一个 ...

win7为鼠标右键添加“用Photoshop编辑”选项

1、 确认你注册表编辑器下,HKEY_CLASSES_ROOTApplicationsPhotoshop.exe下的shell下的open下的command的右侧默认键值为 "D:Adobe Photoshop CCPhotoshop.exe" "%1"   上面部分是你自己的安装路径 2、 ①找到HKEY_CLASSES_ROOTSystemFileAs...