¿Cómo utilizar OpenStack, Docker y Spark para crear servicios en la nube?
Esta vez queremos principalmente compartir los problemas que encontramos en la práctica de construir una nube privada basada en Docker durante el año pasado, cómo resolver la experiencia y nuestras experiencias y Think, para animar a todos.
Tengo algo de experiencia y experiencia usando Docker en un entorno de producción. El proyecto de nube privada se lanzó durante el periodo navideño de 2014. Después de más de medio año de desarrollo y tres promociones importantes, gradualmente ha ido formando una cierta escala.
Estructura
Gestión de clústeres
Como todos sabemos, las capacidades de gestión de clústeres de Docker aún no estaban maduras en ese momento, por lo que no elegimos Swarm, que Recién estaba emergiendo, pero utilizó el OpenStack más maduro de la industria, que puede administrar Docker y KVM al mismo tiempo. Ejecutamos Docker como una máquina virtual para satisfacer las necesidades comerciales de virtualización. La idea futura son los microservicios, que dividen las aplicaciones en microservicios para implementar la implementación y el lanzamiento de PaaS basado en aplicaciones.
¿Cómo gestionar Docker a través de OpenStack? Adoptamos el modelo de arquitectura de OpenStack+nova-docker+Docker. Nova-docker es un proyecto de código abierto en StackForge. Como complemento para nova, controla el inicio y la parada de contenedores llamando a la interfaz RESTful de Docker.
Sobre la base de IaaS, hemos desarrollado programación y otros componentes para respaldar la flexibilidad de las aplicaciones, la actualización en escala de grises y otras funciones, y respaldamos ciertas estrategias de programación, logrando así las funciones principales de la capa PaaS.
Realice una integración continua (CI) basada en Docker y Jenkins al mismo tiempo. Si se produce una inserción de Git para un proyecto en Git, se activará una compilación automática de Jenkins Job. Si el proyecto se construye correctamente, la imagen de Docker se generará y se enviará al almacén espejo. La imagen Docker generada en base a CI puede actualizar las instancias de los entornos de desarrollo y prueba a través de la API o interfaz PaaS, y finalmente actualizar las instancias del entorno de producción para lograr una integración y entrega continuas.
Red y almacenamiento
En términos de red, no utilizar el modo de red NAT proporcionado por Docker de forma predeterminada provocará ciertas pérdidas de rendimiento. Admite puente Linux y Open vSwitch a través de OpenStack, no es necesario iniciar iptables. El rendimiento de Docker se acerca al 95% del de una máquina física.
Monitoreo de contenedores
En términos de monitoreo, se han desarrollado herramientas de contenedores para realizar el cálculo de los valores de carga del contenedor, reemplazando los comandos originales top, free, iostat, uptime y otros. De esta manera, cuando se utilizan comandos comunes en un contenedor, la parte comercial ve el valor del contenedor en lugar de toda la máquina física. Actualmente, estamos migrando Lxcfs a nuestra plataforma.
También hemos agregado varias alarmas y monitoreo de umbral en el host, como monitoreo de procesos clave, monitoreo de registros, número pid en tiempo real, número de seguimiento de conexión de red, alarma de contenedor, etc.
Redundancia y aislamiento
En términos de redundancia y aislamiento, hemos realizado muchas soluciones de redundancia y preparativos técnicos. Podemos restaurar datos en Docker sin conexión sin iniciar el demonio de Docker. También admite la migración en frío de Docker entre máquinas físicas, la expansión/reducción dinámica de la CPU y la limitación de velocidad de E/S de red y de disco.
Problemas encontrados y soluciones
En menos de un año, hemos encontrado varios problemas durante la producción y el uso real. El proceso de uso de Docker también es un proceso de optimización constante de Docker, localización y resolución de problemas constantes.
Nuestro entorno de producción actual es CentOS 6.5. Una vez, una parte empresarial pensó erróneamente que el contenedor Docker que estaban usando era una máquina física e instaló otro Docker en el contenedor Docker, lo que instantáneamente provocó una falla del kernel y afectó a otros contenedores Docker en la misma máquina física.
Después del análisis, se debe a que la versión 2.6.32-431 del kernel no tiene un buen soporte para espacios de nombres de red. La creación de un puente en Docker provocará que el kernel falle. Este error se solucionó en sentido ascendente y el problema se resolvió después de actualizar de 2.6.32-431 a 2.6.32-504.
También hay un error en un programa escrito por un usuario. Los subprocesos creados no se reciclaron a tiempo, lo que resultó en una gran cantidad de subprocesos en el contenedor. Al final, el host no puede ejecutar comandos ni iniciar sesión a través de ssh, y el mensaje de error es "bash: fork: no se puede asignar memoria", pero es suficiente mirar la memoria libre.
Después del análisis, se descubrió que el soporte de aislamiento del kernel para pid no es perfecto y que PID _ max (/proc/sys/kernel/PID _ max) se comparte globalmente. Cuando la cantidad de pids en un contenedor alcanza el límite superior de 32768, el host y otros contenedores no podrán crear nuevos procesos. La última versión 4.3-rc1 solo admite el límite pid_max por contenedor.
También observamos que el registro del kernel del host de Docker puede causar problemas de desorden. Después del análisis, se descubrió que el kernel tiene solo un búfer log_buf, y todos los registros impresos por printk se colocan primero en este búfer. El host de Docker y rsyslogd en el contenedor obtendrán registros del búfer log_buf en el kernel a través de syslog, lo que provocará un caos de registros. Este problema se puede resolver modificando la configuración de rsyslog en el contenedor y permitiendo que el host solo lea el registro del kernel.
Además, también hemos solucionado problemas como fallos del kernel causados por la caída del mapeador de dispositivos dm-thin.
Experiencias y Pensamientos
Finalmente, compartir nuestras experiencias y pensamientos. En comparación con la tecnología de virtualización madura de KVM, los contenedores todavía tienen muchas imperfecciones. Además de la gestión de clústeres, la red y el almacenamiento, lo más importante es la estabilidad. El principal factor que afecta la estabilidad es el aislamiento imperfecto. Los problemas causados por un contenedor pueden afectar a todo el sistema.
El Memcg del contenedor no puede reciclar el caché de losa y no limita la cantidad de cachés sucios, lo que lo hace más propenso a problemas de OOM. Además, algunas interfaces de archivos en procfs no pueden estar basadas en contenedores, como pid_max.
Otro punto es el impacto en los métodos de operación y mantenimiento y la experiencia bajo el contenedor. Algunas herramientas de mantenimiento del sistema, como ss, free, df, etc. , no se puede usar en contenedores, o los resultados no son consistentes con las máquinas físicas, porque las herramientas de mantenimiento del sistema generalmente acceden a archivos en procfs y estas herramientas deben modificarse o adaptarse.
Aunque los contenedores no son perfectos, todavía somos muy optimistas sobre el desarrollo futuro de los contenedores. Software de código abierto relacionado con contenedores, como Kubernetes, Mesos, Hyper, CRIU, runC, etc. , es el foco de nuestra atención.
Preguntas y respuestas. R
P: ¿Cómo se logra el equilibrio de carga entre contenedores?
Respuesta: El equilibrio de carga entre contenedores se produce más a nivel de PaaS y SaaS. Nuestra capa P admite el enrutamiento dinámico de las capas 4 y 7 y expone las interfaces al mundo exterior a través de nombres de dominio o servicios de nombres. Podemos implementar actualizaciones de escala de grises basadas en contenedores y escalado elástico.
P: ¿Su OpenStack ejecuta CentOS 6.5?
Respuesta: Sí, pero actualizamos los paquetes de los que dependen OpenStack y Docker. Mantenemos una fuente interna de yum.
P: ¿La IP del contenedor se organiza estáticamente o se obtiene dinámicamente?
Respuesta: Esto está relacionado con el modo de red administrado por el departamento de operación y mantenimiento. Nuestra intranet no cuenta con servicio DHCP, por lo que para la capa IaaS, la IP del contenedor se asigna estáticamente. Para la capa PaaS, si hay un servicio DHCP, la IP y el puerto expuestos por la App del contenedor pueden ser dinámicos.
P: ¿Has intentado usarlo al implementar Ubuntu? ¿Has investigado las diferencias entre estos dos sistemas? Además, ¿cómo se monitorean estas máquinas virtuales en OpenStack?
R: No hemos probado Ubuntu porque la empresa utiliza CentOS en su entorno de producción. Nuestro equipo de middleware supervisa las máquinas de la empresa. Trabajamos con el equipo de monitoreo para implementar agentes monitoreados en el host y en cada contenedor para que pueda monitorearse como una máquina virtual.
Por supuesto, los datos del contenedor deben recuperarse de cgroups y nosotros haremos esta parte del trabajo de extracción de datos.
P: ¿Tiene alguna sugerencia para la selección de redes entre contenedores? Se dice que las tarjetas de red virtuales tienen una pérdida de rendimiento considerable en comparación con las tarjetas de red físicas. ¿Son los propios métodos de tejido y ovs de Docker capaces de hacer el trabajo?
Respuesta: No se recomienda utilizar el método NAT predeterminado para redes de contenedores, porque NAT provocará ciertas pérdidas de rendimiento. Cuando lo compartí antes, mencioné que no es necesario iniciar iptables y que el rendimiento de Docker es cercano al 95% del de una máquina física. La capa inferior de los tejidos de Docker aún debería usar un puente o un vSwitch abierto. Se recomienda que consulte el código fuente de nova-docker, que será más fácil de entender.
P: ¿Se implementa IP estática a través de LXC?
Respuesta: La implementación de IP estática se implementa en novadocker/virt/docker/vifs.py de nova-docker. El principio de implementación es agregar un par veth mediante el comando ip y luego usar una serie de comandos como ip link set/ip netns exec para lograrlo. El principio de peinado es similar al de la tela.
P: ¿Cómo se gestiona el proceso gdb en el contenedor? ¿Has empaquetado GF en un contenedor?
Respuesta: No habrá ningún problema con gdb en el contenedor. Puedes instalar gdb directamente con yum.
P:* * * * ¿Se puede cargar la memoria directamente en el contenedor?
Respuesta: No lo he probado, pero no debería haber ningún problema al usar docker -v V.
P: ¿Cómo restaurar datos en Docker sin conexión sin iniciar el demonio de Docker?
Respuesta: El principio de la recuperación fuera de línea es utilizar el comando dmsetup create para crear un dispositivo dm temporal y asignarlo al número de dispositivo dm utilizado por la instancia de Docker. Al montar este dispositivo temporal, se pueden restaurar los datos originales.
P: La migración en frío de Docker entre máquinas físicas admite la expansión/reducción dinámica de la CPU. ¿Cómo se implementa el límite de velocidad de E/S de red y E/S de disco? ¿Puedes dar más detalles?
Respuesta: La migración en frío de Docker es una interfaz que implementa la migración de OpenStack modificando nova-docker. Específicamente, se envía a través de Docker, Docker lo envía al registro interno y luego Docker extrae la instantánea, que se completa entre las dos máquinas físicas.
Expansión/reducción dinámica de la capacidad de la CPU, el límite de velocidad de IO del disco IO de la red se logra principalmente modificando los parámetros de CPU, iops, bps y TC en cgroups a través de novadocker.
P: ¿Considerarás utilizar el proyecto Menglong en el futuro o elegirás Swarm?
a:Estas son nuestras elecciones. Podemos pensar en enjambres de abejas. Debido a que la capa inferior de Magnum todavía utiliza soluciones de administración de clústeres como Kubernetes, es mejor elegir directamente Swarm o Kubernetes que Magnum. Por supuesto, esta es sólo mi opinión personal.
P: ¿Sus servicios se basan en la misma imagen? Si es una imagen diferente, ¿cómo puede el nodo informático garantizar que el contenedor pueda iniciarse rápidamente?
Respuesta: El departamento de operación y mantenimiento mantendrá un conjunto unificado de imágenes básicas. Se realizarán imágenes de otros negocios en base a esta imagen. Cuando inicializamos el nodo informático, extraeremos la imagen básica localmente a través de Docker Pull. Esta también es una práctica común entre muchas empresas. Hasta donde yo sé, Tencent y 360 tienen prácticas similares.
P: ¿Ha considerado continuar usando el almacenamiento tradicional para la migración en vivo?
Respuesta: Se están considerando el almacenamiento distribuido y * * * el almacenamiento compartido. A continuación, planeamos realizar una migración en vivo de contenedores.
P: ¿La IP pública debería vincularse directamente al contenedor o asignarse a la IP privada del contenedor a través de otros medios? Si es así, ¿cómo resolver el aislamiento VLAN de segunda capa original?
Respuesta: Debido a que somos una nube privada y no involucramos IP flotante, puedes considerarla como una IP pública. El aislamiento de capa 2 de las VLAN se puede realizar en el conmutador. Usamos Open vSwitch para dividir diferentes VLAN y lograr el aislamiento de la red entre los contenedores Docker y las máquinas físicas.
P: ¿Puedes explicarnos más detalladamente el problema del mapeador de dispositivos DM-thindiscard?
Respuesta: En abril, dos hosts a menudo se reiniciaban sin motivo alguno. Lo primero que pensé fue comprobar el registro /var/log/messages, pero como se acercaba el tiempo de reinicio, no encontré ningún mensaje relacionado con el reinicio. Luego, en el directorio /var/crash, encontré el registro de fallas del kernel vmcore-dmesg.txt. El tiempo de generación del registro es consistente con el tiempo de reinicio del host, lo que puede indicar que el host se reinició automáticamente después de una falla del kernel. "¡Error del kernel en drivers/MD/persistent-data/DM-btree-remove .c:181!". Como se puede ver en la pila, dm-thin está preparando el proceso para descartarlo. Aunque no conocemos la causa raíz del error, la causa directa es causada por la operación de descarte, por lo que podemos evitarla desactivando el soporte de descarte.
Después de desactivar el descarte en todas las configuraciones de host, el mismo problema nunca volvió a ocurrir.
En la conferencia CNUTCon de este año, Tencent y Dianping también mencionaron este fallo al compartir su uso de Docker. Sus soluciones eran exactamente las mismas que las nuestras.
P: En el bloque de monitoreo y alarma de umbral, ¿hay alarmas de nivel alto, medio y bajo? Si se produce una alarma de bajo nivel, ¿tomará algunas medidas para restringir el acceso de los usuarios o cortar los servicios que actualmente utilizan los usuarios, o dejará que la situación se desarrolle?
Respuesta: Para las alarmas, el departamento de operación y mantenimiento cuenta con un PE dedicado responsable de la estabilidad del negocio en línea. Cuando ocurre una alarma, tanto el servidor como el PE recibirán la información de la alarma al mismo tiempo. Si una sola máquina virtual se ve afectada, el PE notificará a la parte comercial. En casos graves, la empresa puede incluso desconectarse a tiempo. Cooperaremos con PE para permitir que la parte comercial avance el negocio a tiempo.
P: ¿Las herramientas de contenedor que desarrolla usted mismo son de código abierto? ¿Su código está disponible en GitHub? ¿Por qué no abrir el código fuente todavía? ¿Se espera que sea de código abierto en el futuro? ¿Cómo ve el seguimiento detallado de los contenedores?
Respuesta: Aunque actualmente no tenemos código abierto, creo que el código abierto no es un problema. Espere nuestras buenas noticias. Con respecto al monitoreo detallado de los contenedores, la idea principal es monitorear el estado de salud del contenedor a nivel de host, mientras que el lado comercial completa el monitoreo interno del contenedor.
P: ¿Importa el número de capas de un contenedor? ¿El sistema de archivos subyacente es ext4? ¿Existe alguna estrategia de optimización?
Por supuesto que sí.
Optimizamos el tiempo que tarda Docker en extraer imágenes fusionando niveles de imágenes. En Docker Pull, verificar cada capa lleva mucho tiempo. Al reducir el número de capas, no solo el tamaño se vuelve más pequeño, sino que el tiempo de extracción de la ventana acoplable se reduce considerablemente.
P: El memcg del contenedor no puede reciclar el caché de losa y no limita la cantidad de cachés sucios, lo que aumenta la probabilidad de que ocurran problemas de OOM. -¿Cómo aborda los problemas de almacenamiento en caché?
Respuesta: según los valores de la experiencia real, calculamos una parte del caché como memoria utilizada, lo más cerca posible del valor de uso real. Además, para los contenedores, el umbral de alerta de memoria se reduce adecuadamente. Al mismo tiempo, se agrega la alarma OOM del contenedor. Si actualiza a CentOS 7, también puede configurar kmem.limit_in_bytes para ciertos límites.
P: ¿Puede contarme más sobre el aislamiento de su red de contenedores?
Respuesta: Aislamiento de acceso. Actualmente, la segunda capa de aislamiento utiliza principalmente VLAN, y VXLAN se considerará para aislamiento más adelante. Para el control de flujo de la red, simplemente usamos la QoS basada en puerto que viene con OVS y usamos TC en la capa inferior. Consideraremos el control de flujo basado en flujo más adelante.
P: ¿Usan todos CentOS 6.5 para este conjunto? Esta tecnología se realiza. ¿Es operación y mantenimiento o desarrollo?
Respuesta: La estabilidad es la primera prioridad en el entorno de producción. CentOS 6.5 es el principal responsable de la operación y mantenimiento de toda la empresa. Proporcionaremos sugerencias al departamento de operación y mantenimiento durante las principales actualizaciones de versiones. Al mismo tiempo, garantice la estabilidad de la virtualización en sí.
P: ¿Cómo se comunican directamente los contenedores? ¿Cómo configurar la red?
a: ¿Te refieres a la misma máquina física? Actualmente la comunicación sigue siendo vía IP. La red específica puede adoptar el modo puente o el modo VLAN. Usamos Open vSwitch para admitir el modo VLAN, que puede aislar o comunicarse entre contenedores.
P: ¿Utilizas nova-api para integrar Dcoker? ¿Puedo utilizar funciones avanzadas de Docker, como docker-api? Además, ¿por qué no integrar Docker con calor?
Respuesta: Utilizamos el software de código abierto nova-docker. nova-docker es un proyecto de código abierto en StackForge. Como complemento para nova, reemplaza el libvirt existente y controla el inicio y la parada del contenedor llamando a la interfaz RESTful de Docker.
Siempre ha sido controvertido si utilizar Heat o NOVA para integrar la industria Docker. Estamos más preocupados por los problemas que queremos resolver. Heat en sí depende de una relación compleja, pero no se usa ampliamente en la industria; de lo contrario, la comunidad no lanzaría Magnum.
P: Actualmente, ¿tienen alguna práctica para contenedores que cruzan DC o direcciones similares?
Respuesta: Hemos implementado varios clústeres en varias salas de ordenadores y cada sala de ordenadores tiene un clúster independiente. Sobre esta base, desarrollamos nuestra propia plataforma de gestión, que puede lograr una gestión unificada de múltiples clústeres. Al mismo tiempo, hemos creado el registro Docker V1 y nos estamos preparando para actualizar internamente al registro Docker V2, que puede realizar la función de duplicación entre DC de las imágenes de Docker.
P: También estoy promoviendo la integración continua y la gestión de clústeres de Docker, pero encuentro que gestionar más contenedores también es un problema, como la gestión flexible y el seguimiento de recursos de los contenedores. ¿Cuál es mejor, Kubernetes o Mesos? Si se usa para negocios, ¿cómo resolver nombres de dominio externos, porque toda la comunicación se realiza a través del host y solo tiene una IP externa?
Respuesta: Para Kubernetes y Mesos, todavía estamos en la etapa previa a la investigación. Nuestra programación actual de nivel P se desarrolla internamente. Mantenemos el estado de la instancia, los puertos y otra información a través de etcd. Para la capa 7, se puede resolver a través de Nginx. Para la capa 4, debe confiar en los servicios de nombres. Disponemos de nuestro propio servicio de naming para poder solucionar estos problemas. Aunque solo hay una IP, los puertos expuestos son diferentes.
P: ¿Has considerado usar Hyper Hypernetes? ¿Aislar contenedores del kernel host mientras se garantiza la velocidad de inicio?
Respuesta: Hemos estado prestando atención a Hyper. Hyper es una muy buena idea y no se puede descartar en el futuro. De hecho, lo que más esperamos que Hyper logre es la migración en vivo, algo que Docker no puede hacer actualmente.
P: ¿Qué configuración utiliza habitualmente su host? ¿Host independiente o servidor en la nube?
Respuesta: Disponemos de nuestra propia sala de ordenadores y utilizamos servidores y máquinas físicas independientes.
P: ¿Qué solución utilizan los contenedores para la comunicación entre hosts?
Respuesta: Cuando el contenedor atraviesa el host, debe utilizar tres capas para la comunicación, a saber, IP. Los contenedores pueden tener IP independiente o IP de host + mapeo de puertos. En la actualidad, sigo usando IP independiente, que es más fácil de administrar.
P: Parece que el uso de Docker por parte de su empresa se parece más a una máquina virtual. ¿Por qué no pensar en ello desde la perspectiva del contenedor? ¿Es por razones históricas?
Respuesta: Nuestra primera consideración es la aceptación del usuario y el costo de transformación. Desde la perspectiva del usuario, no le importa si el negocio se ejecuta en un contenedor o en una máquina virtual.
Está más preocupado por la eficiencia de la implementación de la aplicación y el impacto en la estabilidad y el rendimiento de la aplicación en sí. Desde la perspectiva de los contenedores, algunas aplicaciones existentes en el lado empresarial pueden requerir modificaciones significativas. Por ejemplo, sistema de registro, monitoreo de enlace completo, etc. Por supuesto, lo más importante es que el impacto en el sistema de operación y mantenimiento existente será relativamente grande. La gestión de contenedores es un desafío para la operación y el mantenimiento, y la aceptación de la operación y el mantenimiento requiere un proceso.
Por supuesto, nuestro objetivo es utilizar Docker como contenedor para encapsular aplicaciones y lograr la implementación de PaaS y la programación dinámica. De hecho, también estamos trabajando en esta dirección. Esto también requiere que el final del negocio divida la aplicación e implemente microservicios, lo que requiere un proceso.
P: En realidad, también queremos utilizar contenedores como máquinas virtuales. ¿Qué middleware estás ejecutando en la máquina virtual? ¿Necesitamos resolver la contradicción entre la clave de prueba y una gran cantidad de entornos WebLogic relativamente independientes?
Respuesta: Operamos muchos negocios, desde el sitio web principal de front-end hasta servicios de middleware de back-end. Nuestro servicio de middleware es un producto desarrollado por otro equipo, que realiza la separación de la lógica empresarial de front-end y back-end.
P: ¿Su empresa utiliza OpenStack para administrar Docker y KVM? ¿Debería desarrollar usted mismo la interfaz de configuración web o simplemente utilizar la API para administrarla?
Respuesta: Contamos con una plataforma de gestión de red de desarrollo propio. Esperamos administrar múltiples clústeres a través de una plataforma, conectar operación y mantenimiento, registro, monitoreo y otros sistemas, y exponer una interfaz API unificada.
P: En el caso compartido anteriormente, con respecto al error en el espacio de nombres del kernel 2.6, ¿puede esta versión inferior del kernel instalar el entorno Docker? El aislamiento de procfs de Docker actualmente no es perfecto. ¿Las herramientas de contenedor que desarrolla se basan en la capa de aplicación o necesita modificar el kernel?
Respuesta: No debería haber ningún problema con la instalación y el uso, pero si va a un entorno de producción, debe considerarlo de manera integral. La razón principal es que la estabilidad y el aislamiento no son suficientes. Es más probable que las versiones inferiores del kernel causen fallas en el sistema o varios problemas graves. Algunos de ellos en realidad no son errores, sino funciones imperfectas. Por ejemplo, la creación de un puente en un contenedor puede provocar un bloqueo debido a un soporte incompleto del kernel para los espacios de nombres de la red.
Las herramientas de contenedor que desarrollamos están basadas en aplicaciones y no requieren modificación del kernel.
P: ¿Existe una introducción más detallada a la redundancia, como por ejemplo cómo restaurar datos sin conexión?
Respuesta: Ya he respondido esta pregunta antes. Específicamente, uso el comando dmsetup create para crear un dispositivo dm temporal y asignarlo al número de dispositivo dm utilizado por la instancia de Docker. Al montar este dispositivo temporal, se pueden restaurar los datos originales. Otros planes de ayuda en casos de desastre se pueden reorganizar y compartir porque contienen más contenido. Puedes seguir http://mogu.io/ y lo compartiremos.
P: ¿El sistema de contenedorización en línea de su empresa es stateless o stateful? ¿Cuáles son las consideraciones o dificultades en la selección de escenas?
Respuesta: Las aplicaciones de las empresas de Internet son en su mayoría apátridas. Los servicios con estado en realidad se pueden transformar desde el nivel empresarial en aplicaciones parcialmente con estado o completamente sin estado. No entiendo muy bien su selección de escenarios, pero hacemos todo lo posible para satisfacer las diversas necesidades del lado comercial.
Para algunos servicios que tienen altos requisitos de estabilidad o son particularmente sensibles al retraso de IO, como el servicio redis, no recomendamos el uso de contenedores. Estos servicios no pueden estar completamente aislados o sin estado.
Si es mejor tener múltiples procesos o múltiples subprocesos, etc. , no significa que debas usar Spark solo porque es popular. Todavía estamos trabajando en este aspecto cuando nos encontramos con estas preguntas: ¿Como tecnología popular de procesamiento de big data? Chen, puede crear rápidamente un clúster Spark para que todos lo usen. ¿Usamos OpenStack? Lista. P: Optimización colaborativa de software y hardware de Hadoop, análisis y optimización del rendimiento de Spark en servidores de arquitectura OpenPOWER: ¿Qué temas se compartirán en este discurso? Sólo pregunta. Participe en discusiones en la comunidad Spark. Compartí muchos artículos sobre computación distribuida, Docker y Spark para construir la nube pública de big data de SuperVessel en la revista "Programmer", y contribuí con código a upstrEAM. Esta es una buena forma de ingresar a SQL, con big data, ocho patentes de tecnología en el campo. de herramientas de ajuste y análisis de rendimiento de MapReduce. Por ejemplo, todavía hay muchas empresas que utilizan Impala para el análisis de datos: las empresas quieren adoptar la tecnología Spark, optimizar el rendimiento del almacenamiento de objetos Swift, etc. Por ejemplo, una mejor integración con Docker Container, director técnico de la dirección de nube de big data, ¿Spark todavía tiene mucho trabajo por hacer? Si las empresas quieren aplicar Spark rápidamente, ¿qué deberían hacer? Las opciones tecnológicas específicas deben basarse en sus propios escenarios comerciales. Los contenedores Docker han atraído mucha atención debido a sus ventajas para mejorar la utilización y la productividad de los recursos de la nube. Aplique aceleradores FPGA de alto rendimiento a proyectos como plataformas de big data y luego ajuste los parámetros relevantes para optimizar estos cuellos de botella de rendimiento.
Algunas empresas están utilizando Storm y Samaza para la computación en streaming: ¿grandes mejoras de rendimiento en comparación con MapReduce?