从零开始搭集群

前期虚拟机环境搭建

  • 内存2G,硬盘50G NAT模式

  • 1.安装好linux
    选择centos7映像文件
    在这里插入图片描述

  • 2.启动centos
    分区如下
    /boot 200M
    /swap 2g
    / 剩余
    安装详情请看CentOS 7安装教程.

  • 3.安装VMToolsVMTools安装及使用.

  • 4.关闭防火墙
    在这里插入图片描述
    centos6和centos7指令不一样了
    在这里插入图片描述
    在这里插入图片描述

  • 5.设置静态IP,改主机名
    修改克隆虚拟机的静态IP
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    在这里插入图片描述
    注意,适配器连接方式为NAT,ip地址的前三位要三者一致,Linux的VMnet8、Linux的ip地址,Windows的VMnet8这三个的前三位
    修改主机名
    在这里插入图片描述

  • 6.记住改Hosts(这个改一次就行,之后克隆的都有,不放心可查看看看)
    编写一个shell脚本即可:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 7.创建一个一般用户liuyongjun,给他配置密码
    useradd liuyongjun
    passwd liuyongjun

  • 8.配置这个用户为sudoers
    vim /etc/sudoers
    在root ALL=(ALL) ALL
    添加liuyongjun ALL=(ALL) NOPASSWD:ALL
    保存时wq!强制保存

  • 9.*在/opt目录下创建两个文件夹module和software,并把所有权赋给atguigu
    mkdir /opt/module /opt/software
    chown liuyongjun:liuyongjun /opt/module /opt/software
    之后reboot,然后远程连接成功,这样环境配置成功

  • 10.关机,快照,克隆得到103/104

集群配置开始

从这里开始要以一般用户登陆

1.克隆的虚拟机改IP和主机名,每克隆一台都要改ip地址和主机名

2.搞一个分发脚本xsync

在/home/liuyongjun/bin这个目录下存放的脚本,liuyongjun用户可以在系统任何地方直接执行。

  • (a)在/home/liuyongjun目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:
    在这里插入图片描述
    在该文件中编写如下代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环 
