Está en la página 1de 19

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERIA
ESCUELA DE CIENCIAS Y SISTEMAS
MANEJO E IMPLEMENTACION DE ARCHIVOS
Ing. Álvaro Díaz

Sistema de archivos y bases de datos de


Facebook

Integrantes:
Caren Elizabeth García Pérez 201504119
Eddy Javier Sirin Hernández 201503699
Henry Adolfo Gálvez 201612499

1
INTRODUCCION

Facebook hoy en día es de las plataformas más importantes y


grandes que se han desarrollado, tiene un alcance mundial y por
lo tanto su manera de funcionar debe ser lo más optimizada
posible y eso es lo que los ingenieros de Facebook tratan de
realizar cada día ya que a medida que pasa el tiempo la red social
crece a pasos agigantados.
La red social más grande del mundo cada vez tiene más retos, y
acá se muestra cómo es que se esta dando solución a los temas
que respectan a base de datos y al sistema de archivos que utiliza
Facebook para su funcionamiento al día de hoy.

2
OBJETIVOS
 Dar a conocer el origen y la historia de Facebook hasta donde lo conocemos hoy por hoy.

 Ver los datos con los cuales Facebook debe lidiar día a día, y como es posible que se
mantenga disponible para todos aun con la inmensa cantidad de data que entra en sus
servidores a cada instante.

 Conocer más de las tecnologías que se utilizan para el funcionamiento de la plataforma


(Sistema de base de datos y sistema de archivos).

3
¿Qué es Facebook?
Es una compañía estadounidense que ofrece servicios de redes
sociales y medios sociales en línea con sede en Menlo Park, California. Su sitio
web fue lanzado el 4 de febrero de 2004 por Mark Zuckerberg, junto con otros
estudiantes de la Universidad de Harvard y compañeros de
habitación, Eduardo Saverin, Andrew McCollum, Dustin Moskovitz y Chris
Hughes. Está disponible en español desde febrero de 2008.8 Facebook es una
plataforma que funciona sobre una infraestructura de computación basada
principal y totalmente en sistemas GNU/Linux, usando el conjunto de
tecnologías LAMP(es el acrónimo usado para describir un sistema de
infraestructura de internet que utiliza las siguientes herramientas Linux,
Apache, MySQL, PHP), entre otras.
Inicialmente, los fundadores limitaron la membresía del sitio web a los
estudiantes de Harvard, pero posteriormente lo ampliaron a instituciones de
educación superior en el área de Boston, en las escuelas de la Ivy League y en
la Universidad de Stanford. Asimismo, gradualmente agregó soporte para
estudiantes en varias otras universidades, y finalmente a estudiantes de
secundaria. Desde 2006, a cualquier persona que diga tener al menos 13 años
se le ha permitido convertirse en usuario registrado de Facebook, aunque
existen variaciones en este requisito según las leyes locales. El nombre
proviene de los directorios de fotos personales que a menudo se entregan a
estudiantes universitarios estadounidenses. En febrero de 2012 salió a bolsa
mediante una Oferta pública de venta (OPV), alcanzando una valoración de
104 mil millones de dólares, la más alta para una empresa que empieza a
cotizar. Comenzó a vender acciones al público tres meses después, pero la
mayoría de sus ingresos los obtiene de los anuncios que aparecen en pantalla.
Facebook cuenta con más de 2200 millones de usuarios activos mensuales a
fecha de marzo de 2018. Su popularidad ha supuesto a una ingente cobertura
mediática de la compañía, como un escrutinio significativo sobre la privacidad
y los efectos psicológicos que tiene en los usuarios. En los últimos años, la
compañía se ha enfrentado con una intensa presión sobre la cantidad de fake

