栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【Hadoop】基于Docker搭建完全分布式集群

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Hadoop】基于Docker搭建完全分布式集群

参考资料:http://dblab.xmu.edu.cn/blog/1233/

注:本篇博文的实验需要一个具有Hadoop集群环境的Docker镜像。

文章目录
  • 运行环境
  • 1. 使用Docker开启三个容器
  • *2. 配置ip映射 测试ssh
  • 3. 修改Hadoop的配置文件
    • 3.1 hadoop-env.sh
    • 3.2 core-site.xml
    • 3.3 hdfs-site.xml
    • 3.4 mapred-site.xml
    • 3.5 yarn-site.xml
    • 3.6 workers
    • 3.6 复制配置文件
    • 3.7 检验配置文件是否复制成功
  • 4. 启动 Hadoop集群
    • 4.1 Master节点初始化名称节点
    • 4.2 在Master节点启动集群
    • 4.3 JPS 查询结果
    • 4.4 通过Web访问集群
  • 5. 运行分布式实例
    • 5.1 在HDFS创建用户目录
    • 5.2 上传本地hadoop配置文件到HDFS
    • 5.3 运行 MapReduce 作业
    • 5.4 查询结果
  • 6.关闭集群

运行环境

Ubuntu20.04

Hadoop3.3.1

JDK8

1. 使用Docker开启三个容器


本次测试的节点介绍

节点名称作用
master主节点
slave1副节点
slave2副节点

使用已具有Hadoop集群环境的镜像创建容器、一个终端负责控制一个容器

主节点

sudo docker run -it -h master --name master ubuntu/hadoop

副节点1

sudo docker run -it -h slave1 --name slave1 ubuntu/hadoop

副节点2

sudo docker run -it -h slave2 --name slave2 ubuntu/hadoop

*2. 配置ip映射 测试ssh

接下来的操作需对三个节点同时进行

每次容器重新启动后都需要配置hosts

vim etc/hosts

根据查询可知,三个节点的IP信息如下表所示:

节点名称映射的IP
master172.17.0.2
slave1172.17.0.3
slave2172.17.0.4

为了使他们三个节点能互相连接,需要在每个的配置文件里加上另外两个的IP,如下图所示

修改好后保存退出

测试SSH

以Master节点为例,如果它能连接slave1和slave2,说明ssh功能完好(对slave1、slave2执行同样的操作,这里略过)

ssh slave1

exit

ssh slave2

exit


3. 修改Hadoop的配置文件

搭建Hadoop集群需要修改的配置文件有如下3个。因为已经开启了3个节点,这里采取的策略是先在master节点修改好配置文件,接着将该所有配置文件使用 cp命令复制到其他两个节点的对应目录下。注:表示集群节点的配置文件(workers) 需要单独修改

文件都在 ./etc/hadoop 的位置

  • hadoop-env.sh 配置Hadoop运行相关的环境变量,比如设置JDK路径、集群各个进程的用户等等
  • core-site.xml设置hadoop临时目录、HDFS的远程地址
  • hdfs-site.xml 对于HDFS,名称/数据节点存放位置、文件副本个数等
  • mapred-site.xml 设置MapReduce参数
  • yarn-site.xml 配置集群资源管理系统参数
  • workers 指定集群中工作的副节点

修改配置时,只添加内容,其他内容原封不变。

3.1 hadoop-env.sh
export JAVA_HOME=/usr/local/jdk8
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

3.2 core-site.xml


        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
 
 
        fs.defaultFS
        hdfs://master:9000


3.3 hdfs-site.xml
 
        dfs.namenode.name.dir
        file:/usr/local/hadoop/namenode_dir



        dfs.datanode.data.dir
        file:/usr/local/hadoop/datanode_dir



        dfs.replication
        3 

3.4 mapred-site.xml

         
                mapreduce.framework.name
                yarn
        
     
        
                yarn.app.mapreduce.am.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
        
        
                mapreduce.map.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
        
        
                mapreduce.reduce.env
                HADOOP_MAPRED_HOME=/usr/local/hadoop
        

3.5 yarn-site.xml



    
        yarn.nodemanager.aux-services
        mapreduce_shuffle 
 

 
        yarn.resourcemanager.hostname
        master

    

至此,已修改好了统一的配置文件,接下来可以把master节点的配置目录复制到其他节点

3.6 workers

该配置文件负责设置Hadoop集群的从节点

3.6 复制配置文件
scp -rq /usr/local/hadoop/etc/hadoop root@slave1:/usr/local/hadoop/etc/
scp -rq /usr/local/hadoop/etc/hadoop root@slave2:/usr/local/hadoop/etc/

3.7 检验配置文件是否复制成功

分别在 slave1和slave2节点检验

cat /usr/local/hadoop/etc/hadoop/yarn-site.xml

出现配置信息则说明拷贝成功

4. 启动 Hadoop集群
4.1 Master节点初始化名称节点

该操作只有在第一次启动集群时执行,之后再次启动集群无需初始化,否则会出错

cd /usr/local/hadoop
bin/hdfs namenode -format

4.2 在Master节点启动集群
cd /usr/local/hadoop
sbin/start-all.sh

4.3 JPS 查询结果

分别在三个节点输入 jps 命令查询当前的进程

若启动正常,各节点进程情况如下:

节点名称进程个数进程名
master4Jps、ResourceManager、SecondaryNameNode、NameNode
slave13Jps、DataNode、NodeManager
slave23Jps、Datanode、NodeManager

4.4 通过Web访问集群

URL: masterIp:8088/cluster

我这里的地址是 http://172.17.0.2:8088/cluster

5. 运行分布式实例

接下来的操作均在 Master节点进行

5.1 在HDFS创建用户目录
cd /usr/local/hadoop/bin
./hdfs dfs -mkdir -p /user/hadoop/input
./hdfs dfs -ls /user/hadoop

5.2 上传本地hadoop配置文件到HDFS
cd /usr/local/hadoop/bin
./hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml /user/hadoop/input
./hdfs dfs -ls /user/hadoop/input

上传后可在外部通过web查询集群状态

http://172.17.0.2:8088/cluster/nodes

5.3 运行 MapReduce 作业
cd /usr/local/hadoop/bin
./hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'


5.4 查询结果
cd /usr/local/hadoop/bin
./hdfs dfs -cat /user/hadoop/output/*

至此,若出现上图结果,则说明执行成功!

6.关闭集群

以下操作只需在 Master节点上执行

cd /usr/local/hadoop/sbin
./stop-all.sh

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号