El nodo del clúster mysql de Docker se puede crear normalmente, pero el host mysql no se puede conectar normalmente.
Ambari es un proyecto de código abierto de Apache que ayuda a los usuarios a implementar, administrar y monitorear fácilmente entornos de clúster Hadoop a través de páginas GUI. Los componentes de Hadoop compatibles con Ambari incluyen HDFS, Hive, HBase, Spark, Yarn, etc. HortonWorks utiliza oficialmente Ambari para completar la instalación, administración y monitoreo de su propia suite HDP. Además de los componentes preestablecidos, Ambari también admite la instalación de componentes personalizados y admite API RESTful. Luego puede llamar a Ambari a través de la línea de comando para completar algunas tareas de automatización.
Este artículo se divide en dos partes. La primera parte presenta cómo implementar Ambari en un entorno de virtualización Docker; la segunda parte presenta cómo implementar y administrar clústeres de Hadoop basados en Ambari.
#### Información del entorno
* Distribución de Docker: Docker para Mac
* Versión de Docker: 17.06.2-ce
* Sistema operativo del contenedor Docker: Ubuntu 14.04
* Versión de Ambari: 2.5.2.0
Preparación del entorno Docker
Extracción de la imagen de Docker: Ejecute el comando docker pull ubuntu en el host: 14.04 Obtenga la imagen de Ubuntu del almacén remoto y también puede obtener las imágenes de otros sistemas operativos. Este artículo toma Ubuntu como ejemplo
Inicie el contenedor Docker: ejecute el siguiente comando para iniciar el contenedor. en la imagen de ubuntu:14.04:
docker run -itd --name ambari_new -p 8080:8080 -p 3306:3306 -v /Users/yuxiaolei/Workspace/dockerShared:/dockerShared ubuntu:14.04 /bin /bash
Debido a que Ambari ocupa el puerto 8080 al iniciar la aplicación web, para acceder a la página de Ambari desde el host Docker, debe configurar la asignación de puertos usando el parámetro -p;
Como novato, implementé Ambari dentro del contenedor. Después de implementar Ambari en el contenedor, descubrí que el puerto 8080 para la página web y el puerto 3306 para MySQL (opcional) no están expuestos al host Docker, por lo que no puedo iniciar sesión en Ambari desde el host a través del navegador, así que Tengo que encontrar una manera de hacerlo ahora. Tenga estos puertos abiertos en el contenedor.
Hay dos formas de hacer esto:
1) Si el host es un sistema Linux, modifique el firewall de iptables para especificar las reglas de asignación de puertos;
2) Si no es un sistema Linux, puede enviar el contenedor en Ambari como una nueva imagen y luego crear un nuevo contenedor basado en esa imagen. En este punto, puede agregar el parámetro -p al comando de ejecución de Docker para especificar la asignación de puertos.
Hay otro problema. Ambari almacena datos en la base de datos y admite bases de datos como MySQL y PostgreSQL. Después de instalar MySQL en el contenedor, encontrará que MySQL no se puede iniciar en el nuevo contenedor creado de acuerdo con el. paso anterior, ejecutar el comando /etc/init.d/mysql restart no puede iniciarlo, y los nuevos contenedores creados de acuerdo con el comando /etc/init.d/mysql restart no se pueden iniciar en /etc/init.d/mysql restart. . El comando de reinicio /etc/init.d/mysql no pudo iniciarse, el archivo de registro /var/log/mysql/error.log mostró el error 170802 14:02:59 [ERROR] Error fatal: no se puede abrir y bloquear la tabla privilegiada: obtenido del error 140 del motor de almacenamiento. Después de verificar en línea, debe resolver el problema agregando el parámetro -v /var/lib/mysql al crear el contenedor para declarar la ruta de almacenamiento de datos MySQL como un volumen de datos.
Después de iniciar el contenedor, ejecute el comando docker exec -it ambari /bin/bash para ingresar al contenedor.
Instalar Ambari
Configurar el código fuente del repositorio para Ubuntu:
En China, se recomienda utilizar el código fuente de Alibaba Cloud y usar vim para abrir / en el archivo de la cuenta raíz, etc/apt/sources.list.
Abra el archivo /etc/apt/sources.list con vim en la cuenta raíz, elimine todo el contenido del archivo y luego pegue el siguiente contenido:
deb /ubuntu/ multiverso del universo restringido principal confiable
deb /ubuntu/ trusty-security multiverso principal del universo restringido
deb /ubuntu/ trusty- actualiza el multiverso principal del universo restringido
deb /ubuntu/ trusty- Maestro propuesto Multiverso del Universo Restringido
deb /ubuntu/ trusty- backports Multiverso del Universo Restringido Maestro
deb-src /ubuntu/ Trusty Multiverso del Universo Restringido Maestro
p>deb- src /ubuntu/ multiverso principal del universo restringido de seguridad
deb-src /ubuntu/ multiverso del universo restringido principal de trusty-updates
deb- src/ubuntu/ universo restringido principal propuesto por Trusty multiverse
deb-src /ubuntu/ multiverso del universo restringido principal propuesto por trusty
deb-src /ubuntu/ multiverso del universo restringido principal trusty-backports
Ejecute el comando apt-get update para completar la actualización de la lista de software
Instala el software del que depende Ambari
apt-get install software-properties-common p>
sudo add -apt-repository ppa.webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
Una vez completada la instalación, agregue el comando `export JAVA_HOME=/usr/lib/jvm/java-8-oracle` al final ~/.bashrc del archivo para configurar las variables de entorno JAVA/HOME.
Crear base de datos ambari; use ambari; OTORGAR TODOS LOS PRIVILEGIOS EN *.* A 'root'@'' IDENTIFICADO POR 'root_password' CON OPCIÓN DE OTORGAR PRIVILEGIOS; Los datos de Ambari se almacenan en una base de datos MySQL, por lo que se creó una base de datos separada para Ambari y se le asignó el control total.
Dado que los datos de Ambari se almacenan en una base de datos MySQL, se ha creado una base de datos separada para Ambari y se le han asignado permisos de control total. Nota: Se supone que la contraseña del usuario raíz de la base de datos MySQL es: root/contraseña;
Modifique `/etc/mysql/my.conf`, comente `skip-external-locking` y asegúrese de que `bind-address = 0.0.0.0.0` esté configurado para permitir que Ambari se ejecute en la base de datos MySQL, para que Ambari pueda ejecutarse en la base de datos MySQL con permisos de control total. 0.0.0` está configurado para permitir que hosts remotos accedan a MySQL.
Ejecute el comando `/etc/init.d/mysql restart` para reiniciar el servicio MySQL.
Servidor de sincronización de hora ntp: ejecute el comando apt-get install ntp para instalar el servidor de sincronización de hora ntp para que los relojes de cada nodo en el entorno del clúster sean consistentes; ejecute el comando sudo service ntp restart para reiniciar; el servicio ntp.
MySQL: ejecute el comando apt-get install mysql-server para instalar el servidor MySQL una vez completada la instalación, ejecute el comando mysql -uroot -proot para ingresar al cliente MySQL y ejecute el siguiente código SQL. :
Oracle JDK: Ejecute los siguientes comandos uno por uno para agregar el equipo WebUpd8 (/ambari/ubuntu14/2.
Ejecute el comando apt-key adv --recv-keys --keyserverkeyserver.ubuntu.com B9733A7A07513CAD para confiar en la firma GPG del almacén remoto
Ejecute el comando apt-get update para actualizar la fuente de Ambari
Ejecute el comando apt-get install ambari para instalar el paquete de software Ambari Dado que el paquete de software es grande (más de 700 MB), se requiere paciencia aquí. Espere, pero apt-get admite descargas de punto de interrupción y la descarga no comenzará desde el principio después de volver a ejecutar el comando. la terminal de red
Configurar Ambari:
Ejecutar el comando mysql -uroot -proot para ingresar a MySQL En el lado del cliente, ejecutar el comando source ambari para ingresar a la base de datos de Ambari, ejecutar el comando source /var/lib/ambari-server/resources/Ambarii-DDL-MySQL-CREATE.sql para completar la inicialización de la tabla de la base de datos de Ambari;
Ejecutar El comando ambari-server setup inicia la operación de configuración de arranque de Ambari y configurarlo de acuerdo con las instrucciones. Cabe señalar que Ambari no debe descargar el JDK de la red. Debe seleccionar una ruta personalizada e ingresar /usr/lib/jvm/java-8. ;
Iniciar Ambari: ejecute el comando ambari-server start. La ruta de almacenamiento del registro de inicio es /var/log/ambari-server/ambari-server.
log
Después de comenzar, dado que hemos realizado el mapeo de puertos del contenedor Docker antes, podemos abrir el navegador en el host e ingresar http://localhost:8080 para acceder a la página de inicio de sesión de Ambari.
El nombre de usuario y la contraseña de inicio de sesión son admin. Después de iniciar sesión, podrá ver la página de inicio de Ambari, como se muestra a continuación:
{ active_img
.