4
news, la incitación al odio y las representaciones de violencia que prevalecen
en sus servicios, aspectos que está intentando contrarrestar.
El 9 de abril de 2012 Facebook adquirió Instagram por 1000 millones
de dólares, y en febrero de 2014 compró el servicio de mensajería
móvil WhatsApp por 16 000 millones de dólares. El 1 de mayo de 2018,
Facebook anunció sus planes para lanzar un nuevo servicio de citas. Según
Mark Zuckerberg: «Hay 200 millones de personas en Facebook identificados
como solteros, así que claramente hay algo que hacer aquí». A raíz del
escándalo de minería de datos de Cambridge Analytica, el servicio contará con
funciones de privacidad, y tus amigos no podrán ver tu perfil de citas.

¿Cuanta información maneja Facebook?


Cada mes, 10 millones de nuevos usuarios se suman a la red social más grande
del mundo. Además, el pasado año Facebook superó por primera vez a Google
en el tiempo total invertido por los internautas en la red.
Una de cada 13 habitantes del planeta Tierra tiene cuenta en Facebook.
Cada 20 minutos, 1.000.000 links son compartidos en Facebook.
Cada 20 minutos, 1.484.000 invitaciones a eventos son compartidas en
Facebook.

Cada 20 minutos, 1.323.000 fotos son etiquetadas en Facebook.

Cada 20 minutos, 1.851.000 mensajes de estado son publicados en Facebook.

Cada 20 minutos, se aceptan 1.972 millones de solicitudes de amistad


Facebook.

Cada 20 minutos, 2.716.000 fotos son subidas a Facebook.

Cada 20 minutos, se envían 2.716.00 mensajes a través de Facebook.


5
Cada 20 minutos se publican 10,2 millones de comentarios en Facebook.

Hay más de 900.000 objetos con los que el usuario puede interactuar en
Facebook (páginas, grupos y eventos).

Facebook cuenta con más de 650 millones de usuarios activos en todo el


mundo.

Respuestas de la base de datos de


Facebook
 Tiempo de respuesta para lectura: 4ms.
 Tiempo de respuesta para escritura: 5ms.
 Lineas leidas por segundo (pico): 450 millones.
 Bytes en la red por segundo (pico): 38Gb
 Querys por segundo (pico): 13 millones
 Registros que cambian por segundo (pico): 3.5 millones.

¿Que DBMS utiliza Facebook?


Facebook utiliza MySql en el front end debido a su velocidad y confiabilidad. se usa
principalmente como un almacén de clave-valor, ya que los datos se distribuyen
aleatoriamente entre un gran conjunto de instancias lógicas. Estas instancias lógicas se
extienden a lo largo de los nodos físicos y el equilibrio de carga se realiza a nivel de nodo
físico. En cuanto a las personalizaciones, Facebook ha desarrollado un esquema de partición
personalizado en el que se asigna una identificación global a todos los datos. También
tienen un esquema de archivo personalizado que se basa en la frecuencia con la que los
datos son recientes y por usuario. La mayoría de los datos se distribuyen al azar.

Facebook además también utiliza cassandra debido a su carácter NoSQL que garantiza
mejores tiempos de respuesta frente a una BD SQL y a la capacidad de crecimiento masivo,
este es utilizado por ejemplo en las búsquedas en la bandeja de entrada con una
implementación de 200 nodos.

6
¿Qué otros sistemas de almacenamiento
son utilizados por Facebook?
Memcached:

Es un sistema de almacenamiento en caché de memoria que se utiliza para acelerar los sitios
web dinámicos basados en bases de datos (como Facebook) mediante el almacenamiento
en caché de datos y objetos en la RAM para reducir el tiempo de lectura.

Memcache es la forma principal de almacenamiento en caché de Facebook y ayuda a aliviar


la carga de la base de datos.

Tener un sistema de almacenamiento en caché permite que Facebook sea tan rápido como
lo es para recuperar sus datos. Si no tiene que ir a la base de datos, solo obtendrá sus datos
de la memoria caché según su ID de usuario.

