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

Day02 Hadoop分布式集群搭建步骤

Day02 Hadoop分布式集群搭建步骤

Day02 Hadoop分布式集群搭建步骤

文章目录

Day02 Hadoop分布式集群搭建步骤

一、安装jdk和hadoop环境二、配置集群前的准备工作三、Hadoop节点分配四、配置HDFS

core-site.xmlhdfs-site.xml(与core-site.xml在同级目录)mapred-site.xml(同目录)yarn-site.xml(同级目录)配置同步 五、集群启动与关闭六、其他配置

配置免密登录not set 报错解决使用群起、群闭 七、脚本记录

myjpsstart-clustertongshitongbu

一、安装jdk和hadoop环境

本文所描述的分布式集群搭建步骤可以使用虚拟机进行同样也可以使用云服务器的方式进行,所以需要有一些准备工作,

虚拟机软件(可以使用VMware Workstation Pro)同一内网的云服务器(相互可以内部ping通)

以上两个二选一即可。

详细步骤:

    安装centos7.5系统(实际笔者建议安装server版本,节约些内存)

    这个自己选择进行安装,配置好密码。笔者将在文末提供ISO的链接。

    使用root权限登录系统,在根目录下的opt目录中创建两个目录,一个soft,另一个module。Soft目录用于存放压缩文件,module目录用于存放解压后的文件。

    mkdir /opt/soft /opt/module
    

    上传JDK以及Hadoop的压缩包到/opt/soft(注意:现目前用户是否是root用户)

    如果使用虚拟机并centos为桌面版的话可以直接从windows拖入虚拟机内linux中,如果是云服务器或server版本centos的话可以使用MobaXterm进行ssh连接,该软件自带Sftp功能,可以直接拖入文件到linux中。

    将JDK以及Hadoop解压到module中。

tar -zxvf /opt/soft/jdk-8u121-linux-x64.tar.gz -C /opt/module
tar -zxvf /opt/soft/hadoop-3.1.3.tar.gz -C /opt/module

    配置环境变量,在/etc/profile最后添加以下内容:

    vim /etc/profile
    

    按字母i

    箭头调整光标到最后输入

    JAVA_HOME=/opt/module/jdk1.8.0_121
    HADOOP_HOME=/opt/module/hadoop-3.1.3
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME HADOOP_HOME PATH
    

    按ESC后输入wq!保存退出

     source /etc/profile
    
    
二、配置集群前的准备工作

    创建一个新用户(如果已经存在新用户,该步骤可以省略)

    useradd tgmmmmmmmm(你想要的用户名)
    passwd tgmmmmmmmm(为你的用户创建密码)
    

    给该用户root权限

    vim /etc/sudoers
    

    关闭防火墙

    systemctl stop firewalld	停止防火墙
    systemctl disable firewalld	永久禁止防火墙开机自启
    

    把opt目录下soft目录以及module目录交给普通用户*(我的是tgmmmmmmmm)*

    chown -R tgmmmmmmmm:tgmmmmmmmm /opt/soft /opt/module
    

    克隆虚拟机,保证至少有三台机器运行

    保证3台机器能够相互通信,也就是需要配置/etc/hosts,在此之前,需要把主机名更改为不同名字,如hadoop101,hadoop102,hadoop103。

    (1)最好配置为静态分配IP,避免因为虚拟机被分配IP改变重新配置,见文章**linux下设置静态ip**。

    (2)更改主机名的文件在/etc/hostname,将原有名字全部删除,并写入新的名字,保存并退出,再重启。

    (3)将每台机器的ip地址复制,粘贴到/etc/hosts文件中,并在后方写入对应的主机名,如下图:

三、Hadoop节点分配
    集群的三大框架:

    如何避免单点故障:只需要咱们合理的分配节点在集群的机器中(均衡搭配)。

Hadoop101: namenode datanode nodemanager

Hadoop102: resourcemanager datanode nodemanager

Hadoop103: secondarynamenode datanode nodemanager

也就是说,namenode作为hdfs的关键,放置在了hadoop101,而resourcemanager作为yarn的关键,放置在了hadoop102.

四、配置HDFS core-site.xml
    要启动HDFS,首先需要配置core-site.xml文件

(该文件位于/opt/module/hadoop-3.1.3/etc/hadoop/)

​ 在文件中的标签中添加以下配置


	fs.defaultFS
	hdfs://hadoop101:8020



	hadoop.tmp.dir
	/opt/module/hadoop-3.1.3/data



	hadoop.http.staticuser.user
	tedu



	hadoop.proxyuser.tedu.hosts
	*


	hadoop.proxyuser.tedu.groups
	*

    **格式化namenode(**自动创建hadoop临时目录)

    hadoop namenode -format
    

    启动namenode和datanode节点(启动hdfs)

    hadoop-daemon.sh start namenode
    hadoop-daemon.sh start datanode
    
hdfs-site.xml(与core-site.xml在同级目录)

        dfs.namenode.http-address
        hadoop101:9870
 
        
 
        dfs.namenode.secondary.http-address
        hadoop103:9868
 
mapred-site.xml(同目录)

        mapreduce.framework.name
        yarn



    mapreduce.jobhistory.address
    hadoop102:10020




    mapreduce.jobhistory.webapp.address
    hadoop102:19888

