zhihu spark集群

spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗?修改

我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongodb数据库。我是否可以让它们只统计自身数据库的内容,然后将结果汇总到一台服务器上的数据库里?目前我的代码如下,但是最终只统计了master里的数据,另一个worker没有统计上。

val config = new Configuration()

//以下代码表示只统计本机数据库上的数据,猜测问题可能出在这里
config.set("mongo.input.uri", "mongodb://127.0.0.1:27017/local.test")
//统计结果输出到服务器上
config.set("mongo.output.uri", "mongodb://103.25.23.80:60013/test_hao.result")

val mongoRDD = sc.newAPIHadoopRDD(config, classOf[com.mongodb.hadoop.MongoInputFormat], classOf[Object], classOf[BSONObject])

// Input contains tuples of (ObjectId, BSONObject)
val countsRDD = mongoRDD.flatMap(arg => {
  var str = arg._2.get("type").toString
  str = str.toLowerCase().replaceAll("[.,!?\n]", " ")
  str.split(" ")
})
.map(word => (word, 1))
.reduceByKey((a, b) => a + b)

// Output contains tuples of (null, BSONObject) - ObjectId will be generated by Mongo driver if null
val saveRDD = countsRDD.map((tuple) => {
  var bson = new BasicBSONObject()
  bson.put("word", tuple._1)
  bson.put("count", tuple._2.toString() )
  (null, bson)
})

// Only MongoOutputFormat and config are relevant
saveRDD.saveAsNewAPIHadoopFile("file:///bogus", classOf[Any], classOf[Any], classOf[com.mongodb.hadoop.MongoOutputFormat[Any, Any]], config)

自问自答。原因可能是这样:

val mongoRDD = sc.newAPIHadoopRDD(config, classOf[com.mongodb.hadoop.MongoInputFormat], classOf[Object], classOf[BSONObject])

这行代码表示这是由driver读取数据库,然后将符合条件的数据载入RDD,由于之前设置了是将127.0.0.1作为输入,也就是从driver的mongodb上读取数据。由于driver就在master上,所以读取的数据也自然就是master上的数据了。


怎么掌握HA下的Spark集群工作原理?

默认情况下,Standalone的Spark集群是Master-Slaves架构的集群模式,由一台master来调度资源,这就和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题。如何解决这个单点故障的问题呢?Spark提供了两种方案:基于文件系统的单点恢复(Single-Node Recovery with Local File system)和基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)。其中ZooKeeper是生产环境下的最佳选择。

ZooKeeper提供了一个Leader Election机制,利用这个机制你可以在集群中开启多个master并使它们都注册到ZooKeeper实例,ZooKeeper会管理使其中只有一个是Active的,其他的都是Standby的,Active状态的master可以提供服务,standby状态的则不可以。ZooKeeper保存了集群的状态信息,该信息包括所有的Worker,Driver 和Application。当Active的Master出现故障时,ZooKeeper会从其他standby的master中选举出一台,然后该新选举出来的master会恢复挂掉了的master的状态信息,之后该Master就可以正常提供调度服务。整个恢复过程只需要1到2分钟。需要注意的是,在这1到2分钟内,只会影响新程序的提交,那些在master崩溃时已经运行在集群中的程序并不会受影响。

下面我们就实战如何配置ZooKeeper下的spark HA。

注:
DT_大数据梦工厂(IMF传奇行动绝密课程)有所有大数据实战资料
更多私密内容,请关注微信公众号:DT_Spark
如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580


spark集群搭建:https://zhuanlan.zhihu.com/p/20819281

http://www.cnblogs.com/shishanyuan/p/4699644.htmlhttp://www.cnblogs.com/kinglau/p/3794433.htmlhttp://www.cnblogs.com/tec-vegetables/p/3778358.htmlhttp://blog.csdn.net/laoyi_grace/article/details/6254743http://www.cnblogs.com/tina-smile/p/5045927.htmlhttp://edu.51cto.com/lesson/id-31786.html

没有hdfs,spark不能集群方式跑是吧?修改

可以读本地文件,但是只能spark本地模式运行计算这个从本地读的数据,是吧?修改

一个计算服务 HDFS只是输入的一种 本地文件、队列、Netcat 都可以作为输入 咋就不能跑了
另外 区分下YARN和HDFS YARN也不是必须依赖HDFS的