Scribe:
Es un servidor para agregar datos de registro transmitidos en tiempo real desde una gran
cantidad de servidores . Fue diseñado para ser escalable , extensible sin modificación del
lado del cliente y robusto al fallo de la red o de cualquier máquina específica.

Scribe fue desarrollado en Facebook y lanzado en 2008 como código abierto .


Los servidores de Scribe se organizan en un gráfico dirigido, y cada servidor solo conoce el
siguiente servidor del gráfico. Esta topología de red permite agregar capas adicionales
de fan-in a medida que crece el sistema y agrupar los mensajes antes de enviarlos entre
centros de datos, sin tener ningún código que necesite explícitamente entender la
topología del centro de datos, solo una configuración simple.
Scribe fue diseñado para considerar la confiabilidad, pero no para requerir protocolos
pesados y un uso expansivo del disco. Escriba los datos de spools en el disco en cualquier
nodo para manejar la falla intermitente del nodo de conectividad, pero no sincroniza un
archivo de registro para cada mensaje. Esto crea la posibilidad de una pequeña cantidad
de pérdida de datos en caso de un fallo o falla catastrófica del hardware. Sin embargo,
este grado de fiabilidad suele ser adecuado para la mayoría de los de Facebook.

7
Haystack:
La aplicación de fotos es una de las características más populares de Facebook. Hasta la
fecha, los usuarios han subido más de 15 mil millones de fotos, lo que convierte a Facebook
en el mayor sitio web para compartir fotos. Para cada foto cargada, Facebook genera y
almacena cuatro imágenes de diferentes tamaños, lo que se traduce en un total de 60 mil
millones de imágenes y 1.5 PB de almacenamiento. La tasa de crecimiento actual es de 220
millones de fotos nuevas por semana, lo que se traduce en 25 TB de almacenamiento
adicional consumido semanalmente. En el pico hay 550.000 imágenes servidas por
segundo. Estos números representan un desafío importante para la infraestructura de
almacenamiento de fotos de Facebook.
Haystack presenta un almacén de objetos genérico basado en HTTP que contiene agujas
que se asignan a objetos opacos almacenados. Almacenar fotos como agujas en el pajar
elimina la sobrecarga de metadatos al agregar cientos de miles de imágenes en un solo
archivo de tienda de pajar. Esto mantiene la sobrecarga de metadatos muy pequeña y nos
permite almacenar la ubicación de cada aguja en el archivo de la tienda en un índice en
memoria. Esto permite la recuperación de los datos de una imagen en un número mínimo
de operaciones de E / S, eliminando toda la sobrecarga de metadatos innecesarios.

¿Qué tipo de servidores utiliza


Facebook?
Facebook en sus servidores utiliza HipHop for php y apache HTTp server
HipHop for PHP:
Es un transcompilador PHP descontinuado creado por Facebook. Mediante la utilización de
HPHPc,el código PHP es traducido a código C++, y compilado como ejecutable, opuesto a la
usual ejecución de PHP, donde el código es transformado en opcode e interpretado. HPHPc
consiste mayormente en C++, C y código fuente PHP, el cual es distribuido bajo la Licencia
PHP.
Las motivaciones originales detrás de HipHop fue salvar recursos en los servidores de
Facebook, dada la extensa cantidad de código que mueve a facebook.com. A medida que el
desarrollo de HipHop progresaba, se determinó que este podía incrementar
sustancialmente el rendimiento de las aplicaciones PHP en general; se ha observado un
rendimiento en la generación de páginas web hasta seis veces superior comparado con
el Motor Zend de PHP.12345 Uno de los objetivos de HPHPc fue proveer alta compatibilidad
para el motor Zend, donde la mayoría de los programas basados en PHP-Zend puedan
ejecutarse sin modificaciones.3 HPHPc was originally open sourced in early 2010.

