Red de conocimiento informático - Aprendizaje de programación - Si Docker puede instalar varias aplicaciones al mismo tiempo Una de las funciones principales de Docker es la capacidad de empaquetar cualquier aplicación, incluido Hadoop, en una imagen de Docker. Este tutorial proporciona pasos detallados para construir rápidamente un clúster Hadoop de múltiples nodos en una sola máquina usando Docker. Después de descubrir problemas con el proyecto actual HadooponDocker, el autor desarrolló una imagen de Hadoop casi mínima y admite la construcción rápida de un clúster de Hadoop con cualquier número de nodos. 1. Información del proyecto GitHub: kiwanlau/hadoop-cluster-docker Usar directamente una máquina para construir un clúster de Hadoop es un proceso bastante doloroso, especialmente para los principiantes. Es posible que estén luchando con este problema incluso antes de comenzar a contar palabras. Y no todo el mundo tiene varias máquinas. Puedes intentar construirlo con varias máquinas virtuales, asumiendo que tienes una máquina súper poderosa. Mi objetivo es ejecutar clústeres de Hadoop en contenedores Docker para que los desarrolladores de Hadoop puedan crear rápida y fácilmente clústeres de Hadoop de múltiples nodos localmente. De hecho, ha habido muchas implementaciones de esta idea, pero ninguna de ellas es ideal; o son demasiado grandes, demasiado lentas de usar o utilizan herramientas de terceros que hacen que su uso sea demasiado complicado. La siguiente tabla enumera algunos proyectos conocidos de HadooponDocker y sus problemas. La página de GitHub del proyecto alvinhenrick/hadoop-mutinode y la dirección del blog del autor son las siguientes: GitHub: Hadoop (YARN) MultinodeClusterwithDocker Blog: Las siguientes dos tablas muestran la comparación de parámetros del proyecto alvinhenrick/hadoop-mutinode y mi kiwenlau/hadoop -clúster-, puede ver que optimicé para: tamaño de imagen más pequeño, tiempo de construcción más rápido, menos capas de imagen, cambio más rápido y más fácil de la cantidad de nodos en el clúster de Hadoop. Además, el proyecto alvinhenrick/hadoop-mutinode requiere la modificación manual de los archivos de configuración de Hadoop y la reconstrucción de los archivos al agregar nodos. Refleje Hadoop-nn-dn y luego modifique el script de inicio del contenedor para lograr la función de agregar nodos. Pero si implemento la automatización a través de un script de shell, puedo reconstruir la imagen hadoop-master en menos de 1 minuto y ejecutarla inmediatamente. El proyecto inicia un clúster Hadoop de 3 nodos de forma predeterminada y admite clústeres Hadoop con cualquier número de nodos. Además, iniciar Hadoop, ejecutar el recuento de palabras y reconstruir la imagen se automatizan mediante scripts de shell. Esto hace que el uso y desarrollo de todo el proyecto sea muy cómodo y rápido. Entorno de desarrollo y prueba Sistema operativo: ubuntu14.04 y ubuntu12.04 Versión del kernel: 3.13.0-32-generic Versión de Docker: 1.5.0 y 1.6.2 Queridos amigos, disco duro insuficiente, memoria insuficiente, especialmente si la versión del kernel es demasiado bajo provocará que la ejecución falle. 2. Introducción al espejo Introducción al espejo En este proyecto, se desarrollaron cuatro imágenes: serf-dnsmasqhadoop-basehadoop-masterhadoop-slaveserf-dnsmasq La imagen se instala en base a ubuntu:15.04 (seleccionada porque es la más pequeña, no porque sea la más reciente) serf: serf es una herramienta de gestión de nodos de máquinas distribuidas. Puede descubrir dinámicamente todos los nodos del clúster Hadoop. Instale dnsmasq: dnsmasq es un servidor DNS liviano. Puede proporcionar servicios de resolución de nombres de dominio para clústeres de Hadoop. Cuando se inicia el contenedor, la IP del nodo maestro se pasa a todos los nodos esclavos. Serf comienza inmediatamente después de que se inicia el contenedor. El serfagente en el nodo esclavo descubre inmediatamente el nodo maestro (todos conocen la IP maestra), y el nodo maestro descubre inmediatamente todos los nodos esclavos.

