¿Cuál es la pila tecnológica para algunos de los equipos de ingeniería de datos de Facebook?

Lo primero es lo primero: no tengo idea de la forma interna de trabajar de Facebook. Por lo tanto, podría estar equivocado, pero he estado siguiendo las notas y detalles de su equipo de ingeniería desde cualquier lugar que pueda (son muy interesantes) y así es como podría hacerse posible. Solo alguien del interior de Facebook podría proporcionar información concreta.

Ahora, ha preguntado sobre ‘ingeniería de datos’. Ese es un término general: hay tantas cosas que el término se esconde debajo. La recopilación, el almacenamiento, el análisis y la generación de informes, la generación de patrones y la minería de datos son los términos generalmente ocultos bajo ese término y cada uno de esos términos merece un libro (y uno grueso) que se lea para comprenderlos. Entonces no hay una respuesta genérica sobre cómo se hace eso. Pero su pregunta es ‘Qué’, no ‘Cómo’.

Para empezar, hay dos bases de datos principales que usa Facebook: MySQL y HBase / Hadoop.

MySQL

Ahora, MySQL es una base de datos SQL. Eso solo difundiría el conjunto de herramientas. Motivo: MySQL es RDBMS basado en SQL. Tiene una lista casi interminable de todas las categorías de herramientas que puedas imaginar con respecto a una base de datos SQL. Informes, análisis, visualización de datos (ah, olvidé agregar esto como un sub-término de ‘Ingeniería de datos’, pero aquí está), Administración, Descubrimiento de patrones y demás. Esas herramientas de interacción (vamos a conformarnos con el término ‘interacción’ en aras de la generalización) podrían ser de código cerrado o de código abierto.

Ahora, si son productos de propiedad, los ingenieros de Facebook tienen la libertad y la opción de escribir otra herramienta que utilice las API proporcionadas por la herramienta de interacción. Y Facebook no es del tipo o tamaño de empresa que requeriría (o podría) que todas las herramientas se escriban en el mismo idioma.

Si esas herramientas de interacción son herramientas de código abierto, existe una buena posibilidad de que el lenguaje de programación ya haya sido seleccionado.

HBase / Hadoop

Hadoop es una de las industrias de informática de bombo más grandes que ha tenido (y Hadoop está a la altura de las expectativas). Facebook creó Cassandra y luego se mudó a Hadoop. Ahora, Hadoop está escrito en Java. La mayoría de las bibliotecas famosas (y estables) que pueden funcionar en Hadoop / HBase también están escritas en Java. Entonces Java es un fuerte candidato seguro. Pero existen enlaces de idiomas a Hadoop / HBase y para una buena cantidad de lenguajes de programación. Entonces, de nuevo, si tuviera que escribir una nueva herramienta para enviar trabajos a su marco Hadoop para lo que quisiera hacer, difícilmente estaría limitado por cualquier opción.

Ahorro

Si alguna vez ha querido escribir un programa que pueda pasar datos a otro programa escrito en un idioma diferente, entonces desea que exista Thrift. Estamos hablando de la escena en la que está escribiendo un programa en PHP y tiene que intercambiar datos con otra biblioteca fina escrita en C ++. ¿Cómo logras eso? Ahorro es cómo lo escribes. Utiliza Thrift para definir la estructura de datos que deseas pasar y generará el código que te ayudará a obtener / enviar datos a ambos lados.

Esto fue (obvio en este contexto) creado por Facebook para superar el problema de los idiomas mixtos.

Lo que no debes esperar

Los idiomas no son una barrera en ninguna parte de Facebook y creo que ya he establecido este hecho. Pero esos son solo lenguajes de programación.

En la parte de la base de datos, Facebook comenzó en MySQL y ha crecido en lo que respecta a RDBMS. No debe esperar ver PostgreSQL, Oracle o MS-SQL a menos que haya pequeñas herramientas escritas por algún ingeniero que las utilizó en su proyecto, internamente. Pero dado que está preguntando acerca de la Ingeniería de datos, que requiere un tamaño de conjunto de datos completamente diferente, eso no debería molestarlo.

La base de datos personalizada