8
Como agregados a HPHPc, los ingenieros de Facebook también crearon un "modo
desarrollador" de HipHop (una versión interpretada del motor de ejecución de PHP,
conocido como HPHPi), y el Depurador HipHop (conocido como HPHPd). Estos agregados
permitían a los desarrolladores correr código PHP a través de la misma lógica provista por
HPHPc mientras permitía depurar el código PHP interactivamente definiendo inspectores
de código, interruptores de ejecución, etc. La ejecución de código a través de HPHPi
muestra menor rendimiento comparado con HPHPc, pero beneficia a los desarrolladores de
tener ambos motores en funcionamiento, uno para desarrollo y el otro en producción.
HPHPi y HPHPd se publicaron como código abierto en 2010.
HPHPc cumplió cabalmente sus metas, especialmente en conjunto con Facebook
permitiendo que facebook.com corriera mucho más rápido y utilizando menos recursos. Sin
embargo, en 2013, Facebook dejó HPHPc obsoleto en favor de su nuevo producto, HipHop
Virtual Machine (HHVM), el cual es un compilador basado en just-in-time (JIT) de PHP,
también desarrollado por Facebook.6 Hay varias razones para esto; una de ellas es que la
curvatura de mejoras de rendimiento de HPHPc fue decayendo. Además, HPHPc no tenía
soporte completo para PHP, incluyendo los constructores create_function() y eval(), e
implicaba gran consumo de tiempo y recursos requeridos para generar binarios compilados
de más de 1 GB, los cuales debían ser distribuidos entre los servidores de Facebook en corto
tiempo. Adicionalmente, mantener código HPHPc y HPHPi en paralelo (necesario para
mantener la consistencia entre los entornos de desarrollo y producción) se volvió
engorroso. Finalmente, HPHPc no fue un reemplazo directo del motor Zend, requiriendo
que los consumidores cambiasen los procesos de desarrollo y despliegue.
Apache:
Es un popular servidor web multiplataforma de fuente abierta que, según los números, es
el servidor web más popular que existe. Es activamente mantenido por Apache Software
Foundation.
Algunas empresas de alto perfil que utilizan Apache incluyen a Cisco, IBM, Salesforce,
General Electric, Adobe, VMware, Xerox, LinkedIn, Facebook, Hewlett-Packard, AT & T,
Siemens, eBay y muchas más. (fuente).
Además de su popularidad, también es uno de los servidores web más antiguos, con su
primer lanzamiento en 1995. Muchos alojamientos de cPanel utilizan Apache hoy. Al igual
que otros servidores web, Apache potencia los aspectos detrás de escena de servir los
archivos de su sitio web a los visitantes.

Debido a que Apache no funciona tan bien en algunos puntos de referencia, especialmente
para sitios web estáticos o sitios web con alto tráfico, Kinsta utiliza el servidor web NGINX en
lugar de Apache. Aunque NGINX no ha existido durante tanto tiempo como Apache, ha
crecido rápidamente en popularidad y cuota de mercado desde su lanzamiento en 2004.

9
¿Qué tecnología utiliza Facebook para
almacenar su Big Data?
Se ha discutido públicamente que Facebook usa Hadoop para su almacén de
big data y Hive para consultas paralelas de reducción de mapa contra esa
tienda.

Sistema de archivos de Facebook


El Sistema de archivos distribuidos de Hadoop (HDFS) constituye la base de muchos
sistemas de almacenamiento a gran escala en Facebook y en todo el mundo. Nuestros
clústeres de Hadoop incluyen el clúster HDFS más grande que conocemos, con más de
100 PB de espacio físico en disco en un solo sistema de archivos HDFS. La optimización
de HDFS es crucial para garantizar que nuestros sistemas se mantengan eficientes y
confiables para los usuarios y las aplicaciones en Facebook.

Cómo funciona el Namenode HDFS

Los clientes HDFS realizan operaciones de metadatos del sistema de archivos a


