hadoop windows(工作正常)linux java堆空间
这是我的问题: 首先,我正在使用 hadoop 和单节点配置 我正在开发一个应用程序,我只制作了一个地图函数,在这个地图函数中我调用了大约 10 个函数, 该应用程序从 csv 文件读取并处理特定列,我已经制作了 jar 文件和所有内容,因此当我在 4 GB RAM 计算机上的 Windows(Windows 7)(使用 cygwin)上使用包含 4000 行的 csv 运行此应用程序时,该应用程序工作正常,但是当我在 2 GB RAM 计算机上的 linux-ubuntu 上运行它时,它处理一些行,但随后抛出“Java 堆空间”错误,或者有时线程被终止。
对于Linux: 我已经尝试更改 hadoop 导出 HEAP_SIZE 以及应用程序上的 Xmx 和 Xms 参数,它产生了一些差异,但不是太大,错误仍然发生......
你知道为什么会发生吗?是因为机器的 4GB 和 2GB RAM 不同吗?
Here is my problem:
First of all I'm working with hadoop and a single node configuration
I'm developing an application and I made just one map function, in this map function I call like 10 functions,
the application reads from a csv file and process a certain column, I already made the jar file and everything so when I run this app with a csv with 4000 rows on windows (windows 7) (using cygwin) on a 4 GB RAM machine, the application works fine, but when I run it on linux- ubuntu on a 2 GB RAM machine, it process some rows but then it throws a "Java heap space" error, or sometimes the thread is killed.
For the linux:
I already tried to change the hadoop export HEAP_SIZE and also the Xmx and Xms parameters on the app and it made some difference but not too much, the error stills happening...
Do you know why it s happening? its because the 4GB and 2GB of RAM difference between machines?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在使用映射器时遇到的一件事是,如果您调用/使用从
map
函数内启动自己线程的函数/对象,这可以轻松创建足够的线程来使用该 JVM 的所有堆空间。每个映射器都会调用一次
setup
和cleanup
函数。在我的情况下,我能够处理所有数据并将其放入ArrayList
中,然后在cleanup
函数中进行所需的额外处理。One thing I ran into with a mapper is if you call/use functions/objects that start their own threads from within the
map
function, this can easily create enough threads to use all the heap space for that JVM.Each mapper will have the
setup
andcleanup
function called once. In my situation I was able to process and put into anArrayList
all my data, then do the additional processing I needed in thecleanup
function.