我正在YARN中运行一个Spark应用程序,该应用程序有两个XMS / Xmx执行器为32 GB,spark.yarn.excutor.memoryOverhead为6 GB。
我看到应用程序的物理内存不断增加,并最终被节点管理器杀死:
2015-07-25 15:07:05,354 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Container [pid=10508,containerID=container_1437828324746_0002_01_000003] is running beyond physical memory limits. Current usage: 38.0 GB of 38 GB physical memory used; 39.5 GB of 152 GB virtual memory used. Killing container.
Dump of the process-tree for container_1437828324746_0002_01_000003 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 10508 9563 10508 10508 (bash) 0 0 9433088 314 /bin/bash -c /usr/java/default/bin/java -server -XX:OnOutOfMemoryError='kill %p' -Xms32768m -Xmx32768m -Dlog4j.configuration=log4j-executor.properties -XX:MetaspaceSize=512m -XX:+UseG1GC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails …Run Code Online (Sandbox Code Playgroud) 我们目前正在使用spring框架并使用以下XML: -
<bean id="A" class="com.foo.baar.A" >
<property name="attributes">
<set value-type="com.foo.bar.B">
<ref bean="X" />
<ref bean="Y" />
</set>
</property>
</bean>
<bean id="X" class="com.foo.bar.X" />
<bean id="Y" class="com.foo.bar.Y" />
Run Code Online (Sandbox Code Playgroud)
其中类X和类Y扩展了B类
A级的安装者如下: -
public void setAttributes(List<B> attributes) {
this.attributes = attributes;
}
Run Code Online (Sandbox Code Playgroud)
现在,我必须消除上面的XML,我正在以编程方式设置bean如下: -
List<Object> beanRefrences = new ArrayList<Object>();
for(String attribute : attributes) {
Object beanReference = new RuntimeBeanReference(attribute);
beanRefrences.add(beanReference);
}
mutablePropertyValues.add(propertyName, beanRefrences);
Run Code Online (Sandbox Code Playgroud)
上面的代码,我得到以下错误: -
nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.ArrayList' to required type 'java.util.List' for property …Run Code Online (Sandbox Code Playgroud) 我在远程主机(在目录中)有一些文件,我想在目录级别以原子方式执行rsync以在本地主机上提取文件(在分布式设置中).我可以想到的一种方法是,当我可以在本地主机上备份文件然后用新文件替换旧文件时,这是一个非常简单的情况,但就磁盘空间而言,这种方法效率不高.例如,文件大小为10GB,差异只有100 MB.
有没有办法在临时位置的本地主机上存储rsync diff,然后更新本地主机上的文件?