través de un único servidor conocido como Namenode, y envían y recuperan datos
del sistema de archivos mediante la comunicación con un grupo de Datanodes. Los
datos se replican en múltiples códigos de datos, por lo que la pérdida de un solo
Datanode nunca debe ser fatal para el clúster ni causar la pérdida de datos.

Pero la pérdida del Namenode no puede ser tolerada. Todas las operaciones de
metadatos pasan por Namenode, por lo que si el Namenode no está disponible,
ningún cliente puede leer o escribir en HDFS. Los clientes aún pueden leer bloques
de datos individuales de Datanodes si el Namenode está inactivo, pero para todos
los efectos, si el Namenode no está disponible, HDFS está inactivo, y los usuarios
y aplicaciones que dependen de HDFS no podrán funcionar correctamente.

El HDFS Namenode es un punto único de falla (SPOF)

10
En Facebook, queríamos saber el alcance del problema "Namenode-as-SPOF" y
construir un sistema que nos permitiera superar las limitaciones de Namenode como
SPOF. Mantén la imagen de arriba en mente, volveremos a ella. Pero antes de
hacerlo, hablemos un poco sobre el uso de HDFS en Facebook, para darle más
contexto sobre en qué hemos estado trabajando y a qué problemas nos hemos
enfrentado.

El caso de uso del Data Warehouse.

En Facebook, una de las implementaciones más grandes de HDFS está en nuestro


almacén de datos. El caso de uso del almacén de datos es una carga de trabajo
tradicional de HadoopMapReduce: un pequeño número de clústeres muy grandes
que ejecutan trabajos por lotes de MapReduce. La carga en el Namenode es muy
pesada porque los clústeres son muy grandes, y tanto los clientes como los
Datanodes envían una gran cantidad de tráfico de metadatos al Namenode. En un
clúster de Data Warehouse, no es raro que el Namenode esté bajo una gran presión
de CPU, memoria, disco y red. Cuando catalogamos las fallas del almacén de datos,
encontramos que el HDFS causó el 41% de los incidentes.

11
El HDFS Namenode, aunque es un componente importante de HDFS, es una parte
pequeña pero significativa de nuestro almacén de datos general. Si bien solo el 10%
de los problemas generales del Almacén y el tiempo de inactividad no planificado
se podrían prevenir si tuviéramos algún tipo de Namenode de alta disponibilidad,
eliminar el Namenode como SPOF sigue siendo una gran victoria porque nos
permite realizar el mantenimiento programado del hardware y software. De hecho,
estimamos que eliminaría el 50% de nuestro tiempo de inactividad planificado, el
tiempo en el que el clúster no estaría disponible.

12
Entonces, ¿cómo sería un Namenode de alta disponibilidad y cómo funcionaría?
Veamos un nuevo diagrama, mostrando un Namenode altamente disponible:

13
En esta configuración, los clientes pueden hablar con un nombre de usuario primario
o en espera. De la misma manera, los Datanodes podrían enviar informes de bloque
a los Nombres de acceso principal o En espera. Eso es esencialmente lo que hemos
hecho con Avatarnode, nuestra solución para un Namenode de alta disponibilidad.

Avatarnode: una solución de trabajo para la conmutación por error de Namenode

Para abordar las deficiencias arquitectónicas del solo Namenode, hace casi dos
años comenzamos a trabajar en Facebook en el Avatarnode. El Avatarnode, que
Facebook ha contribuido de nuevo a la comunidad como código abierto, ofrece un
Namenode de alta disponibilidad con conmutación por error en caliente y failback.
Después de innumerables horas de pruebas y corrección de errores, el Avatarnode
ahora está en producción en Facebook ejecutando nuestros grupos más grandes
de Hadoop Data Warehouse gracias en gran parte a Dmytro Molkov.

El Avatarnode es un Namenode altamente disponible de dos nodos con