Si Docker puede instalar varias aplicaciones al mismo tiempo Una de las funciones principales de Docker es la capacidad de empaquetar cualquier aplicación, incluido Hadoop, en una imagen de Docker. Este tutorial proporciona pasos detallados para construir rápidamente un clúster Hadoop de múltiples nodos en una sola máquina usando Docker. Después de descubrir problemas con el proyecto actual HadooponDocker, el autor desarrolló una imagen de Hadoop casi mínima y admite la construcción rápida de un clúster de Hadoop con cualquier número de nodos. 1. Información del proyecto GitHub: kiwanlau/hadoop-cluster-docker Usar directamente una máquina para construir un clúster de Hadoop es un proceso bastante doloroso, especialmente para los principiantes. Es posible que estén luchando con este problema incluso antes de comenzar a contar palabras. Y no todo el mundo tiene varias máquinas. Puedes intentar construirlo con varias máquinas virtuales, asumiendo que tienes una máquina súper poderosa. Mi objetivo es ejecutar clústeres de Hadoop en contenedores Docker para que los desarrolladores de Hadoop puedan crear rápida y fácilmente clústeres de Hadoop de múltiples nodos localmente. De hecho, ha habido muchas implementaciones de esta idea, pero ninguna de ellas es ideal; o son demasiado grandes, demasiado lentas de usar o utilizan herramientas de terceros que hacen que su uso sea demasiado complicado. La siguiente tabla enumera algunos proyectos conocidos de HadooponDocker y sus problemas. La página de GitHub del proyecto alvinhenrick/hadoop-mutinode y la dirección del blog del autor son las siguientes: GitHub: Hadoop (YARN) MultinodeClusterwithDocker Blog: Las siguientes dos tablas muestran la comparación de parámetros del proyecto alvinhenrick/hadoop-mutinode y mi kiwenlau/hadoop -clúster-, puede ver que optimicé para: tamaño de imagen más pequeño, tiempo de construcción más rápido, menos capas de imagen, cambio más rápido y más fácil de la cantidad de nodos en el clúster de Hadoop. Además, el proyecto alvinhenrick/hadoop-mutinode requiere la modificación manual de los archivos de configuración de Hadoop y la reconstrucción de los archivos al agregar nodos. Refleje Hadoop-nn-dn y luego modifique el script de inicio del contenedor para lograr la función de agregar nodos. Pero si implemento la automatización a través de un script de shell, puedo reconstruir la imagen hadoop-master en menos de 1 minuto y ejecutarla inmediatamente. El proyecto inicia un clúster Hadoop de 3 nodos de forma predeterminada y admite clústeres Hadoop con cualquier número de nodos. Además, iniciar Hadoop, ejecutar el recuento de palabras y reconstruir la imagen se automatizan mediante scripts de shell. Esto hace que el uso y desarrollo de todo el proyecto sea muy cómodo y rápido. Entorno de desarrollo y prueba Sistema operativo: ubuntu14.04 y ubuntu12.04 Versión del kernel: 3.13.0-32-generic Versión de Docker: 1.5.0 y 1.6.2 Queridos amigos, disco duro insuficiente, memoria insuficiente, especialmente si la versión del kernel es demasiado bajo provocará que la ejecución falle. 2. Introducción al espejo Introducción al espejo En este proyecto, se desarrollaron cuatro imágenes: serf-dnsmasqhadoop-basehadoop-masterhadoop-slaveserf-dnsmasq La imagen se instala en base a ubuntu:15.04 (seleccionada porque es la más pequeña, no porque sea la más reciente) serf: serf es una herramienta de gestión de nodos de máquinas distribuidas. Puede descubrir dinámicamente todos los nodos del clúster Hadoop. Instale dnsmasq: dnsmasq es un servidor DNS liviano. Puede proporcionar servicios de resolución de nombres de dominio para clústeres de Hadoop. Cuando se inicia el contenedor, la IP del nodo maestro se pasa a todos los nodos esclavos. Serf comienza inmediatamente después de que se inicia el contenedor. El serfagente en el nodo esclavo descubre inmediatamente el nodo maestro (todos conocen la IP maestra), y el nodo maestro descubre inmediatamente todos los nodos esclavos.