for((host=102; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
  • (b)修改脚本 xsync 具有执行权限
    [liuyongjun@hadoop102 bin]$ chmod 777 xsync
  • (c)调用脚本形式:xsync 文件名称
    xsync /home/liuyongjun/bin
    注意,这的意思是将bin目录拷到相同位置,得到bin目录下文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    拷贝成功

3.配置免密登陆

    1. 生成密钥对
    ssh-keygen -t rsa 三次回车
    2. 发送公钥到本机
    ssh-copy-id hadoop102 输入一次密码
    3. 分别ssh登陆一下所有虚拟机
    ssh hadoop103
    exit
    ssh hadoop104
    exit
    4. 把/home/liuyongjun/.ssh 文件夹发送到集群所有服务器
    xsync /home/liuyongjun/.ssh

4.在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器.

4.1 安装jdk

  • 第一步  卸载系统自带的OpenJDK以及相关的java文件
    • 1.java -version
      在这里插入图片描述
    • 可以看到系统自带的OpenJDK版本信息。
    • 2.查询java软件安装情况
    • rpm -qa | grep java在这里插入图片描述
    • 删除这两个即可
      java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
      java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
    • noarch文件不需要删除
    • 3.开始删除:记住,普通用户没有删除权限,要改成root用户删除(如果前面的权限更改为和root用户权限一样就不用了)
      rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
      rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
    • 4.检查是否已经删除成功java - version
      在这里插入图片描述
      表明删除成功
  • 第二步  下载最新稳定JDK
    • 用SecureCRT工具将JDK导入到opt目录下面的software文件夹下面,“alt+p”进入sftp模式,如图所示
      在这里插入图片描述
    • 选择jdk1.8拖入
      在这里插入图片描述
    • 在Linux系统下的opt目录中查看软件包是否导入成功
      将hadoop包也拖入了在这里插入图片描述
    • 解压JDK到/opt/module目录下
      tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
      别忘记删除压缩包:
      之后查看module文件,看看是否安装成功在这里插入图片描述
    • 配置JDK环境变量
      • (1)先获取JDK路径
        在这里插入图片描述
      • (2)打开/etc/profile文件
        sudo vim /etc/profile
      • (3)在profile文件末尾添加JDK路径,然后保存退出
#java environment
export JAVA_HOME=/opt/module/jdk1.8.0_144
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
    • (4)让修改后的文件生效
      source /etc/profile
      • ()最后我们来进行一下测试,看看我们的环境变量是否配置成功
        测试命令:java -version
        在这里插入图片描述

4.2 安装Hadoop

  • 上面已经将文件复制到Linux的software下了
  • 解压安装文件到/opt/module下面
    tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
  • 查看是否解压成功
    在这里插入图片描述
  • 将Hadoop添加到环境变量
    • (1)获取Hadoop安装路径
    • (2)打开/etc/profile文件
    • (3)在profile文件末尾添加hadoop路径,保存后退出
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:${HADOOP_HOME}/bin
export PATH=$PATH:${HADOOP_HOME}/sbin
    • (4)让修改后的文件生效source /etc/profile
      • hadoop version测试
        在这里插入图片描述

4.3快速分发hadoop和java

  • 1.将hadoop和jdk发到其他虚拟机
    • xsync /opt/module/hadoop-2.7.2
    • xsync jdk1.8.0_144
    • xsync 直接加文件也行
  • 2.拷贝配置文件/etc/profile
    • 注意此配置文件的所有者是root用户
    • 需要加sudo 起到临时拥有root用户权限
    • su root
    • 然后xsync /etc/profile
    • 别忘记source /etc/profile
  • 3.查看一下java和hadoop版本
    • hadoop version
      在这里插入图片描述
      成功
    • java -version
      在这里插入图片描述
      发现显示openjdk,原来是之前的openjdk未删除,
      利用如下语句删除:(root用户有权限)
      rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
      rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
      在查看java -version
      在这里插入图片描述
      成功

开始配置文件的修改

  • 1.集群部署规划
hadoop102hadoop103hadoop104
HDFSNameNode
DataNode

DataNode
SecondaryNameNode
DataNode
YARN
NodeManager
ResourceManager
NodeManager

NodeManager
  • 对于HDFS集群来说,主机是hadoop102(NameNode在),从机是102,103,104
  • 对于yarn集群来说,主机是hadoop103(ResourceManager在),从机是102,103,104
  • 2.配置文件(注:这些配置文件都在/opt/module/hadoop-2.7.2/etc/hadoop下).
    • (1)核心配置文件
      • 配置core-site.xml
      • 在该文件中编写如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
		<name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
    • (2)HDFS配置文件
      • 配置hadoop-env.sh
        • 加入export JAVA_HOME=/opt/module/jdk1.8.0_144
      • 配置hdfs-site.xml
      • 在该文件中编写如下配置
<!-- 指定HDFS副本数量 -->
<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>
    • (3)YARN配置文件
      • 配置yarn-env.sh
        • export JAVA_HOME=/opt/module/jdk1.8.0_144
      • 配置yarn-site.xml
      • 在该文件中增加如下配置
<!-- Reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
 <!-- 日志保留时间设置7天 -->
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
    • (4)MapReduce配置文件
      • 配置mapred-env.sh
        • export JAVA_HOME=/opt/module/jdk1.8.0_144
      • 配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
      • 在mapred-site.xml文件中增加如下配置
<!-- 指定MR运行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop104:10020</value>
    </property>
<!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop104:19888</value>
    </property>
  • 注意上面的配置,只配了namenode、secondarynamenode、resourcemanager
    从机一台也没配 ,手动启动集群,从机是不需要配置的.

  • 最后的配置:

    • 配置slaves(从机,小弟们)**
      • /opt/module/hadoop-2.7.2/etc/hadoop/slaves
      • 在该文件中增加如下内容:
        hadoop102
        hadoop103
        hadoop104
        注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
  • 3.在集群上分发配置好的Hadoop配置文件

    • xsync /opt/module/hadoop-2.7.2/etc
  • 4.查看文件分发情况

  • cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml在这里插入图片描述

    • 成功配置
  • 5.在104上启动历史服务器:mr-jobhistory-daemon.sh start historyserver

  • 6.如果集群是第一次启动,需要在hadoop102上格式化(不小心再次格式化,解决办法见Hadoop(一)入门、hadoop架构、集群环境搭建.伪分布式)NameNode
    hdfs namenode -format

  • 7.在hadoop102(对于hdfs来说102是主机)上启动HDFS

    • start-dfs.sh
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 8.在hadoop103(对于YARN来说103是主机)上启动YARN

    • start-yarn.sh
    • 注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

集群启动/停止方式总结

  • 1.各个服务组件逐一启动/停止
    (1)分别启动/停止HDFS组件
    hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
    (2)启动/停止YARN
    yarn-daemon.sh start / stop resourcemanager / nodemanager
  • 2.各个模块分开启动/停止(配置ssh是前提)常用
    (1)整体启动/停止HDFS
    start-dfs.sh / stop-dfs.sh
    (2)整体启动/停止YARN
    start-yarn.sh / stop-yarn.sh

注意:

如果集群出了问题
stop-dfs.sh
stop-yarn.sh
cd /opt/module/hadoop-2.7.2
rm -rf data logs
回到重新格式化NameNode,格式化出错,就见伪分布

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值