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의 Large 인스턴스에 대한 사양은 다음과 같습니다.

대규모 인스턴스 7.5GB의 메모리, 4 개의 EC2 컴퓨팅 유닛 (각각 2 개의 EC2 컴퓨팅 유닛을 갖춘 2 개의 가상 코어), 850GB의 로컬 인스턴스 스토리지, 64 비트 플랫폼

내 질문은-osm2pgsql 및 Postgres의 튜닝 요구 사항을 결정하는 데 유용한 벤치 마크 리소스가 있습니까? 가져 오기 속도는 나에게 그다지 중요하지 않습니다. 4 ~ 5 일이 걸리더라도 프로세스가 안전하게 완료되는지 확인하고 싶습니다 ... Frederick Ramm의 " 렌더링 최적화 작년의 SOTM에서 체인 "(PDF) 문서를 작성했지만 다른 좋은 의견 / 자원이 있습니까?


EC2에서 그렇게하는 것이 비용이 많이 들지 않습니까?
Pablo

실행을 유지하는 것이 저렴하지는 않지만 임시 계획은이를 가동시키고 타일 세트를 생성 한 다음 종료하고 업데이트를 적용해야 할 때까지 해당 세트를 잠시 사용하는 것입니다. 여전히 대규모 서버를 구입하는 것보다 훨씬 저렴합니다.
colemanm

1
흥미 롭습니다! 이전 XP-Home-Box에서이 기능을 사용해 본 적이 없습니다. 정말 작동합니까? 지구 전체가 아닌 Geofabrik 또는 Cloudmade의 추출물을 변환하도록 작성 되었기 때문에 묻습니다. 행성이 잘못된 XML 인 것 같습니다. 이 문제를 어떻게 해결 했습니까?

@Carsten 댓글 양식으로 응답을 마이그레이션 할 때 실수로 @jvangeld의 댓글을 삭제했습니다. 안녕하세요 Carsten, GIS.se에 오신 것을 환영합니다. 개발자가 프로그램을 통해 사람들을 돕기 위해 여기에 오면 정말 좋습니다. 그러나 귀하의 답변은 아마도 @winwaed의 게시물에 대한 의견으로 더 좋을 것입니다. 다시 한번 여기에 오게되어 기쁩니다!
whuber

답변:


8

는 AS 문서 당신이 그렇게 램 256GB의 것보다 더 필요할 수 있습니다 말한다.

EC2에 대해서는 잘 모르지만 슬림 (-슬림) 모드를 시도하거나 Osmosis를 시도 할 수 있습니다 .

흥미로운 게시물이 있습니다 : http://weait.com/content/build-your-own-openstreetmap-server '슬림 모드를 사용해야합니다'.


또한 업데이트에 diff를 적용하려면 슬림 모드가 필요하다는 것도 알고 있습니다.
colemanm

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

업데이트 : 해결책을 찾았습니다. 요청 된 메모리를 6GB (매개 변수 -C 6000)로 줄인 후 프로세스가 작동합니다 (적어도 며칠 동안 일했지만 오늘은 끝날 것입니다).

7.5GB 메모리가있는 m1.large 인스턴스는 모든 노드를 메모리에 맞추기에 약간 작습니다 (현재 약 11GB 필요). osm2pgsql은 필요한 메모리에 700MB 미만의 추가 메모리를 필요로하는 것으로 보이므로 -C 7000의 경우 메모리 부족으로 실행되지만 -C 6000 (또는 -C 6500)에서는 작동합니다.

또한 최소 15GB RAM으로 더 높은 메모리 인스턴스를 사용하는 것이 좋습니다. 가져 오기가 훨씬 빨라집니다. 또는 두 배의 초대형 메모리 인스턴스도 두 배의 비용이 들지만 <5 시간 내에 비 슬림 모드에서 전체 행성 가져 오기를 수행 할 수 있어야합니다 (슬림 모드보다 약 3-4 배 빠름). 실제로 더 저렴합니다.


1

적은 CPU와 더 많은 RAM을 사용하여 EC2에서 작동하도록 osm2pgsql이 있습니다. 메모리 문제로 인해 인스턴스가 17 기가 램의 대용량 메모리로 업그레이드 될 때까지 실패했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.