Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BIGTABLE
Internet está cambiando la manera de entender la informática, y Google es su mayor impulsor. En este
número veremos qué se cuece dentro de los gigantes de la informática. POR JOSÉ MARÍA RUÍZ
S
iempre se han escuchado rumores creados y usados. Las grandes empresas (sí, Amazon EC2 y Amazon S3 son real-
sobre instalaciones informáticas de Internet ya ofertan servicios que serían mente baratas). Ver referencia [1].
descomunales de empresas como inimaginables sin estos sistemas. El tér- No es sorprendente, por tanto, que los
Google, Yahoo!, Hotmail, Amazon o mino que se ha acuñado, Cloud Compu- mejores clientes de los sistemas Cloud de
Microsoft. Se hablaba de sistemas infor- ting (computación en nube), está empe- Microsoft, Google o Amazon sean gran-
máticos (muchos de ellos basados en zando a sonar con gran fuerza como el des farmacéuticas y bancos.
Linux y en Software Libre) que podían paradigma de desarrollo y funciona-
rondar perfectamente los 50.000 servido- miento con el que conviviremos durante Cambio de Paradigma
res. Lo increíble es que en casos como el la próxima década. Google, Amazon, Yahoo, Microsoft, Face-
de Google el número probablemente se Por ejemplo, existe un proyecto libre book, Hotmail, todas estas empresas ofre-
acerque a ¡¡ 500.000 servidores!! llamado Hadoop que trata de implemen- cen servicios a través de Internet y nece-
¿Para qué tantos servidores? Y lo más tar procesos distribuidos empleando sitan hacerlo a una cantidad enorme de
importante ¿cómo demonios consiguen ordenadores comunes. Está diseñado clientes. Los sistemas tradicionales de
sacar partido a semejantes infraestructu- usando los conceptos de los sistemas servidores se quedan cortos, y de hecho
ras? MapReduce y GFS de Google. no son recomendables.
El santo grial de la arquitectura de siste- Como ahora es posible ejecutar Hadoop El primer problema es la fiabilidad.
mas informáticos ha sido siempre conse- sobre el sistema EC2 (Elastic Compute Hasta ahora hemos considerado a los
guir que al introducir nuevos recursos (dis- Cloud) de Amazon empleando el sistema ordenadores como máquinas perfectas en
cos, memoria, procesadores, o servidores de almacenamiento S3 (Simple Storage las que se ejecutaba software imperfecto.
completos) aumente proporcionalmente la Service), también de Amazon, el perió- Pero a día de hoy la fiabilidad ha tomado
potencia del sistema. No sólo eso, sino dico New York Times ha contratado 100 otra dimensión. Ahora mismo las empre-
que además el sistema sea tolerante a instancias de Amazon EC2 en las que ha sas de Internet suelen necesitar miles de
fallos en cascada, pudiendo recuperarse de instalado Hadoop y ha creado un sistema equipos trabajando al unísono, y con tan-
forma autónoma de un desastre. que le permite procesar 4 Terabytes de tos, el fallo de uno de ellos en cualquier
Y lo interesante es que al parecer esta- imágenes TIFF almacenadas en Amazon momento está prácticamente garanti-
mos viviendo una época en la que estos S3 y generar 1 millón de PDFs a partir de zado. Da igual lo fiables que sean, siem-
sistemas al fin están comenzando a ser ellas en 24 horas. ¡Y por sólo 240 dólares! pre fallará alguno.
rece cuando ejecutamos el siguiente 23:59:59’; yecto libre bastante moderno, pensemos
comando: delete: row=U que Hadoop está aún en la versión
‘www.linux-magazine.es’ family=U ¡0.16!
hypertable> select * fromU 0 ts=2146031999000000001 Por desgracia, para los programadores
Paginas where ROW =U hypertable> select * fromU Python como yo, Hypertable aún no
“www.linux-magazine.es”U Paginas where ROW =U posee enlaces para lenguajes diferentes a
DISPLAY_TIMESTAMPS; “www.linux-magazine.es”; C++, aunque es un proyecto en estudio
2008-05-01 23:59:59.000000000U hypertable> y puede que en unos meses sea posible
www.linux-magazine.org U emplear Python o Perl.
refer-url www.google.com Si nos fijamos de nuevo en la Figura 2
veremos que aparecen varias filas para el HBase
¿Pero no habíamos borrado ya esa fila de mismo ROW, y que en cada una de ellas El proyecto HBase es parte de Hadoop y
la tabla? No, habíamos borrado toda refe- hay alguna columna cambiada. Hyperta- busca implementar Bigtable en Java. A
rencia de la fila en la tabla, pero las filas ble sólo almacena las columnas con día de hoy es usable. Implementa las
anteriores, con TIMESTAMP anteriores datos, mientras que el resto se calcula en mismas operaciones que Hypertable, y
siguen en la tabla. Si queremos eliminar- base al último valor asignado. Así, el es programable desde Jython. Veamos
las habrá que especificar el TIMESTAMP contenido de la última columna en la un ejemplo (ver Listado 1).
que tienen: Figura 2 sería: (“linux-magazine”, Este ejemplo es realmente simple: cre-
“2008-03-18 12:07”, “José Ruiz”, “jose- amos una tabla, y una vez creada intro-
hypertable> delete * fromU ruiz”, “jose.ruiz@gmail.com”) ducimos en ella una fila para después
Paginas where ROW =U Al contrario que en SQL, por el recuperarla y borrar la tabla. El proceso
“www.linux-magazine.es”U momento hay un montón de limitacio- no es complicado (uno de los objetivos
TIMESTAMP ’2008-05-01U nes en HQL. Al fin y al cabo es un pro- de todos estos sistemas es la simplici-
dad).
Listado 1: Bigtable.py Imaginemos por un momento todo lo
que ocurre en este proceso. Creamos una
01 import java.lang 19
tabla sobre Hbase que trabaja sobre
02 admin.deleteTable(tablename_te
HDFS, y por tanto estará almacenando
03 from org.apache.hadoop.hbase xt)
los datos de forma distribuida, guardando
import HBaseConfiguration, 20 admin.createTable(desc)
varias copias en distintos Chunkservers.
HBaseAdmin, HTableDescriptor, 21
Y todo ello con unas poca líneas de
HColumnDescriptor, HTable, 22 tablas = admin.listTables()
código.
HConstants 23 tabla = HTable(conf,
04 nombre_tabla_text)
Conclusión
05 from org.apache.hadoop.io 24
El mundo de la computación en nube
import Text 25 # Insertamos una fila
avanza a pasos agigantados, pero el soft-
06 26 fila = Text(“fila_x”)
ware libre le sigue los pasos apoyado por
07 conf = HBaseConfiguration() 27 lock_id =
empresas como Yahoo! Hadoop ha conse-
08 table.startUpdate(fila)
guido una gran relevancia estando aún en
09 nombre_tabla = ”test” 28 table.put(lock_id,
su versión 0.16 y ha demostrado ser
10 nombre_tabla_text = Text(“contenido:”), ”¡Hola
capaz de rendir en sistemas con miles de
Text(nombre_tabla) mundo cruel!”)
servidores.
11 29 table.commit(lock_id)
El software libre no puede quedarse
12 desc = 30
atrás en esta batalla, porque es ahora
HTableDescriptor(nombre_tabla_ 31 # Nos traemos los datos recien
cuando se está definiendo el futuro de la
text) introducidos
informática. Si con Linux fue posible
13 32 data = table.get(row,
soñar con conquistar el escritorio, espere-
desc.addFamily(HColumnDescript Text(“content:”))
mos que proyectos como Hadoop nos
or(“contenido:”)) 33 data_str =
permitan soñar con no acabar en manos
14 java.lang.String(data, ”UTF8”)
de dos o tres empresas de cuya tecnología
desc.addFamily(HColumnDescript 34 print ”The fetched row
no podremos disponer. ■
or(“enlace:”)) contains the value ’%s’” %
15 admin = HBaseAdmin(conf) (data_str)
16 35 RECURSOS
17 # Borramos la tabla si ya 36 # Borramos la tabla con la que [1] http://open.nytimes.com/2007/11/01/
existe trabajamos self-service-prorated-super-computin
18 if 37 g-fun/
admin.tableExists(tablename_te admin.deleteTable(desc.getName [2] http://hadoop.apache.org/
xt): ()) [3] http://www.hypertable.org