基于docker的Hadoop-spark集群安装(centos 7系统)

参考博客:https://zhuanlan.zhihu.com/p/421375012

推荐(个人电脑用作实验)配置:4~8G + 8核

使用操作系统 Centos 7,在VMware下进行的安装

步骤:

  1. 拉取大佬弄好的hadoop+spark的docker镜像:docker pull s1mplecc/spark-hadoop:3
  2. 编写docker-compose.yml,共享目录/opt/share到物理机 ~/docker/spark/share,方便修改和传文件
version: '2'

services:
  spark:
    image: s1mplecc/spark-hadoop:3
    hostname: master
    environment:
      - SPARK_MODE=master
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
    volumes:
      - ~/docker/spark/share:/opt/share
    ports:
      - '8080:8080'
      - '4040:4040'
      - '8088:8088'
      - '8042:8042'
      - '9870:9870'
      - '19888:19888'
  spark-worker-1:
    image: s1mplecc/spark-hadoop:3
    hostname: worker1
    environment:
      - SPARK_MODE=worker
      - SPARK_MASTER_URL=spark://master:7077
      - SPARK_WORKER_MEMORY=1G
      - SPARK_WORKER_CORES=1
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
    volumes:
      - ~/docker/spark/share:/opt/share
    ports:
      - '8081:8081'
  spark-worker-2:
    image: s1mplecc/spark-hadoop:3
    hostname: worker2
    environment:
      - SPARK_MODE=worker
      - SPARK_MASTER_URL=spark://master:7077
      - SPARK_WORKER_MEMORY=1G
      - SPARK_WORKER_CORES=1
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
    volumes:
      - ~/docker/spark/share:/opt/share
    ports:
      - '8082:8081'
  1. 使用 docker-compose up -d构建容器和集群,docker ps查看启动的容器:在这里插入图片描述
  2. 使用交互式命令进入容器(docker exec -it {容器名,不用写全称} /bin/bash),修改集群所有节点的 $HADOOP_HOME/etc/hadoop/core-site.xm文件,该镜像没有安装vi和vim编辑器,可以使用sed命令来修改文件,也可以在共享文件中修改后复制。
<configuration>
	<property>
  		<name>fs.defaultFS</name>
  		<value>hdfs://{节点host名}:9000</value>
	</property>
</configuration>

比如说:在这里插入图片描述

  1. 根据官方文档,第一次启动HDFS需要格式化namenode节点:
    文档:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html#Purpose:~:text=The%20first%20time%20you%20bring%20up%20HDFS%2C%20it%20must%20be%20formatted.%20Format%20a%20new%20distributed%20filesystem%20as%20hdfs%3A
$HADOOP_HOME/bin/hdfs namenode -format
  1. 在master节点启动集群
 /opt/start-hadoop.sh
  1. 启动datanode节点:
$HADOOP_HOME/bin/hdfs --daemon start datanode
  1. 在master节点使用jps查看java进程,确保namenode, datanode,SecondaryNameNode都成功启动:在这里插入图片描述

  2. 查看hdfs的datanode是否上线,使用 hdfs fsck / :在这里插入图片描述

  3. 上传文件到hdfs和使用spark访问hdfs,可参考大佬的博客:https://zhuanlan.zhihu.com/p/421375012#:~:text=resourcemanager%0AStarting%20nodemanagers-,%E5%90%91%20HDFS%20%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6,-%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E5%B0%86

更多推荐