¿Qué habilidades deben dominar los ingenieros de big data?
Los ingenieros de big data deben dominar al menos las siguientes habilidades:
Un lenguaje JVM: el ecosistema de big data actual tiene una gran proporción de lenguaje JVM. No es una exageración. decir que es un monopolio. Aquí recomiendo a todos que aprendan Java o Scala. En cuanto a lenguajes como Clojure con los que es difícil empezar, en realidad no los recomiendo. Además, hoy es la era en la que "la madre es más valiosa que el hijo", y un determinado marco de big data hará que su lenguaje de programación sea popular, como Docker para Go y Kafka para Scala. Por lo tanto, el autor recomienda dominar al menos un lenguaje JVM. Vale la pena mencionar que debe comprender el modelo de subprocesos múltiples y el modelo de memoria de este lenguaje. Los modos de procesamiento de muchos marcos de big data son en realidad similares al modelo de procesamiento de subprocesos múltiples a nivel de lenguaje, pero el marco de big data los amplía. a múltiples máquinas.
Marco de procesamiento computacional: estrictamente hablando, se divide en procesamiento por lotes fuera de línea y procesamiento de transmisión. El procesamiento de transmisión es la tendencia futura y se recomienda que todos lo aprendan; mientras que el procesamiento por lotes fuera de línea está casi desactualizado. Su idea de procesamiento por lotes no puede manejar conjuntos de datos infinitos, por lo que su alcance se reduce día a día. De hecho, Google ha abandonado oficialmente el procesamiento fuera de línea representado por MapReduce dentro de la empresa. Por lo tanto, si desea aprender ingeniería de big data, es necesario dominar un marco de procesamiento de transmisión en tiempo real. Los marcos principales actuales incluyen: Apache Samza, Apache Storm, Apache Spark Streaming y Apache Flink, que ha sido muy popular el año pasado. Por supuesto, Apache Kafka también ha lanzado su propio marco de procesamiento de flujo: Kafka Streams
Marco de almacenamiento distribuido: aunque MapReduce está algo desactualizado, HDFS, otra piedra angular de Hadoop, sigue siendo fuerte y es el más popular en el Comunidad de código abierto Bienvenido al almacenamiento distribuido, definitivamente tómate el tiempo para aprenderlo. Si desea estudiar en profundidad, debe leer el documento GFS de Google ([url=]/media/research.google.com/en//archive/gfs-sosp2003.pdf[/url]). Por supuesto, hay muchos almacenamientos distribuidos en el mundo del código abierto, y OceanBase de Alibaba en China también es excelente.
Marco de programación de recursos: Docker ha sido muy popular en los últimos dos años. Varias empresas están desarrollando soluciones de contenedores basadas en Docker. El marco de programación de contenedores de código abierto más famoso es K8S, pero igualmente famosos son YARN de Hadoop y Apache Mesos. Los dos últimos no solo pueden programar grupos de contenedores, sino también grupos que no son contenedores, lo cual vale la pena aprender.
Marco de coordinación distribuido: hay algunas funciones comunes que deben implementarse en todos los marcos distribuidos de big data convencionales, como el descubrimiento de servicios, la elección de líderes, los bloqueos distribuidos, el almacenamiento KV, etc. Estas funciones también han dado lugar al desarrollo de marcos de coordinación distribuidos. El más antiguo y famoso es Apache Zookeeper, y los más nuevos incluyen Consul, etcd, etc. Al aprender ingeniería de big data, no es necesario comprender el marco de coordinación distribuida y, hasta cierto punto, es necesario comprenderlo en profundidad.
Base de datos KV: Las típicas son Memcache y Redis, especialmente Redis se está desarrollando rápidamente. Los usuarios prefieren cada vez más su diseño API simple y su TPS de alto rendimiento. Incluso si no aprende big data, aprender Redis es de gran beneficio.
Base de datos de almacenamiento de columnas: el autor ha pasado mucho tiempo aprendiendo Oracle, pero debo admitir que la base de datos relacional actual se ha desvanecido lentamente de la visión de la gente y hay demasiadas soluciones que pueden reemplazar a RDBMS. . El almacenamiento en columnas se ha desarrollado para abordar el inconveniente de que el almacenamiento en filas no es adecuado para consultas ad hoc de big data. Una base de datos de almacenamiento en columnas típica es HBASE en la comunidad de código abierto.
De hecho, el concepto de almacenamiento de columnas también proviene de un artículo de Google: Google BigTable. Si está interesado, será mejor que lo lea:
Cola de mensajes: en el procesamiento de ingeniería de big data, la cola de mensajes sirve. como "reducción de picos y relleno de valles" "El sistema principal es esencial. Actualmente existen muchas soluciones en este campo, incluidas ActiveMQ, Kafka, etc. Alibaba nacional también tiene RocketMQ de código abierto. El líder entre ellos es Apache Kafka. Muchas ideas de diseño de Kafka son particularmente consistentes con el concepto de diseño del procesamiento de datos de transmisión distribuida. No es de extrañar que Jay Kreps, el autor original de Kafka, sea el principal maestro actual en procesamiento de streaming en tiempo real.