Hadoop全分布模式安装部署


Hadoop介绍

  • Hadoop的框架最核心的设计就是:HDFS和MapReduce
    • HDFS为海量的数据提供了存储
    • MapReduce为海量的数据提供了计算
  • 把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘
  • 把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务

实验

实验环境

主机名 RHEL版本 IP地址
Master-bad RHEL 7.0 192.168.43.130
slave01-bad RHEL 7.0 Min 192.168.43.129
slave02-bad RHEL 7.4 192.168.43.131

修改主机名

  • Master-bad设置主机名
[root@server ~]# hostnamectl set-hostname Master-bad
[root@server ~]# bash
[root@master-bad ~]#

在其他两台主机做相同操作,修改成相应的主机名

配置主机域名映射

  • master-bad配置域名映射
[root@master-bad ~]# vim /etc/hosts
192.168.43.129 slave01-bad
192.168.43.130 master-bad
192.168.43.131 slave02-bad
[root@master-bad ~]# 

在其他两台主机做相同的配置,配置域名映射

关闭防火墙

  • master-bad上关闭防火墙
[root@master-bad ~]# systemctl stop firewalld  //关闭防火墙
[root@master-bad ~]# systemctl disable firewalld  //禁止开机自启

在另外两台主机做相同的操作,关闭防火墙

关闭selinux

  • master-bad上关闭selinux
[root@master-bad ~]# vim /etc/selinux/config 
SELINUX=disabled 

在另外两台主机做相同的配置,关闭selinux

配置yum仓库

  • master-bad上配置yum仓库
[root@master-bad yum.repos.d]# vim rhel.repo
[Base]
name=RHEL
baseurl=file:///mnt
gpgcheck=0
enabled=1
[root@master-bad yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@master-bad yum.repos.d]# yum clean all 
[root@master-bad yum.repos.d]# yum repolist 
源标识                            源名称                           状态
Base                              RHEL                             4,305
repolist: 4,305
[root@master-bad yum.repos.d]# 

在另外两台主机做相同的配置,配置yum仓库

安装并配置NTP服务,用于时间同步

master-bad配置:

  • 安装NTP
[root@master-bad ~]# yum -y install ntp
  • 配置ntp,并设置开机自启
[root@master-bad ~]# vim /etc/ntp.conf  //在配置文件中加入以下内容
server 127.127.1.0
fudge 127.127.1.0 startum 10
[root@master-bad ~]# systemctl start ntpd
[root@master-bad ~]# systemctl enable ntpd

slave01-bad配置:

  • 安装ntp客户端
[root@slave01-bad ~]# yum -y install ntpdate
  • 配置时间同步
[root@slave01-bad ~]# ntpdate master-bad

slave02-bad相同配置,配置时间同步

配置免密登录

  • 只需要配置从主节点到从节点的即可

  • 生成ssh密钥

[root@master-bad ~]# ssh-keygen
  • 将ssh密钥上传给master-bad
[root@master-bad ~]# ssh-copy-id master-bad
Are you sure you want to continue connecting (yes/no)? yes  //yes确认
root@master-bad's password:  //输入master-bad的root密码

同样操作将ssh密钥传给salve01-bad、slave02-bad

