hadoop3.1.3集群配置

hadoop3.1.3集群配置

1、安装软件

最小化安装中一些基本命令不存在,因此需要事先安装。

  1. Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

    yum install -y epel-release
    
  2. 安装ifconfig

    yum install -y net-tools
    
  3. 安装vim

    yum install -y vim
    
  4. 其他工具

    yum install -y  psmisc  nc  rsync  lrzsz  ntp libzstd openssl-static tree iotop git
    

2、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service

3、创建hadoop用户

  1. 创建用户并设置密码

    useradd hadoop
    passwd hadoop
    
  2. 配置hadoop用户,使其能够执行root权限的命令

    [root@hadoop102 ~]# vim /etc/sudoers
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    hadoop   ALL=(ALL)     NOPASSWD:ALL
    
  3. 创建放置软件和安装软件的目录

    mkdir /opt/software
    mkdir /opt/module
    #更改所属用户和组
    chown atguigu:atguigu /opt/module 
    chown atguigu:atguigu /opt/software
    

4、卸载Linux自带的JDK

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 
  • rpm -qa:查询所安装的所有rpm软件包
  • grep -i:忽略大小写
  • xargs -n1:表示每次只传递一个参数
  • rpm -e –nodeps:强制卸载软件

5、克隆三台虚拟机

修改主机名和hosts映射文件

主机名hosts映射
hadoop102192.168.10.102
hadoop103192.168.10.103
hadoop104192.168.10.104

6、安装jdk、hadoop

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

hadoop目录说明:

  • bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本
  • etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
  • lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
  • sbin目录:存放启动或停止Hadoop相关服务的脚本
  • share目录:存放Hadoop的依赖jar包、文档、和官方案例

7、配置环境变量

  1. /etc/profile 文件中修改环境变量 登录用户生效
  2. ~.bashrc /etc/bashrc 文件中修改环境变量 只对非登录式shell用户生效
  3. 配置一个环境变量 或者 永久生效变量
    /etc/profile.d/创建一个以.sh结尾 然后将变量声明在这个文件中
