利用Docker快速部署hadoop、hive和spark

一、配置文件yml

1.docker-compose.yml

version: '3.4' 
services:
  namenode:
    image: test/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
      - 5005:5005

  resourcemanager:
    image: test/hadoop-resourcemanager:1.1.0-hadoop2.8-java8
    container_name: resourcemanager
    environment:
      - CLUSTER_NAME=test
    env_file:
      - ./hadoop-hive.env
    ports:
      - 8088:8088
    depends_on: 
      - datanode

  historyserver:
    image: test/hadoop-historyserver:1.1.0-hadoop2.8-java8
    container_name: historyserver
    environment:
      - CLUSTER_NAME=test
    env_file:
      - ./hadoop-hive.env
    ports:
      - 8188:8188

  datanode:
    image: test/hadoop-datanode:1.1.0-hadoop2.8-java8
    container_name: datanode
    depends_on: 
      - namenode
    volumes:
      - ./data/datanode:/hadoop/dfs/data
    env_file:
      - ./hadoop-hive.env
    ports:
      - 50075:50075
      - 50010:50010

  nodemanager:
    image: test/hadoop-nodemanager:1.1.0-hadoop2.8-java8
    container_name: nodemanager
    hostname: nodemanager
    environment:
      - CLUSTER_NAME=test
    env_file:
      - ./hadoop-hive.env
    ports:
      - 8042:8042

  hive-server:
    image: test/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: test/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的元数据存储到postgresql
  hive-metastore-postgresql:
    image: test/hive-metastore-postgresql:2.1.0
    container_name: hive-metastore-postgresql
    ports:
      - 5432:5432
    #win10直接挂载存在权限问题,只能使用name volume
    volumes:
      - hive-metastore-postgresql:/var/lib/postgresql/data

  spark-master:
    image: test/spark-master:2.1.0-hadoop2.8-hive-java8
    container_name: spark-master
    hostname: spark-master
    volumes:
      - ./copy-jar.sh:/copy-jar.sh
    ports:
      - 8888:8080
      - 7077:7077
    env_file:
      - ./hadoop-hive.env
    volumes:
      - ./hive-site.xml:/spark/conf/hive-site.xml   #spark连接hive的配置文件

  spark-worker:
    image: test/spark-worker:2.1.0-hadoop2.8-hive-java8
    container_name: spark-worker
    depends_on:
      - spark-master
    environment:
      - SPARK_MASTER=spark://spark-master:7077
    ports:
      - "8181:8081"
    env_file:
      - ./hadoop-hive.env
      
  mysql-server:
    image: mysql:5.7
    container_name: mysql-server
    ports:
      - "3606:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - ./data/mysql:/var/lib/mysql   #数据挂载到当前目录下的data/mysql文件夹

  elasticsearch:
    image: elasticsearch:7.5.2
    container_name: elasticsearch
    environment:
#      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - es1:/usr/share/elasticsearch/data
      - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      
  kibana:
    image: kibana:7.5.2
    container_name: kibana
    ports:
      - "5601:5601"

  redis:
    image: redis
    container_name: redis
    ports:
      - "6379:6379"
  
  server:
    image: openjdk:8-jre-slim
    command: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar /app.jar
    ports:
      - "8000:8080"
      - "5555:5005"
    volumes:
      - ./application.yml:/application.yml:ro
      - ./spark-itags-1.0-SNAPSHOT.jar:/app.jar:ro
    environment:
      - TZ=Asia/Shanghai     #配置容器时区,默认UTC
      - spring.profiles.active=development
    restart: "no"
    depends_on:
      - redis

volumes:
  hive-metastore-postgresql:
    driver: local
  es1:
    driver: local

二、执行脚本

1.启动脚本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
docker-compose -f docker-compose.yml up -d resourcemanager
docker-compose -f docker-compose.yml up -d nodemanager
docker-compose -f docker-compose.yml up -d historyserver
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
#选取并输出本机ip
my_ip=`ip route get 1|awk '{print $NF;exit}'`      #$NF 表示的最后一个Field(列),即输出最后一个字段的内容
echo "Namenode: http://${my_ip}:50070"
echo "Datanode: http://${my_ip}:50075"
echo "Spark-master: http://${my_ip}:8080"
docker-compose exec spark-master bash -c "./copy-jar.sh && exit"

2.关闭脚本stop.sh

#!/bin/bash
docker-compose stop
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker是一种容器化技术,用于创建、部署和管理应用程序的容器。Hadoop是一个分布式计算框架,用于处理大数据集并在集群中进行高速计算。HBase是一个面向列的分布式数据库,用于存储和管理大规模的结构化数据。Hive是一个基于Hadoop的数据仓库基础架构,用于提供简化的查询和分析大数据的能力。而Spark是一个高级的分布式计算系统,用于加速大规模数据处理和分析。 在使用这些技术时,Docker可以用于快速搭建和部署容器化的Hadoop、HBase、HiveSpark环境。使用Docker容器,我们可以轻松地在任何机器上部署这些组件,而无需担心环境配置的问题。 Hadoop是一个开源的分布式计算框架,它可以容纳大规模数据并以可靠的方式在集群中进行处理。通过用Docker容器来运行Hadoop,我们可以更快地搭建和管理Hadoop集群,并且容易进行监控和维护。 HBase是一个分布式数据库系统,以表的形式存储数据,并提供高效的读写操作。通过Docker容器,我们可以轻松地部署HBase集群,并且可以根据需求进行水平扩展,以满足不同规模的数据存储需求。 Hive是一个基于Hadoop的数据仓库基础架构,它提供了类似于SQL的查询接口,方便用户进行大规模数据的查询和分析。使用Docker容器,我们可以轻松地搭建Hive环境,并通过对容器进行配置和管理,优化Hive的性能。 Spark是一个高级的分布式计算系统,它强调内存计算和迭代计算的能力,从而加速大规模数据处理和分析。通过Docker容器,我们可以快速部署和管理Spark集群,并且可以根据需求进行资源配置和任务调度,以实现高性能和高吞吐量的数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝域时空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值