将Hadoop、jdk环境包上传到服务器

  • 使用Xftp、SecureFX或其他远程工具将软件包上传至服务器
  • 直接在Internet上下载相关的包(wget

Xftp上传Hadoop包

这里直接使用Xftp上传至服务器

  • 查看已上传到软件包
[root@master-bad ~]# ll /opt/Hadoop/
总用量 8
drwxr-xr-x. 9 root root 4096 6月   1 22:58 hadoop-2.7.6
drwxr-xr-x. 8 root root 4096 6月   1 23:08 jdk1.8.0_171
[root@master-bad ~]#

如果是下载的是tar、gz的压缩包,需要先解压(tar -xf 压缩包名 解压的路径

安装与配置jdk

[root@master-bad ~]# vim /etc/profile  //配置环境变量
export JAVA_HOME=/opt/Hadoop/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
[root@master-bad ~]# source /etc/profile  //重读文件,使配置的环境生效
[root@master-bad ~]# java -version  //验证,查看Java环境的版本
java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
[root@master-bad ~]# 

安装Hadoop

[root@master-bad ~]# vim /etc/profile  //配置环境变量
export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@master-bad ~]# source /etc/profile  //重读配置文件,是环境变量生效
[root@master-bad ~]# chmod -R 755 /opt/Hadoop/  //修改权限
[root@master-bad ~]# hadoop version  //验证,查看Hadoop版本
Hadoop 2.7.6
。。。
[root@master-bad ~]# 

需要递归赋予权限,否则无法查看Hadoop的版本信息

修改Hadoop配置文件

  • 修改core-site.xml配置文件
[root@master-bad ~]# cd /opt/Hadoop/hadoop-2.7.6/etc/hadoop/
[root@master-bad hadoop]# vim core-site.xml 
<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master-bad:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/Hadoop/hadoop-2.7.6/hdfs</value>
    </property>

</configuration>
[root@master-bad hadoop]# 
  • 修改hdfs-site.xml配置文件
[root@master-bad hadoop]# vim hdfs-site.xml 
<configuration>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave02-bad:9001</value>
    </property>

</configuration>
[root@master-bad hadoop]# 
  • 修改mapred-site.xml配置文件
[root@master-bad hadoop]# vim mapred-site.xml
<configuration>

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

</configuration>
[root@master-bad hadoop]#
  • 修改yarn-site.xml配置文件
[root@master-bad hadoop]# vim yarn-site.xml 
<configuration>

<!-- Site specific YARN configuration properties -->

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master-bad</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>
[root@master-bad hadoop]# 
  • 修改slaves配置文件
[root@master-bad hadoop]# vim slaves
master-bad
slave01-bad
slave02-bad
[root@master-bad hadoop]# 
  • 修改hadoop-env.sh配置文件
[root@master-bad hadoop]# vim hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/opt/Hadoop/jdk1.8.0_171

为防止配置出错,方便恢复,配置文件修改前,将原文件复制一行,注释掉,再进行修改

将修改好的环境复制到其他节点

  • 将JDK环境包复制到其他从节点
[root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave01-bad:/opt/Hadoop/
[root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave02-bad:/opt/Hadoop/
  • 将Hadoop软件包复制到其他从节点
[root@master-bad hadoop]# scp -r /opt/Hadoop/hadoop-2.7.6/ slave01-bad:/opt/Hadoop/
[root@master-bad hadoop]# scp -r /opt/Hadoop/hadoop-2.7.6/ slave02-bad:/opt/Hadoop/
  • 将环境复制到其他从节点
[root@master-bad hadoop]# scp /etc/profile slave01-bad:/etc/
[root@master-bad hadoop]# scp /etc/profile slave02-bad:/etc/

格式化Hadoop

[root@master-bad hadoop]# hdfs namenode -format
[root@master-bad hadoop]# start-all.sh 

格式化成功后,会看到successfully formatted

验证启动情况

  • master-bad验证
[root@master-bad hadoop]# jps
46340 NodeManager
46184 ResourceManager
45914 DataNode
48461 Jps
45726 NameNode
[root@master-bad hadoop]# 
  • slave01-bad验证
[root@slave01-bad ~]# jps
2881 DataNode
2979 Jps
2942 NodeManager
[root@slave01-bad ~]#
  • slave02-bad验证
[root@slave02-bad ~]# jps
3796 NodeManager
3653 DataNode
3722 SecondaryNameNode
4222 Jps
[root@slave02-bad ~]# 

注意事项

  • 主机名和hosts中的映射关系要一致,如果不一致,服务会起不来
  • 关闭防火墙,禁止开机自启,或防火墙放行(实验中可以禁止防火墙自启,方便实验可以直接关闭防火墙)
  • 客户端一定要配置时间同步
  • master上生成的ssh密钥三台主机都要上传
  • jdk和Hadoop的环境配置完成后,检查是否生效
  • Hadoop启动后,可以通过Web访问http://localhost:9870http://localhost:50070验证是否成功启动

Web查看

实验中遇到的问题及解决方法

  1. 无法格式化Hadoop

使用hadoop namenode -format -force强制格式化

  1. master可以使用jps查看,slave无法查看
  • root@slave01-bad's password: slave01-bad: Permission denied, please try again

将Hadoop的安装目录权限提高,chmod -R 777 /opt/Hadoop/

  • /opt/Hadoop/jdk1.8.0_171/bin/jps: 没有那个文件或目录

没有将jdk环境包上传至slave,重新上传[root@master-bad hadoop]# scp -r /opt/Hadoop/jdk1.8.0_171/ slave02-bad:/opt/Hadoop/

问题解决办法可参考-柚子皮-的博客。

以上内容均属原创,如有不详或错误,敬请指出。
本文作者: 坏坏
原文地址:https://www.cnblogs.com/bad5/p/13232826.html