Luego intercambian información entre sí y todos los nodos conocen la existencia de todos los demás nodos. (Después de que el servidor descubre el nuevo nodo, reconfigurará dnsmasq y luego reiniciará dnsmasq para que dnsmasq pueda resolver los nombres de dominio de todos los nodos en el clúster. Cuantos más nodos agregue, más tardará este proceso, por lo que si el servidor está configurado Si hay muchos nodos de Hadoop, debe probar si serf ha descubierto todos los nodos después de iniciar el contenedor y si DNS puede resolver los nombres de dominio de todos los nodos. Espere un momento antes de iniciar Hadoop. Esta solución la propone SequenceIQ. que se especializa en Docker Ejecute Hadoop en. Instale JDK (OpenJDK) basado en la imagen base de hadoop de la imagen serf-dnsmasq. Instale openssh-server y configure SSH sin contraseña. Instale vim: meshing. Hadoop 2.3.0: instale Hadoop compilado (2.) 2.5.2, 2.6.0, 2.7.0 son anteriores a 2.3.0, por lo que soy demasiado vago para actualizar). Además, consulte mi blog para conocer los pasos para compilar Hadoop. Si necesita volver a desarrollar mi base de hadoop, debe descargar el instalador compilado de hadoop-2.3.0 y colocarlo en el directorio hadoop-cluster-docker/hadoop-base/files. Mi dirección de descarga compilada de hadoop-2.3.0 de 64 bits: Cerrada. Si ssh falla, espere un momento y vuelva a intentarlo, ya que el servidor dns de dnsmasq tarda un tiempo en iniciarse. Una vez que la prueba sea exitosa, ¡puede iniciar el clúster de Hadoop! De hecho, no puedes probarlo, ¡simplemente abre el contenedor y espera pacientemente un minuto! 6. Abra Hadoop./start-hadoop.sh. Después de ssh a esclavo2 en el paso anterior, ¡recuerde regresar al maestro! Hay demasiados resultados en ejecución para ignorarlos y la velocidad de inicio de Hadoop depende del rendimiento de la máquina. 7. Ejecute wordcount./run-wordcount.sh Resultados de ejecución: inputfile1.txt: HelloHadoopinputfile2.txt: HelloDockerwordcount./start-hadoop.sh Resultados de ejecución: inputfile1.txt: HelloHadoopinputfile2.txt.HelloDockerwordcountoutput:Docker1Hadoop1Hello2 La velocidad de ejecución del recuento de palabras El conteo depende del rendimiento de la máquina. Pasos de construcción del clúster Hadoop de N-nodos 1. Para los preparativos, consulte la Parte 2 1 ~ 3: Descargue la imagen, modifique la etiqueta y descargue el código fuente. Tenga en cuenta que no es necesario descargar serf-dnsmasq, pero sí. Es mejor descargar hadoop-base porque hadoop-master está construido sobre hadoop-base. 2. Reconstruya la imagen hadoop-master. /Puede establecer diferentes parámetros enteros positivos para el script resize-cluster.sh 1, 2, 3, 4, 5, 63. Inicie el contenedor. /Puede establecer un número diferente de números enteros como parámetros 1,2,3,4,5,6 para el script resize-cluster.sh. Preferiblemente, este parámetro debe ser el mismo que en el paso anterior :) Si este parámetro es mayor que. el parámetro en el paso anterior significa que es necesario iniciar más nodos y Hadoop no puede reconocerlos... Si este parámetro es más pequeño que el parámetro en el paso anterior, Hadoop pensará que el nodo con menos inicios está colgado. 4. Para trabajos de prueba, consulte la Parte 3 5 ~ 7: Pruebe el contenedor, abra Hadoop y ejecute el recuento de palabras. Tenga en cuenta que si el número de nodos aumenta, primero debe probar el contenedor y luego abrir Hadoop, porque. Es posible que serf no haya encontrado todos los nodos y dnsmasq DNS El servidor indicó que el servicio no se ha configurado.