21
Kako napraviti Google od Kako napraviti Google od zgrade s računalima? zgrade s računalima? Dobrica Pavlinušić Dobrica Pavlinušić http://www.rot13.org/~dpavlin/ http://www.rot13.org/~dpavlin/ HULK, Knjižnica Filozofskog fakulteta u Zagrebu HULK, Knjižnica Filozofskog fakulteta u Zagrebu DORS/CLUC, Zagreb, 7. svibnja 2010. DORS/CLUC, Zagreb, 7. svibnja 2010.

Kako napraviti Google od zgrade sa računalima?

Embed Size (px)

DESCRIPTION

Ako radite u većoj organizaciji, ona vjerojatno ima nekoliko desetaka računala koja nisu potpuno iskorištena. U mom primjeru, to su bila računala koja su obavljala funkciju web kioska.Što možemo učiniti s njima? Pretpostavimo da možemo podijeliti podatke u dijelove (shards), staviti svaki dio u memoriju jednog računala i pokrenuti komadić koda preko njih... Zvuči pomalo kao Google map/reduce , ali kako to implementirati?Za taj zadatak implementirao sam Sack - http://blog.rot13.org/sack/ koji podatke iz različitih izbora sprema u memoriju i izvršava paralelne upite preko njih. Pogledati ćemo kako ga napuniti podacima i iskoristiti za obrade koje su prevelike ili prespore za jedno računalo.Upravljanje računalima koja su dio našeg clustera je poseban izazov. Za rješenje tog problema odlučio sam implementirati PXElator - http://blog.rot13.org/pxelator/ koji nam omogućava jednostavno podizanje računala preko mreže, nadzor i administraciju.Temu ćemo zaokružiti još jednim zanimljivim projektom koji nam omogućava distribuirani fork: Gearman - http://gearman.org/. Tako naše obrade podataka možemo podjeliti na manje dijelove pisane u različitim jezicima (perl, php, python, C, shell, Java) i sve to skupa integrirati s relacijskom bazom podataka u pretraživač web stranica Narada - https://launchpad.net/naradaKorištenjem ovih dijelova dobili smo distribuiranu memoriju, distribuirano pokretanje obrada podataka i jednostavnu administraciju: naš vlastiti Google :-)

Citation preview

Page 1: Kako napraviti Google od zgrade sa računalima?

Kako napraviti Google od Kako napraviti Google od zgrade s računalima?zgrade s računalima?

Dobrica PavlinušićDobrica Pavlinušićhttp://www.rot13.org/~dpavlin/http://www.rot13.org/~dpavlin/

HULK, Knjižnica Filozofskog fakulteta u ZagrebuHULK, Knjižnica Filozofskog fakulteta u ZagrebuDORS/CLUC, Zagreb, 7. svibnja 2010.DORS/CLUC, Zagreb, 7. svibnja 2010.

Page 2: Kako napraviti Google od zgrade sa računalima?

Zašto?Zašto?

Imate neka računala koja nisu sasvim iskorištena,

a troše struju

Uvijek ste htjeli imati svoj cluster!

Page 3: Kako napraviti Google od zgrade sa računalima?

SadržajSadržaj

● Računala– Web kiosci za pretraživanje kataloga

● Network boot i monitoring– PXElator

● Distribute data– Sack

● Distribute computing– Gearman, Narada

● Dokumentacija– Sysadmin Cookbook, bak-git

Page 4: Kako napraviti Google od zgrade sa računalima?

Nađite računalaNađite računala

● Web kiosci za pretraživanje kataloga knjižnice

● Dell Optiplex755– 2Gb RAM – Core2 Duo E7200 @

2.53GHz– 80Gb Hitachi disk

● 5 katova+prizemlje– 24 Gb RAM– 30.36 Ghz CPU– 960 Gb disk

Page 5: Kako napraviti Google od zgrade sa računalima?

Pretraživanje katalogaPretraživanje kataloga

● Koha – knjižnični software s web sučeljem● Webconverger

– Debian Live distribucija– Firefox, skrivanje URL-a– Boot s mreže bez korištenja diska

