(精)我用1秒搭建了hadoop3节点集群,占用一个1G内存(适合初学者)

这是我参与更文挑战的第24天,活动详情查看: 更文挑战
?

最近接触到hadoop,想要最快速搭建一个hadoop集群,于是我就开始进入到官网,发现它是支持docker部署的,便有了本文。

安装依赖

docker依赖:

yum install -y yum-utils device-mapper-persistent-data lvm2

复制代码

添加软件源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码

安装docker-ce

yum -y install docker
复制代码

启动docker服务

systemctl start docker
复制代码

查询是否安装成功

docker version
systemctl status docker

复制代码

安装docker-compose依赖

安装依赖

yum -y install epel-release
yum -y install python-pip
复制代码

安装docker-compose

yum install docker-compose
docker-compose version
复制代码

正式开装hadoop集群

新建docker-compose的yml文件

vim docker-compose.yml
复制代码

内容如下

version: "2"

services:
  namenode:
    image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
    container_name: namenode
    volumes:
      - hadoop_namenode:/hadoop/dfs/name
    environment:
      - CLUSTER_NAME=test
    env_file:
      - ./hadoop.env
    ports:
      - "9999:50070"
  
  resourcemanager:
    image: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
    container_name: resourcemanager
    depends_on:
      - namenode
      - datanode1
      - datanode2
    env_file:
      - ./hadoop.env
    ports:
      - "8088:8088"
  historyserver:
    image: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
    container_name: historyserver
    depends_on:
      - namenode
      - datanode1
      - datanode2
    volumes:
      - hadoop_historyserver:/hadoop/yarn/timeline
    env_file:
      - ./hadoop.env
    ports:
      - "8188:8188"
  
  nodemanager1:
    image: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
    container_name: nodemanager1
    depends_on:
      - namenode
      - datanode1
      - datanode2
    env_file:
      - ./hadoop.env
    ports:
      - "8042:8042"
  
  datanode1:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    container_name: datanode1
    depends_on:
      - namenode
    volumes:
      - hadoop_datanode1:/hadoop/dfs/data
    env_file:
      - ./hadoop.env
  
  datanode2:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    container_name: datanode2
    depends_on:
      - namenode
    volumes:
      - hadoop_datanode2:/hadoop/dfs/data
    env_file:
      - ./hadoop.env
  
  datanode3:
    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
    container_name: datanode3
    depends_on:
      - namenode
    volumes:
      - hadoop_datanode3:/hadoop/dfs/data
    env_file:
      - ./hadoop.env

volumes:
  hadoop_namenode:
  hadoop_datanode1:
  hadoop_datanode2:
  hadoop_datanode3:
  hadoop_historyserver:
复制代码

可以简单看到,我下了一个hadoop_namenode,3个hadoop_datanode和一个hadoop_historyserver

在当前目录下,创建一个配置文件

vi hadoop.env
复制代码

内容如下

CORE_CONF_fs_defaultFS=hdfs://namenode:8020
CORE_CONF_hadoop_http_staticuser_user=root
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*

HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false

YARN_CONF_yarn_log___aggregation___enable=true
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_timeline___service_enabled=true
YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true
YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
YARN_CONF_yarn_resourcemanager_hostname=resourcemanager
YARN_CONF_yarn_timeline___service_hostname=historyserver
YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032
YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030
YARN_CONF_yarn_resourcemanager_resource___tracker_address=resourcemanager:8031
复制代码

注意我们是安装hadoop2.X的版本,与1.X的最大区别是,2.X版MapReduce中资源调度的任务解耦合出来交 Yarn 来管理。

最后一步

docker-compose up -d
复制代码

我们到界面看一下,可以看到都安装好了。

图片.png

输入网址: ip:8088 (8088需要开放才能访问哦,本地关闭防火墙,阿里云服务器开放8088,9999端口)

我们看看资源管理器

图片.png

我们看看节点信息:

图片.png

在容器里操作hdfs文件

hadoop fs -mkdir /hdfs #在根目录下创建hdfs文件夹
hadoop fs -ls / #列出跟目录下的文件列表
hadoop fs -mkdir -p /hdfs/d1/d2   级联创建目录
hadoop fs -ls -R /   级联列出目录
echo "hello hdfs" >>local.txt  上传本地文件到HDFS
hadoop fs -put local.txt /hdfs/d1/d2

hadoop fs -cat /hdfs/d1/d2/local.txt   查看HDFS中文件的内容
hadoop fs -get /hdfs/d1/d2/local.txt   下载hdfs上文件的内容
hadoop fs -rm /hdfs/d1/d2/local.txt   
hadoop fs -ls /hdfs  删除hdfs中目录  
hadoop fs -chown admin /hdfs/d1 #修改文件所属用户为admin  修改文件所属的用户
hadoop fs -ls /hdfs

hadoop fs -chgrp admin /hdfs/d1 修改文件的用户组

查看所有命令方式:
hadoop fs
复制代码

基础基本上就讲到这里,下一篇文章我会深入讲解读写、灾备恢复、mapreduce等。

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞? 求关注❤️ 求分享? 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享