Hadoop集群部署(最新版)

准备工作
  • 三台虚拟机

    hostnamehosts配置文件ip用户
    hadoop101192.168.43.11 hadoop101
    192.168.43.12 hadoop102
    192.168.43.13 hadoop103
    192.168.43.11xiaomao
    hadoop102同上192.168.43.12xiaomao
    hadoop103同上192.168.43.13xiaomao

    注意:IP配置为静态,每台虚拟机用新建的xiaomao账户。每个用户授予管理员权限。

    如何配置用户的管理员权限:

    vi编辑 /etc/sudoers 文件,找到 root ALL=(ALL) ALL,在下面添加一行,如下所示:

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    xiaomao   ALL=(ALL)     ALL
    
  • 准备安装目录:

    在/opt/下创建下面两个目录:

    total 0
    drwxr-xr-x. 4 xiaomao xiaomao 40 Jun  3 12:23 module
    drwxr-xr-x. 2 xiaomao xiaomao 67 Jun  3 12:21 software
    [xiaomao@hadoop101 opt]$ 
    

    分别存放安装包和解压的程序

在这里插入图片描述

部署计划
hadoop101hadoop102hadoop103
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager
1.安装JDK和Hadoop

分别下载JDK和Hadoop安装包到/opt/software目录,解压到/opt/module目录。(三个节点分别安装,也可以先配置一台,克隆后,修改ip和hostname等即可)

vim /etc/profile 配置环境变量

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin

source /etc/profile
2.编写一个集群同步脚本

所有节点需要先安装同步工具:

yum install rsync -y

因为修改一些配置文件时,需要同步修改其他所有节点,利用脚本可以提升效率。

在这里插入图片描述
将脚本xsync文件放在用户bin目录:/home/xiaomao/bin 。这样可以在任意目录执行。注意授予该文件执行权限:

chmod +x xsync
3.配置Hadoop

以下操作在101进行,最后同步到其他节点

cd /opt/module/hadoop-3.1.3/etc/hadoop

  • 环境变量配置:hadoop-env.sh

    export JAVA_HOME=/opt/module/jdk1.8
    
  • 核心配置文件:core-site.xml

    <configuration>
    <!-- 指定HDFS中NameNode的地址 -->
    <property>
    <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:9000</value>
    </property>
    
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-3.1.3/data/tmp</value>
    </property>
    </configuration>
    
    
  • HDFS配置文件: hdfs-site.xml

    <configuration>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>
    
    <!-- 指定Hadoop辅助名称节点主机配置,即SecondaryNameNode -->
    <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>hadoop103:9868</value>
    </property>
    
    </configuration>
    
    
  • YARN配置:yarn-site.xml

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    <!-- Reducer获取数据的方式 -->
    <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>hadoop102</value>
    </property>
    
    </configuration>
    
    
  • MapReduce配置:mapred-site.xml

     	<property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
    
  • Workers:workers (hadoop3.x之前是slavers文件)

    hadoop101 192.168.43.11
    hadoop102 192.168.111.12
    hadoop103 192.168.111.13
    

最后同步配置文件到其他两个节点:

xsync /opt/module/hadoop-3.1.3/etc/hadoop

至此,安装配置结束。

更多配置选项和默认值,参加hadoop官网

在这里插入图片描述

4.单节点启动

第一次启动需要先格式化HDFS:

hadoop101上:

$HADOOP_HOME/bin/hdfs namenode -format

启动NameNode:

$HADOOP_HOME/bin/hdfs --daemon start namenode

启动DataNode:

$HADOOP_HOME/bin/hdfs --daemon start datanode

然后分别到102和103上启动DataNode ,可以通过jps查看进程启动情况。

显然,如果集群节点很多,这样效率很低。所以hadoop提供了另外的脚步,可以直接启动所有节点的进程。前提是配置ssh免登录

在master节点启动HDFS的namenode和其他所有的datanode脚本:在101执行

$HADOOP_HOME/sbin/start-dfs.sh

启动yarn:在102(配置ResourceManager所在的机器执行)

$HADOOP_HOME/sbin/start-yarn.sh
5.配置SSH免登录