vim /etc/profile.d/my_env.sh
#!/bin/bash
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile或/etc/bashrc都将执行/etc/profile.d/*.sh文件

source /etc/profile.d/my_env.sh

测试:

java -version
hadoop version

8、本地模式测试

案例1:

$ mkdir wcinput
$ cd wcinput
$ vim word.txt
hadoop yarn
hadoop mapreduce
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

案例2:

mkdir input
cp /opt/module/hadoop-3.1.3/etc/hadoop/*.xml input/
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input/ output 'dfs[a-z.]+'

9、完全分布式

9.1配置SSH免密登录

目的:

  1. 使用ssh、scp、rsync等命令执行命令或传输配置文件时需要,避免频繁输入密码
  2. hadoop传输数据过程中,节点间的通讯需要使用;

哪些需要配置?

  • 普通用户hadoop要求每个节点间均免密登录
  • root用户只需要主节点向其他子节点免密登录
#生成公钥和私钥
ssh-keygen -t rsa
#为每个节点分发公钥
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

在这里插入图片描述

~/.ssh/目录下的文件:

文件名解释说明
known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

9.2 集群配置

各节点职责:

hadoop102hadoop103hadoop104
hdfsNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
yarnNodeManagerResourceManager、NodeManagerNodeManager
mapredHistoryServer

配置文件:

defaultsite
/opt/module/hadoop-3.1.3/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xmlcore-site.xml
/opt/module/hadoop-3.1.3/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xmlhdfs-site.xml
/opt/module/hadoop-3.1.3/share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xmlyarn-site.xml
/opt/module/hadoop-3.1.3/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xmlmapred-site.xml

配置文件修改:

  1. core-site.xml

    设置NameNode地址、存储位置和静态用户;

    静态用户可以使得hadoop102外的其他网页访问这操作hdfs(增删改查),windows当然也可以

    <configuration>
        <!-- 指定NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop102:8020</value>
        </property>
    
        <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-3.1.3/data</value>
        </property>
    
        <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>hadoop</value>
        </property>
    
    </configuration>
    
  2. hdfs-site.xml

    设置NameNode和SecondaryNameNode

    <configuration>
        <!-- nn web端访问地址-->
        <property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop102:9870</value>
        </property>
        <!-- 2nn web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop104:9868</value>
        </property>
    
    </configuration>
    
  3. yarn-site.xml

    设置MR走shuffle、ResourceManager的地址、环境变量的继承、开启日志聚集功能并配置参数

    <configuration>
    
        <!-- Site specific YARN configuration properties -->
        <!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop103</value>
        </property>
    
        <!-- 环境变量的继承 -->
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
        <!-- 开启日志聚集功能 -->
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
    	</property>
        <!-- 设置日志聚集服务器地址 -->
        <property>
            <name>yarn.log.server.url</name>
            <value>http://hadoop102:19888/jobhistory/logs</value>
        </property>
        <!-- 设置日志保留时间为7天 -->
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
    
    </configuration>
    
    
  4. mapred-site.xml

    设置MapReduce程序运行在Yarn上、指定历史服务器的节点

    <configuration>
        <!-- 指定MapReduce程序运行在Yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <!-- 历史服务器端地址 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>hadoop102:10020</value>
        </property>
    
        <!-- 历史服务器web端地址 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hadoop102:19888</value>
        </property>
    </configuration>
    
  5. workers

    hadoop102
    hadoop103
    hadoop104
    

9.3 分发配置文件至其他节点

同步文件脚本xsync:

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

9.4 启动集群

格式化系统:

如果集群是第一次启动,需要在hadoop102节点格式化NameNode。

hdfs namenode -format

注意事项:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。

启动hdfs:

start-dfs.sh

启动Yarn:

start-yarn.sh

启动HistoryServer:

mapred --daemon start historyserver

集群的启动/停止的方式

  1. 群起组件 hdfs /yarn/historyserver
    hdfs start/stop-dfs.sh
    yarn start/stop-yarn.sh
    mapred --daemon start/stop historyserver

  2. 按照每个小模块 nn dn 2nn rm nm
    hdfs
    hdfs --daemon start/stop namenode
    hdfs --daemon start/stop datanode
    hdfs --daemon start/stop secondarynamenode
    yarn
    yarn --daemon start/stop resourcemanager
    yarn --daemon start/stop nodemanager
    historyserver
    mapred --daemon start/stop historyserver

myhadoop脚本启停集群:

if [ $# -ne 1 ]
then
    echo 'arg num error only one start/stop'
    exit
fi
case $1 in
"start")
    echo '====================hadoop-start===================='
    echo '====================hdfs-start===================='
    ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
    echo '====================yarn-start===================='
    ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
    echo '====================history-start===================='
    ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver
;;
"stop")
    echo '====================hadoop-stop===================='
    echo '====================history-stop===================='
    ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver
    echo '====================yarn-stop===================='
    ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
    echo '====================hdfs-stop===================='
    ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
;;
*)
    echo 'arg value error start/stop'
;;
esac

9.5 各节点服务运行状况jps

JPS脚本查看各节点:

#!/bin/bash
for i in hadoop102 hadoop103 hadoop104
do
     echo "===========$i==========="
     ssh $i jps $1 | grep -v Jps
done

10、面试题

  1. hadoop中有哪些比较重要的配置文件
    两种 default site
    core-defaule/site-xml common
    hdfs-defaule/site-xml hdfs
    yarn-defaule/site-xml yarn
    mapred-defaule/site-xml mr
    3.x workers/ 2.x salvers dn nm

  2. hadoop中常用的端口号

    hdfs 通信端 8020 web 9870 3.x /50070 2.x
    yarn 通信端 8032 web 8088
    历史服务器 通信端 10020 web 19888

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020/90008020/9000/9820
NameNode HTTP UI500709870
MapReduce查看执行任务端口80888088
历史服务器通信端口1988819888
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MelodyYN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值