yarn-site.xml(同级目录)
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle


    
        yarn.resourcemanager.hostname
        hadoop102


    
        yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME


    
        yarn.scheduler.minimum-allocation-mb
        1024
    
        
                yarn.scheduler.maximum-allocation-mb
                4096
        
        
                yarn.nodemanager.resource.memory-mb
                4096
        
        
                yarn.nodemanager.pmem-check-enabled
                false
        
        
                yarn.nodemanager.vmem-check-enabled
                false
        
        
    yarn.log-aggregation-enable
    true



    yarn.log.server.url
    http://hadoop102:19888/jobhistory/logs



    yarn.log-aggregation.retain-seconds
    604800

配置同步

将三台电脑配置同步一下

rsync -av /opt/module/…/core-site.xml tgm@hadoop102:/opt/module/.../
五、集群启动与关闭

a) 启动:

i. Hadoop101命令:

1. hadoop-daemon.sh start namenode

2. hadoop-daemon.sh start datanode

3. yarn-daemon.sh start nodemanager

ii. Hadoop102命令:

    hadoop-daemon.sh start datanode

    yarn-daemon.sh start nodemanager

    yarn-daemon.sh start resourcemanager

iii. Hadoop103命令:

    hadoop-daemon.sh start secondarynamenode

    yarn-daemon.sh start nodemanager

    hadoop-daemon.sh start datanode

b)停止:

就是把启动命令中的start替换成stop

六、其他配置 配置免密登录

    使用ssh算法

    ssh-keygen -t rsa
    

    本机免密登录其他主机

    ssh-copy-id tgm@hadoop102
    
not set 报错解决

如果配置了java_home还是显示not set的话 就在hadoop/etc/hadoop/下的hadoop.env.sh配置中重新配置一下java_home的路径。

使用群起、群闭

hadoop中本身具有群起群闭的命令可以用,首先配置workers同样在hadoop的etc中,加入三台主机即可
后续使用start-dfs.sh即可

七、脚本记录

虽然有hadoop的群起群闭命令,但是我们还想查看一下整个系统的运行状态,我们可以自己编写脚本进行命令封装,同时也可以把文件同步,和三机同时执行命令一起封装了。

myjps

可以用该命令看三台机器的运行状况

#!/bin/bash

echo "jps is run..."
for i in hadoop101 hadoop102 hadoop103
do
        echo "-----------$i-----------"
        ssh $i "source /etc/profile;jps"
done
start-cluster

该命令可以启动集群

#!/bin/bash
echo -e "n--------------------TgM@Copyright-------------------"
echo -e "n--------------------start cluster-------------------"
echo -e "n-------------------- start hdfs  -------------------"
echo -e "n-------------------start hadoop101 namenode---------"
hadoop-daemon.sh start namenode
echo -e "n-------------------start hadoop101 datanode---------"
hadoop-daemon.sh start datanode
echo -e "n-------------------start hadoop102 datanode---------"
ssh tgm@hadoop102 "source /etc/profile;hadoop-daemon.sh start datanode"
echo -e "n-------------------start hadoop103 datanode---------"
ssh tgm@hadoop103 "source /etc/profile;hadoop-daemon.sh start datanode"
echo -e "n-------------------start hadoop103 secondarynamenode---------"
ssh tgm@hadoop103 "source /etc/profile;hadoop-daemon.sh start secondarynamenode"
echo -e "n--------------------finish hdfs --------------------"
echo -e "n-------------------- start yarn --------------------"
echo -e "n-------------------start hadoop101 nodemanager---------"
yarn-daemon.sh start nodemanager
echo -e "n-------------------start hadoop102 resourcemanager---------"
ssh tgm@hadoop102 "source /etc/profile;yarn-daemon.sh start resourcemanager"
echo -e "n-------------------start hadoop102 nodemanager---------"
ssh tgm@hadoop102 "source /etc/profile;yarn-daemon.sh start nodemanager"
echo -e "n-------------------start hadoop103 nodemanager---------"
ssh tgm@hadoop103 "source /etc/profile;yarn-daemon.sh start nodemanager"
echo -e "n--------------------finish yarn --------------------"
echo -e "n--------------------finish cluster------------------"
myjps 

最后这个myjps是使用了上述自己编写的命令,如果想要不输入路径直接使用的话,需要将命令写在一个配置到环境变量中的文件夹中。

tongshi

该脚本会在三台机器中执行任意同一条命令。

#!/bin/bash

if (($#==0)); then
  echo "nothing to do";
  exit
fi
echo --------------------$*----------------------

for i in hadoop101 hadoop102 hadoop103
do
    echo ---------------------$i-------------------
    ssh $i "$@"
tongbu

该脚本位于101机器,实现效果:就算我们输入的路径是相对路径,该脚本也能识别为绝对路径,并且发放到102以及103机器中的同一目录下。

#!/bin/bash

pcount=$#
if((pcount==0));then
echo "nothing to do";
exit;
fi

p1=$1 fname=`basename $p1`
echo fname=$fname

pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

user=`whoami`

for i in hadoop101 hadoop102 hadoop103; do
  echo --------------- $i ----------------
  rsync -av $pdir/$fname $user@$i:$pdir
done

于101机器,实现效果:就算我们输入的路径是相对路径,该脚本也能识别为绝对路径,并且发放到102以及103机器中的同一目录下。

#!/bin/bash

pcount=$#
if((pcount==0));then
echo "nothing to do";
exit;
fi

p1=$1 fname=`basename $p1`
echo fname=$fname

pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

user=`whoami`

for i in hadoop101 hadoop102 hadoop103; do
  echo --------------- $i ----------------
  rsync -av $pdir/$fname $user@$i:$pdir
done
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761442.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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