优化OSM数据的osm2pgsql导入


27

我目前正在EC2上构建一个实例,在该实例上导入我们正在研究的某些项目的整个Planet.osm快照,其中包含了整个地球数据的价值。我已经启动了一个大型的Ubuntu x64实例,并在Postgres数据库的EBS卷上附加了大量单独的存储,并对其进行了修改以在其中容纳PGSQL数据。

现在服务器osm2pgsql在导入快照时遇到了麻烦。在尝试了几次不同的内存配置和其他操作之后,该过程在完成大部分操作后仍然输出“ Killed”。一旦它在“遍历未决方式”时被杀死,下一次,在稍微调整了细长缓存之后,它到达了“处理方式”,然后崩溃了。根据我的阅读,这通常是由于内存问题造成的。

这是我最近一次运行导入的尝试:

osm2pgsql -v -U osm -s -C 4096 -S default.style -d osm /data/osm/planet-latest.osm.bz2

以下是EC2上大型实例的规格:

大型实例7.5 GB内存,4个EC2计算单元(2个虚拟内核,每个虚拟内核各具有2个EC2计算单元),850 GB本地实例存储,64位平台

我的问题是-是否有一些好的基准测试资源来确定osm2pgsql和Postgres的调优要求?导入速度对我来说并不那么重要,我只是想确保过程安全完成,即使需要4到5天...我已经阅读了Frederick Ramm的“ 优化渲染”去年的SOTM中的“ ”(PDF)文件,但是还有其他好的意见/资源吗?


在EC2上这样做不是很昂贵吗?
Pablo

保持运行并不便宜,但临时计划是将其旋转,生成磁贴集然后将其关闭并使用该集一段时间,直到我们需要应用更新为止。它仍然比购买大型服务器便宜很多……
colemanm 2011年

1
有趣!我从未在旧的XP-Home-Box上尝试过此操作。真的有效吗?我问是因为它是为转换Geofabrik或Cloudmade的摘录而不是针对整个星球而编写的。这个星球似乎是无效的XML。您是如何解决这个问题的?

@Carsten在将您对评论表格的回复迁移时,我无意中删除了@jvangeld的评论。它是:嗨,Carsten,欢迎来到GIS.se。当开发人员来这里帮助人们开发程序时,这真是太棒了。但是您在这里的答案作为对@winwaed帖子的评论可能会更好。再一次,很高兴有您在这里!
ub

Answers:



4

由于内存限制,我什至没有尝试使用osm2pgsql来加载planet.osm的路由数据。相反,我使用osm2po:

http://osm2po.de/

大多数文档都是德语的,但是经过一些试验,我设法使它起作用。在专用的Core 2 Quad上花费几天的时间(但它仅使用一个线程)。



2

除了使用旧的预先生成的软件包以外,您是否还可以解决您的问题?我似乎在EC2实例中有非常相似的问题。我正在从http://download.bbbike.org/osm/使用PBF Planet

time ./osm2pgsql -S default.style --slim -d gis -C 7000 --hstore /mnt/planet/planet-latest.osm.pbf
osm2pgsql SVN version 0.70.5
...(creating db tables)
Reading in file: /mnt/planet/planet-latest.osm.pbf
Processing: Node(741920k) Way(0k) Relation(0)Killed

real    276m47.695s

更新:看来我找到了解决方案-将请求的内存减少到6 GB(参数-C 6000)后,该程序可以正常工作(至少已经工作了几天,希望今天能完成)。

似乎具有7.5GB内存的m1.large实例太少了,无法容纳所有节点的内存(如今应大约需要11GB)。osm2pgsql似乎需要不到700MB的额外内存,因此,使用-C 7000时,它正在运行的内存不足,但是使用-C 6000(或者也可能是-C 6500)时,它可以工作。

另外,我建议使用具有至少15GB RAM的更高内存实例,这应该使导入速度更快。甚至是双倍大的内存实例,这将花费一倍,但应该能够在不到5小时内以非苗条模式完成完整的星球导入(比苗条模式快约3-4倍)。因此它实际上会更便宜。


1

我让osm2pgsql使用更少的cpu和更多的RAM在EC2上工作。由于内存问题,它失败了,直到我将实例升级到具有17个内存的RAM的超大内存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.