conmutación por error manual. Avatarnode funciona envolviendo el código de
Namenode existente en una capa de Zookeeper. Los conceptos fundamentales en
Avatarnode son:

14
1) Hay un Avatarnode primario y un Standby. Cualquiera de los Avatarnode puede
adoptar el "Avatar" primario o el Standby.

2) El nombre de host del maestro actual se mantiene en Zookeeper

3) Un Datanode modificado envía informes de bloque tanto al primario como al modo


de espera.

4) Un cliente HDFS modificado verifica a Zookeeper antes de comenzar cada


transacción, y nuevamente en el medio de una transacción si una falla. Esto permite
que las escrituras se completen incluso si la conmutación por error de Avatarnode
tiene lugar en medio de una escritura.

Vista de cliente de Avatarnode

Vista del nodo de datos de Avatarnode

15
Para aquellos que sienten curiosidad por el nombre, Dhruba Borthakur, uno de
nuestros desarrolladores de HDFS, se le ocurrió cuando apareció la película de
James Cameron "Avatar" (supongo que deberíamos estar contentos de que no fuera
1998, o podríamos haber tenido " Titanicnode ").

El Avatarnode está ejecutando nuestras cargas de trabajo de producción más


exigentes dentro de Facebook hoy, y continuará conduciendo a mejoras
sustanciales en la confiabilidad y administración de los clusters HDFS. En el futuro,
estamos trabajando para mejorar aún más Avatarnode e integrarlo con un marco
general de alta disponibilidad que permitirá la conmutación por error sin supervisión,
automatizada y segura.

Ya sea que su sistema tenga cientos de nodos o miles, HDFS es el sistema de


archivos distribuido de código abierto más escalable y más confiable disponible. Los
datos de fallas que recopilamos son representativos de una gran variedad de casos
de uso, y hemos abierto Avatarnode como una de nuestras mejores soluciones para
Namenode como SPOF. Debido al trabajo realizado por la comunidad de Hadoop y
las compañías que apoyan a los contribuyentes de Hadoop, todos los usuarios y
administradores de HDFS pueden beneficiarse de estos esfuerzos. Puedes ver el
lanzamiento de Hadoop en Facebook, que incluye Avatarnode, en GitHub.

Andrew Ryan ha estado trabajando con Hadoop en Facebook desde 2009. Durante
ese tiempo, ayudó a hacer crecer nuestra infraestructura Hadoop y HDFS desde un
único clúster de 600 TB en un centro de datos a más de 100 clusters HDFS en
muchos centros de datos.

16
CONCLUSIONES

 Se dio a conocer el origen e historia de Facebook que lo llevo a ser la red social más
grande del mundo.

 Se mostró con datos reales la inmensidad de data que Facebook debe procesar y
almacenar diariamente y como esto lo lleva a nuevos retos en el futuro.

 Se mostraron las diferentes tecnologías de software que Facebook utiliza para almacenar y
procesar los datos además también se mostró el sistema de archivos que este lleva en sus
servidores para que su uso sea optimo en la medida de lo posible.

17
BIBLIOGRAFIA

 https://sites.google.com/site/logicaglobal1/en-que-
esta-programado-facebook---facebook-no-es-solo-php

 https://geeksroom.com/2012/10/bigdata-que-
tecnologia-utilizan-twitter-facebook-o-paypal-para-sus-
bases-de-datos/67204/

 https://hipertextual.com/2011/02/7-tecnologias-de-
software-que-sostienen-a-facebook

 https://www.paradigmadigital.com/dev/cassandra-la-
dama-de-las-bases-de-datos-nosql/

 https://es.wikipedia.org/wiki/HipHop_for_PHP

 https://kinsta.com/es/base-de-conocimiento/que-es-
apache/

 https://www.facebook.com/notes/facebook-
engineering/under-the-hood-hadoop-distributed-
filesystem-reliability-with-namenode-and-
avata/10150888759153920/

18
19

También podría gustarte