我知道Apache Spark是围绕弹性数据结构设计的,但是在运行的系统中是预期的故障还是这通常表明存在问题?
当我开始了扩展系统以不同的配置,我看到ExecutorLostFailure
和No more replicas
(见下文).系统恢复并且程序结束.
我是否应该关注这一点,我们通常可以采取哪些措施来避免这种情况; 或者这是因为遗嘱执行人数增加了吗?
18/05/18 23:59:00 WARN TaskSetManager: Lost task 87.0 in stage 4044.0 (TID 391338, ip-10-0-0-68.eu-west-1.compute.internal, executor 11): ExecutorLostFailure (executor 11 exited caused by one of the running tasks) Reason: Container marked as failed: container_1526667532988_0010_01_000012 on host: ip-10-0-0-68.eu-west-1.compute.internal. Exit status: -100. Diagnostics: Container released on a *lost* node
18/05/18 23:59:00 WARN BlockManagerMasterEndpoint: No more replicas available for rdd_193_7 !
18/05/18 23:59:00 WARN BlockManagerMasterEndpoint: No more replicas available for rdd_582_50 !
18/05/18 23:59:00 …
Run Code Online (Sandbox Code Playgroud) https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/上的 Kubernetes 文档状态:
调度器保证,对于每种资源类型,被调度的Container的资源请求总和小于节点的容量。
Kubernetes 在计算容量时会考虑节点的当前状态吗?为了强调我的意思,这里有一个具体的例子:
假设我有一个具有 10Gi RAM 的节点,运行 10 个 Pod,每个 Pod 具有 500Mi 的资源请求,并且没有限制。假设它们正在“爆发”,并且每个 Pod 实际上都在使用 1Gi 的 RAM。在这种情况下,节点被充分利用(10 x 1Gi = 10Gi
),但资源请求仅为10 x 500Mi = 5Gi
。Kubernetes 会考虑在该节点上调度另一个 pod,因为该节点上只有 50% 的内存容量已经被占用requested
,还是会使用当前 100% 的内存正在被使用,并且该节点已满负荷运行的事实?
在CouchDB中使用基于cookie的身份验证时,域似乎设置为主机的域; 例如foo.com.如果我们希望从子域访问此会话; 例如,bar.foo.com会失败.
根据我管理cookie的有限经验,如果您将域设置为.foo.com(注意前导点.
),则可以在子域上访问这些cookie.
在设置cookie以包含前导点时,是否可以更改CouchDB使用的域?
我发现当Spark运行时,表的大小(通过Joins)增长,火花执行器最终会耗尽内存并导致整个系统崩溃.即使我尝试将临时结果写入Hive表(在HDFS上),系统仍然没有释放大量内存,并且我的整个系统在大约130个连接后崩溃.
但是,通过实验,我意识到如果我将问题分解成更小的部分,将临时结果写入hive表,并停止/启动Spark会话(和spark上下文),则系统的资源被释放.我能够使用这种方法加入超过1,000列.
但是我找不到任何文档来理解这是否被认为是一种好的做法(我知道你不应该同时获得多个会话).大多数系统在开始时获取会话并在最后关闭它.我也可以将应用程序分解为较小的应用程序,并使用像Oozie这样的驱动程序在Yarn上安排这些较小的应用程序.但是这种方法会在每个阶段启动和停止JVM,这似乎有点重量级.
所以我的问题是:在单个spark应用程序运行期间不断启动/停止spark会话以释放系统资源是不好的做法吗?
但是,您能详细说明单个JVM上单个SparkContext的含义吗?我能够调用sparkSession.sparkContext().stop()
,同时也stop
对SparkSession
.然后我创建了一个新的SparkSession
并使用了新的sparkContext
.没有抛出任何错误.
我也能在JavaSparkPi
没有任何问题的情况下使用它.
我已经测试了这个yarn-client
并local
安装了火花.
停止火花环境究竟做了什么,为什么一旦你停止了它就不能创建一个新的?