Facebook lanza sus creaciones como proyectos de código abierto regularmente. Uno de ellos fue / es Cassandra, que es una base de datos capaz de manejar la distribución y carga masiva de datos y fue desarrollada internamente por Facebook. Incluso puede encontrar otro producto de este tipo y solo alguien que trabaja para Facebook puede informarle al respecto (pero asegúrese de que no lo haga, y si lo hace, no se lo detallará lo suficiente como para que pueda preparar un grano sobre eso).

Sistema operativo: Linux para servidor. $ var para máquinas de desarrollo

No creo que a Facebook le importe el trasero de una rata cuando se trata de lo que usas. en tu personal. Deberían permitirte tener uno con cualquier sistema operativo, tal vez incluso algo tan malo como Windows. Pero en todas las imágenes y todas las pruebas que veo, solo veo / principalmente Macbooks, así que OS X es popular allí, supongo. Dado que OS X es notablemente similar a Linux en el comportamiento a nivel del sistema, Linux tampoco debería ser una vista rara. Mientras se sienta cómodo con su máquina y pueda hacer el trabajo, Facebook no lo detendrá.

Sin embargo, tener Windows como SO de servidor simplemente no es posible (piense en los costos de licencia), usan Linux. También usan Linux por otros 1,25 mil millones de razones, pero usan Linux en los servidores.

Como ha preguntado sobre ‘Tech stack’ y el sistema operativo es una parte integral de él, sería bueno ser un buen usuario de Linux.

¿Pero pregunté sobre ‘algunos’ de los equipos?

Te he contado sobre lo que encontrarías para el sistema operativo, las bases de datos y los lenguajes de programación (casi cualquier cosa).

Pero puede decir que solo preguntó sobre qué ‘algunos’ de los equipos podrían estar usando. Hay dos cosas que me gustaría decir a eso:

  1. No importa de qué equipo se trate, seguramente usarían la base de datos donde se almacenan los datos. Además, estarían escribiendo código en un lenguaje que pueda funcionar bien con su pila existente y, dado que tienen (construyeron) una herramienta para convertir tipos de datos de un lenguaje de programación a otro, el lenguaje de programación no debería ser una barra. Entonces, supongo que usted es bueno en la teoría de la Ingeniería de Datos (o una parte de ella, por supuesto), es bueno en algoritmos, tiene un buen enfoque de resolución de problemas y ha creado algunos buenos programas en el pasado, equipo (s) de Ingeniería de Datos de Facebook ) estaría encantado de hacer amigos contigo.
  2. No importa qué respuesta quieras. ¿Por qué? Porque si ya estás trabajando para Facebook, ya estarías aprendiendo y codificando y esta pregunta no existiría. Y si no estás en Facebook, ¡el punto anterior mencionado lo cubre!

Supongo que tienes curiosidad por aprender Ingeniería de Datos o intentas unirte a Facebook. Ser bueno en Algoritmos y Ciencia de Datos en general es lo que necesita de todos modos.

Punto lateral 1: El grupo de talentos

Ahora, Facebook es uno de los grupos más grandes y calificados de ingenieros de software. Para que siempre puedan escribir una herramienta ellos mismos. Ve a su repositorio de GitHub y mira las estadísticas de idiomas: Facebook. Entenderías que no tienen miedo a las alturas. Digo alturas porque crear software es como crear edificios. Usted planifica, diseña, prueba y luego lo vende / lo usa. Algo en el nivel inferior sale mal, tienes que rediseñarlo. Se necesita mucha visión de futuro. De hecho, modificar el código es más fácil y, a veces, más concurrente que cambiar un edificio. Han creado estructuras altas en todos los idiomas. Las partes que requieren diferentes tipos de manejo de carga están escritas en un lenguaje diferente al lenguaje de programación principal.

Punto lateral 2: C ++ se ejecuta más rápido, ¿entonces tantos lenguajes de programación?

Tan cierto como parece: cada lenguaje de programación tiene beneficios. Si bien el rendimiento siempre es un deseo, es más o menos un efecto secundario. Si pudieras escribir un programa usando Python en una semana, ¿por qué escribirías lo mismo en C ++? Python es más lento con seguridad, pero no puede cometer un error crítico, pero casi invisible en Python; mientras que C / C ++ podría dejarte vulnerable a largo plazo. Cambiar el código en C ++ puede convertirse en un proceso largo y pesadilla. Por lo tanto, sería aconsejable ahorrar tiempo y utilizar una herramienta que se adapte al trabajo.

Espero que ayude.