El entorno de big data creado por Docker, inicio y parada con un clic, el
código no se mueve, el entorno primero
Soy un fan de Docker. Cuando estaba aprendiendo tecnologías relacionadas con big data, se me ocurrió una idea:
¡Cree un entorno de desarrollo de big data con Docker!
¿Cuáles son los beneficios de hacer esto?
Siempre que tenga este archivo de descripción de orquestación de contenedor docker-compose.yml, puedo iniciar mi entorno de big data en cualquier máquina donde esté instalado el software de la ventana acoplable.
Lo que se hace de una vez por todas, ¿no es el objetivo que los programadores hacemos todos los días y por el que nos esforzamos?
¿Cómo hacer?
Busqué en todos los blogs y publicaciones nacionales, pero no encontré una respuesta adecuada.
Solo puedo hacerlo yo mismo.
docker hub
Primero voy al docker hub. Esta es la versión docker de github.
Busqué muchas palabras clave como Hadoop, Spark, etc. y encontré una empresa;
El entorno de big data creado por Docker, inicio y detención con un clic
Esta empresa convirtió casi todos los componentes de big data en una imagen de Docker. Y está muy detallado y dividido en roles. Es realmente genial.
Por ejemplo, la imagen que ve ahora es la imagen de la ventana acoplable que hizo para el rol de namenode en Hadoop. Será especialmente fácil si lo empaqueta y personaliza.
Así que busqué el componente de big data que quería en su Registro.
Hadoop
Hive
Spark
fácil, todo encontrado.
máquina virtual
Después del cableado, necesitamos instalar Docker en la máquina virtual.
¿Qué más necesita una máquina virtual?
Déjame hablar de ello. Instala una máquina virtual. Windows no es conveniente. (Los amigos de Mac pueden pasar).
Para la máquina virtual, uso virtual box y ubuntu instalado.
Luego comencé a instalar Docker.
Docker instalado también necesita instalar su hermano gemelo, docker-compose
El entorno de big data creado por Docker, inicia y detiene con un clic
docker-compose.yml
docker-compose facilita la orquestación de contenedores docker.
docker-compose.yml registra cómo organizar el proceso. ¡Es un archivo de descripción!
¡El siguiente es el archivo docker-compose.yml de mi entorno de big data!
version: '2'
services:
namenode:
image: bde2020/hadoop-namenode:1.1.0-hadoop2.8-java8
container_name: namenode
volumes:
- ./data/namenode:/hadoop/dfs/name
environment:
- CLUSTER_NAME=test
env_file:
- ./hadoop-hive.env
ports:
- 50070:50070
- 8020:8020
datanode:
image: bde2020/hadoop-datanode:1.1.0-hadoop2.8-java8
depends_on:
- namenode
volumes:
- ./data/datanode:/hadoop/dfs/data
env_file:
- ./hadoop-hive.env
ports:
- 50075:50075
hive-server:
image: bde2020/hive:2.1.0-postgresql-metastore
container_name: hive-server
env_file:
- ./hadoop-hive.env
environment:
- "HIVE_CORE_CONF_javax_jdo_option_ConnectionURL=jdbc:postgresql://hive-metastore/metastore"
ports:
- "10000:10000"
hive-metastore:
image: bde2020/hive:2.1.0-postgresql-metastore
container_name: hive-metastore
env_file:
- ./hadoop-hive.env
command: /opt/hive/bin/hive --service metastore
ports:
- 9083:9083
hive-metastore-postgresql:
image: bde2020/hive-metastore-postgresql:2.1.0
ports:
- 5432:5432
volumes:
- ./data/postgresql/:/var/lib/postgresql/data
spark-master:
image: bde2020/spark-master:2.1.0-hadoop2.8-hive-java8
container_name: spark-master
ports:
- 8080:8080
- 7077:7077
env_file:
- ./hadoop-hive.env
spark-worker:
image: bde2020/spark-worker:2.1.0-hadoop2.8-hive-java8
depends_on:
- spark-master
environment:
- SPARK_MASTER=spark://spark-master:7077
ports:
- "8081:8081"
env_file:
- ./hadoop-hive.env
mysql-server:
image: mysql:5.7
container_name: mysql-server
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=zhangyang517
volumes:
- ./data/mysql:/var/lib/mysql
elasticsearch:
image: elasticsearch:6.5.3
environment:
- discovery.type=single-node
ports:
- "9200:9200"
- "9300:9300"
networks:
- es_network
kibana:
image: kibana:6.5.3
ports:
- "5601:5601"
networks:
- es_network
networks:
es_network:
external: true
Más tarde tuve que usar elasticsearch y kibana, así que los agregué directamente. Es realmente conveniente.
Lo más importante es que puede compartir fácilmente con sus amigos, buenos amigos.
A continuación, debemos escribir un script de inicio y un script de parada. De esta manera, se puede realizar el arranque y la parada con una sola tecla.
run.sh
#! / bin / bash
docker-compose -f docker-compose.yml up -d namenode hive-metastore-postgresql
docker-compose -f docker-compose.yml up -d datanode hive-metastore
sleep 5
docker-compose -f docker-compose.yml up -d hive-server
docker-compose -f docker-compose.yml up -d spark-master spark-worker
docker-compose -f docker-compose.yml up -d mysql-server
#docker-compose -f docker-compose.yml up -d elasticsearch
#docker-compose -f docker-compose.yml up -d kibana
my_ip=`ip route get 1|awk '{print $NF;exit}'`
echo "Namenode: http://${my_ip}:50070"
echo "Datanode: http://${my_ip}:50075"
echo "Spark-master: http://${my_ip}:8080"
stop.sh
#!/bin/bash
docker-compose stop
Mira el efecto:
El entorno de big data creado por Docker tiene un inicio, una parada y un
inicio con un solo clic . Verificar