kafka,redis,mysql,都可以作为数据源。只要你能拉到数,管从哪拉呢?

可以跑。
配置你每个节点上都存一份,或者放在 NFS 里。
数据你不从 HDFS 取就行了。

可以集群方式运行。但是要求所有节点都能用同样的路径访问到数据文件。解决方案一是在每个节点上的同样路径放上同样的数据文件。解决方案二是采用网络共享目录和文件方式。比如linux的nfs方式共享。这两种方法都比较麻烦,因此,还是用hdfs吧。

spark-standalone模式可以不启动hdfs跑吗
时间: 2024-10-24 22:33:54

zhihu spark集群的相关文章

【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(11)

此时我们进入了Spark的shell世界,根据输出的提示信息,我们可以通过“http://SparkMaster:4040” 从Web的角度看一下SparkUI的情况,如下图所示: 当然,你也可以查看一些其它的信息,例如Environment: 同时,我们也可以看一下Executors: 至此,我们 的Spark集群搭建成功,Congratulations!

使用docker安装部署Spark集群来训练CNN(含Python实例)

使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器,每台有8个tesla-GPU,然而平时做实验都只使用了其中的一个GPU,实在暴遣天物! 于是想用spark来把这些GPU都利用起来.听闻d

Spark集群模式&Spark程序提交

Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos-通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用. Hadoop YARN-Hadoop2中的资源管理器. Tip1: 在集群不是特别大,并且没有mapReduce和Spark同时运行的需求的情况下,用Standalone模式效率最高. Tip2: Spark可以在应用间(通过集

ubuntu14.04中spark集群安装配置

一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所具有的优点:但不同于Hadoop MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,节省了磁盘IO耗时,性能比Hadoop更快. 所以,相对来说Hadoop更适合做批处理,而Spark更适合做需要反复迭代的机器学习.下面是我在ubuntu14.04中配置Spark

Spark3000门徒第六课精通Spark集群搭建总结

今晚听了王家林老师的第六课精通Spark集群搭建和测试,课后作业是:搭建自己的spark环境并成功运行pi,我的总结如下: 1 硬件环境: 至少8GB内存,推荐金士顿内存,虚拟机推荐Ubuntu kylin版本,可以安装各种办公软件包括搜狗输入法.上网方式:Nat,root权限登录,避免权限问题 2.软件环境: RedHat 6.4  spark 1.6.0   hadoop 2.6.0   scala 2.11.8 3 /etc/hosts ip-hostname对应关系 spark.even

Spark集群上运行jar程序,状态一直Accepted且不停止不报错

如果运行Spark集群时状态一直为Accepted且不停止不报错,比如像下面这样的情况: 15/06/14 11:33:33 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED) 15/06/14 11:33:34 INFO yarn.Client: Application report for application_1434263747091_0023 (state:

从0开始搭建基于Zookeeper的Spark集群

完全从0搭建Spark集群 备注:这个步骤,只适合用root来搭建,正式环境下应该要有权限类的东西后面另外再进行实验写教程 1.安装各个软件,设置环境变量(每种软件需自己单独下载) export JAVA_HOME=/usr/java/jdk1.8.0_71 export JAVA_BIN=/usr/java/jdk1.8.0_71/bin export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAV

Spark集群搭建与测试(DT大数据梦工厂)

Spark流行的两种文件存储方式:1.Hadoop的HDFS:2.H3云存储 tux yarn  +HDFS是未来3.5年的趋势 看你用的是bash,可能ubuntu里的bash不会自动source /etc/profile,所以你将那条export命令放在~/.bashrc里试试 计算的集群和数据存储的集群不在同一个集群上的话,性能不高不可接受,tux yarn解决了这个问题,它用JAVA写的 ubuntu 设置root登录见http://jingyan.baidu.com/article/1

Spark 集群部署

本文将接受 Spark 集群的部署方式,包括无 HA.Spark Standalone HA 和 基于 ZooKeeper 的 HA 三种. 环境:CentOS6.6 . JDK1.7.0_80 . 关闭防火墙 . 配置好 hosts 和 SSH 免密码.Spark1.5.0 一. 无 HA 方式 1. 主机名与角色的对应关系: node1.zhch    Master node2.zhch    Slave node3.zhch    Slave 2. 解压 Spark 部署包(可以从官网直接