● Svaki ormar ima 100Mb/s switch (sigh!) zbog manjska mrežnih utičnica

● http://webconverger.com/

Page 6: Kako napraviti Google od zgrade sa računalima?

PXElatorPXElator

● Replace system administration with perl script

● Protocol soup:– DHCP, TFTP, HTTP, DNS, syslog, WOL,

AMT, DRAC5● Store audit data in MongoDB● Configuration in files/perl code● Provision netboot, KVM, nfsroot● Additional toos: nmap, wireshark● http://blog.rot13.org/pxelator/

Page 7: Kako napraviti Google od zgrade sa računalima?

PXElator demoPXElator demo

● Manage (single/virtual) network● Passivly monitor rest of traffic● Multi-color screen+xterm debug

Page 8: Kako napraviti Google od zgrade sa računalima?

SackSack

● Distribuirani memorija sa ad-hoc upitima u obliku perl funkcija

● Svi ostali pristupi su prespori ili prekomplicirani za korištenje– CouchDB– MongoDB– HyperTable

● Shard-nothing pristup– Cluster, multi-core

● http://blog.rot13.org/sack/

Page 9: Kako napraviti Google od zgrade sa računalima?

Kako napuniti vreću?Kako napuniti vreću?

● pure-perl client● configure (hosts+ssh config/keys)● deployment over ssh/cpio on startup

– ssh compression for network speedup● source data for shards from CouchDB,

MongoDB, WebPAC, text files...● Edit perl ad-hoc query in vi● Web interface

– query execution and overview– with gnuplot graphs for time data

Page 10: Kako napraviti Google od zgrade sa računalima?

Cijeli sustavCijeli sustav

● PXElator– boot nodes– audit data

● Sack– shard data– distribute– ad-hoc query

● Fun and profit!

Page 11: Kako napraviti Google od zgrade sa računalima?

GearmanGearman

“The way I like to think of Gearman is as a massively distributed, massively fault tolerant fork mechanism.”

- Joe Stump, Digg

Page 12: Kako napraviti Google od zgrade sa računalima?

Gearman dijeloviGearman dijelovi

● fault-tolerant● perl, php, C, Drizzle, MySQL, PostgreSQL, ...● Command-line tool● Pluggable protocols: HTTP

● http://sysadmin-cookbook.rot13.org/#gearman

Page 13: Kako napraviti Google od zgrade sa računalima?
Page 14: Kako napraviti Google od zgrade sa računalima?
Page 15: Kako napraviti Google od zgrade sa računalima?
Page 16: Kako napraviti Google od zgrade sa računalima?

NaradaNarada

Page 17: Kako napraviti Google od zgrade sa računalima?

Virtualizacija i clusteri su krasne stvari, sve dok ne počnete pisati

dokumentaciju!

Standard Operating ProcedureConfiguration Management

DokumentacijaDokumentacija

Page 18: Kako napraviti Google od zgrade sa računalima?

Sysadmin CookbookSysadmin Cookbook

● Dokumentation for me, two years later● Fast and easy deployment● Convention over documentation

– number.name– magic names

● sh, append, replace– symlinks to keep original locations– commit messages for documentation

● http://sysadmin-cookbook.rot13.org/

Page 19: Kako napraviti Google od zgrade sa računalima?

bak-git centralni SCMbak-git centralni SCM

● System configuration management● Centralni git repozitorij

– Poznate git komande (s/git/bak/)● Jednostavan deployment

– ssh, rsync, netcat, shell (bak)● Audit log svih promjena (security!)● Svako računalo ima svoj direktorij

– Uspoređivanje konfiguracija● Web sučelje: gitweb● http://blog.rot13.org/bak-git/

Page 20: Kako napraviti Google od zgrade sa računalima?

O čemu smo pričali?O čemu smo pričali?

● Nađite neiskorištenja računala● Pojednostavite upravljanje

– PXElator, netboot● Podjelite podatke po njima

– Sack, ad-hoc query● Paralelizirajte obrade podataka

– Gearman● Dokumentirajte učinjeno

– Ne postoji bez dokumentacije

Page 21: Kako napraviti Google od zgrade sa računalima?

Pitanja?Pitanja?4242