Hadoop框架本身并不需要ssh,因为hadoop是分布式架构,但是Hadoop提供的启动脚本(e.g., start-mapred.sh and start-dfs.sh)利用ssh去启动不同节点的进程,所以需要进行配置。需要配置namenode到其他节点的免登录(101到101,102,103)和ResourceManager到其他节点的免登录(102到101,102,103)

  • 首先在三台机器生成对应的ssh公钥

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    
  • 101到其他机器的免登录

    ssh-copy-id hadoop101
    ssh-copy-id hadoop102
    ssh-copy-id hadoop103
    
  • 102到其他机器的免登录

    ssh-copy-id hadoop101
    ssh-copy-id hadoop102
    ssh-copy-id hadoop103
    

遇到问题:

配置免登录后,登录还提示需要密码:

跟 sshd 服务相关的登录日志可以在 /var/log/secure 中查看

从日志可以看出是 /home/xiaomao/.ssh/ 目录权限不对

ll /home/xiaomao/.ssh -d
drwxrwxrwx 3 xiaomao xiaomao 80 Jun 13 15:47 /home/xiaomao/.ssh

权限为777,安全策略会禁止访问
修改目录权限为 700,问题解决

 chmod 700 /home/xiaomao/.ssh
6.集群启动

hdfs上面已经格式化了

启动HDFS: 在101上启动

$HADOOP_HOME/sbin/start-dfs.sh

启动yarn: 在102上(ResourceManager配置的是102)启动

$HADOOP_HOME/sbin/start-yarn.sh
7.访问
DaemonWeb InterfaceNotes
NameNodehttp://nn_host:port/Default HTTP port is 9870.
ResourceManagerhttp://rm_host:port/Default HTTP port is 8088.
MapReduce JobHistory Serverhttp://jhs_host:port/Default HTTP port is 19888.

在这里插入图片描述

8.集群时间同步

选取集群中性能较好的一台机器作为时间服务器,其他节点定时向时间服务器做时间同步。

这里选取101作为时间服务器。

时间服务器需要做如下配置:

  • 1.先安装ntp服务

    查询是否已安装

    rpm -qa|grep ntp
    

    没有安装需要安装:

    yum install -y ntp
    
  • 2.修改ntp配置

    vi /etc/ntp.conf

    修改内容如下

    a)修改1(授权192.168.43.0-192.168.43.255网段上的所有机器可以从这台机器上查询和同步时间)

    restrict 192.168.43.0 mask 255.255.255.0 nomodify notrap
    

    b)修改2(集群在局域网中,不使用其他互联网上的时间)

    c) 添加添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)

    server 127.127.1.0
    
    fudge 127.127.1.0 stratum 10
    

    最后截图

在这里插入图片描述

  • 3.修改/etc/sysconfig/ntpd 文件

    增加内容如下(让硬件时间与系统时间一起同步)

    SYNC_HWCLOCK=yes
    

    重启ntpd服务:

    service ntpd status
    service ntpd start
    

    设置开机启动:

    chkconfig ntpd on
    

其他要同步时间的机器,需要安装ntpdate

yum install -y ntpdate

编写一个定时任务:每10分钟去101同步时间,定时任务编写教程

crontab -e 
*/10 * * * * /usr/sbin/ntpdate hadoop101

通过date命令修改时间,然后执行同步测试是否可以正常同步:

[xiaomao@hadoop102 hadoop-3.1.3]$ date
Sat Jun 13 19:07:55 CST 2020
[xiaomao@hadoop102 hadoop-3.1.3]$ sudo date -s "2019-12-11 11:11:11"
[sudo] password for xiaomao: 
Wed Dec 11 11:11:11 CST 2019
[xiaomao@hadoop102 hadoop-3.1.3]$ date
Wed Dec 11 11:11:12 CST 2019
[root@hadoop102 sbin]# /usr/sbin/ntpdate hadoop101
13 Jun 19:18:19 ntpdate[9154]: step time server 192.168.43.11 offset 16012648.245208 sec
[root@hadoop102 sbin]# date
Sat Jun 13 19:18:21 CST 2020
常见错误

stop-dfs.sh和stop.sh命令失效问题。

hadoop关闭是通过记录进程ID,然后通过ssh登录到各个节点关闭进程。默认记录pid的文件存放在系统/tmp目录下,但是Linux会定期清理/tmp目录,所以导致运行一段时间,关闭机器脚本失效。解决办法是修改pid文件存放目录:

修改配置文件hadoop-env.sh 找到下面的配置,修改路径:

export HADOOP_PID_DIR=${HADOOP_HOME}/pid

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值