基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细

前言

        1、本文为小白学习实践记录,欲参考本文建议先从头至尾看一遍了解大致内容后再进行可事更功倍或再决定是否采取。

        2、本文通过4台Linux虚拟机,搭建4个节点的完全分布式Hadoop集群,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,Java版本是12。

        3、为增加印象巩固学习记忆此次采用的是傻瓜式每个节点逐一配置的方式,而不采用只创建一台虚拟机安装系统并配好每个节点具有相同基础功能的Java、Hadoop等单机环境后再由其克隆多开,再分别对每个节点进行下一步关联配置的方式。

一、准备(每台机器)

1下载 VMware workstation 15 Pro (附:VMware密钥许可),CentOS7系统iso:CentOS7 Minimal(最小精简版) ,

    Hadoop3.2.0 :

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第1张图片

    可点击当前界面上显示的Binary安装包进入下载,亦可点击【mirror site】进入镜像页面,选择要安装的版本进行下载。

2、 虚拟机创建和CentOS7安装步骤 :(VMware虚拟机的创建和CentOS7的安装),基本上就是下一步下一步这种简单的默认安装就好了。除了在安装过程中配置分区的时候可能需要手动分区,然后选择标准分区即可。装好后,修改内存,因为不需要图形界面,所以不需要太大的内存也没问题或选择由系统自动分配也是可以的。

3、配置静态IP : 基于VMware虚拟机CentOS7 的 IP 自更新改为固定不变详细(点我查看

4Java安装和环境变量的配置以及卸载: 基于VMware虚拟机CentOS7的Java12安装与卸载详细 (点我查看

 

二、Hadoop的安装与环境变量的配置(每台机器)

1、上传 Hadoop二进制.tar文件压缩包至虚拟机Linux();

2、解压缩:

    (1)在统根目录 /opt 下创建用于存放解压安装文件的 hadoop 文件夹 (命令  “ mkdir /opt/hadoop ” )

        基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第2张图片

    (2)从根下opt/APP下把Hadoop文件包解压缩到根下opt/hadoop里去 :(命令 “ tar xzvf /usr/APP/hadoop-3.2.0.tar.gz -C /opt/hadoop/ ”)

                e5aac3d6b4514d4683e5e6c0b77def4e661.jpg

                基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第3张图片

        解压后会发现hadoop目录层级过多,则可以适当调整

            基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第4张图片

            基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第5张图片

3、配置环境变量:

    使用 “ vi /etc/profile ” 编辑profile文件,

    基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第6张图片

    加入如下内容:(省略vi命令细节)

    #Hadoop
    export HADOOP_HOME=/opt/hadoop-3.2.0
# 该目录为解压安装目录
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

    基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第7张图片

    保存后执行 “ source /etc/profile ” 命令,使profile生效,而后输入 “ hadoop ”  “ hadoop version ” 等命令进行验证:
   基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第8张图片

       基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第9张图片

4、配置Hadoop环境脚本文件中的JAVA_HOME参数:

    进入Hadoop安装目录下的etc/hadoop目录(命令 “ cd /opt/hadoop-3.2.0/etc/hadoop ”)

    分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加 export JAVA_HOME="/opt/jdk"  路径为jdk安装路径具体以自己的实际路径为准):

hadoop-env.sh (命令 “  vi hadoop-env.sh  ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第10张图片

mapred-env.sh (命令 “ vi mapred-env.sh ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第11张图片

yarn-env.sh (命令 “ vi yarn-env.sh ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第12张图片

验证Hadoop配置是否生效
[root@hadoop01]# hadoop version

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第13张图片

(注意此处和刚配置好hadoop环境变量的此处之前 “ hadoop version ”)
 

三、修改主机名、配置DNS、关闭防火墙(每台机器)

1、修改主机名:

使用 “ hostname hadoop ” 命令只能临时改变我们的主机名,当我们重启之后主机名还会恢复成原来的
输入 “ hostname hadoop ” 即可将主机名改成hadoop01,使用 “ uname -n ” 命令查看。

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第14张图片

想要永久修改自己的主机名,得通过修改 /etc/sysconfig/network 文件,加上 hostname(命令 “ /etc/sysconfig/network ”),

其 hadoop01 就是要设置的主机名,然后保存退出,重启系统你就会读取配置文件,设置主机名为新的主机名了。

18853f838eb76da48994eaf6b91ae7214b0.jpg

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第15张图片

 

2、配置DNS:

 编辑配置文件加入如下内容(ip地址和主机名自己实际为准),设置1个主节点和3个从节点的映射关系(命令 “ vi /etc/hosts ” )。

(      ip             主机名 )

192.168.44.3 hadoop01

192.168.44.4 hadoop02
192.168.44.5 hadoop03
192.168.44.6 hadoop04

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第16张图片

3、关闭防火墙:

查看防火状态 (命令 “ systemctl status firewalld ”)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第17张图片

暂时关闭服务 (命令 “ systemctl stop firewalld ”)
永久关闭服务 (命令 “ systemctl disable firewalld ”)
4c0db8dc91e066fb4da447ea7f78064a03d.jpg

 

 

四、配置免密登录、修改Hadoop配置文件(每台机器)

1、免密登录:

每台主机authorized_keys文件里面包含的主机(ssh密钥),该主机都能无密码登录;所以只要每台主机的authorized_keys文件里面都放入其他主机(需要无密码登录的主机)的ssh密钥就行了。

(1)每个节点生成ssh密钥 (命令 “ ssh-keygen -t rsa ”):

执行命令后会在~目录下生成 .ssh 文件夹,里面包含 id_rsa和id_rsa.pub 两个文件,标识保存在 /root/.ssh/id_rsa 中,公钥保存在 /root/.ssh/id_rsa.pub 中。

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第18张图片

 

f2635ac89120f99585dcccc529ab7ae4c8e.jpg

(2) 在主节点上将公钥拷到一个特定文件 authorized_keys 中:

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第19张图片

命令记录

[root@hadoop01 ~]# cd .ssh
[root@hadoop01 .ssh]# ls
id_rsa  id_rsa.pub
[root@hadoop01 .ssh]# cp id_rsa.pub authorized_keys
[root@hadoop01 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub

(3)将 authorized_keys 文件拷到下一个节点(hadoop02),并将该节点的ssh密钥 id_rsa.pub 加入该文件中(在hadoop01上使用 scp 命令实现远程文件拷贝):

03f0c3e4f6d0f94671da976bf99edf21ac4.jpg

如果ssh:无法解析主机名hadoop02:名称或服务未知失去连接则可以采用 目标 ip替换 并输入root密码即可(但这是由于 /etc/hosts文件没有添加所有主机信息成功的表现最好不要现行采用ip而是返回去把每个节点都成功加入每个节点的信息(参考上文 “2、配置DNS:”)):

d6f74e1387753feae44d785fce294847107.jpg

命令记录
[root@hadoop01 .ssh]# scp authorized_keys  root@hadoop02:/root/.ssh/
ssh: Could not resolve hostname hadoop02: Name or service not known
lost connection
[root@hadoop01 .ssh]# scp authorized_keys 192.168.92.133:/root/.ssh/
authorized_keys                                                   100%  395   217.6KB/s   00:00

登录hadoop02主机(刚拷入的目标主机)将该节点的ssh密钥id_rsa.pub加入到 authorized_keys 该文件中 然后拷贝发送给hadoop03:

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第20张图片

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第21张图片

命令记录

[root@hadoop02 ~]# cd .ssh
[root@hadoop02 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@hadoop02 .ssh]# cat id_rsa.pub>>authorized_keys  #使用cat追加方式

[root@hadoop02 .ssh]#scp authorized_keys 192.168.92.134:/root/.ssh/

登录hadoop02主机(刚拷入的目标主机)将该节点的ssh密钥id_rsa.pub加入到 authorized_keys 该文件中 然后拷贝发送给hadoop03:

(4) 重复第3步的操作,依次将hadoop03、hadoop04节点的ssh密钥加入到authorized_keys文件中,并将hadoop04节点生成的authorized_keys文件拷贝到其他三个节点(hadoop01、hadoop02、hadoop03):

登录hadoop03主机,将ssh密钥加入authorized_keys文件中:


[root@hadoop03 .ssh]# cat id_rsa.pub >> authorized_keys 
[root@hadoop03 .ssh]# scp authorized_keys root@hadoop04:/root/.ssh/  (/etc/hosts 文件以及修改成功 故不再用 ip 而是用目标主机名 root@hadoop04)

登录hadoop04主机,将ssh密钥加入authorized_keys文件中
[root@hadoop04 .ssh]# cat id_rsa.pub >> authorized_keys 

将最后生成的authorized_keys文件分别拷贝到hadoop01、hadoop02和hadoop03
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop01:/root/.ssh/
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop02:/root/.ssh/
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop03:/root/.ssh/

(5)验证免密登录

使用ssh 用户名@节点名或ssh ip地址命令验证免密码登录。

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第22张图片

如上图 如果使用 ssh 命令免密登录目标主机提示   无法建立主机“Hadoop02(192.168.92.133)”的真实性。ecdsa密钥指纹是sha256:yscxu2isxghgc8u6covqvwubgznriakvp4ckfkxlcrc。ecdsa密钥指纹是md5:52:0b:2c:11:e9:0f:59:6a:cc:3f:a4:42:64:cc:a5:43。是否确实要继续连接(是/否)?:  让你输入 yes 时 ,可关闭zhu'j检查功能 执行 ssh  -o StrictHostKeyChecking=no  本机IP地址就可以了(如下图)。

0a7af0a5320786f42a95c4af5c5ae5389df.jpg

如果 执行 ssh  -o StrictHostKeyChecking=no  本机IP地址 命令 后出现有的机器可以解决有的又还是需要输入yes (如下图),

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第23张图片
则是将“本机ip”(ecdsa)永久添加到已知主机列表中予以zhu'j检查功能时添加不到位(如下图),

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第24张图片

为了安全起见可在每个节点执行一遍

ssh  -o StrictHostKeyChecking=no  本机IP地址命令。

d820d609cad0e2611600fe7df5e5d94a896.jpg

3d61980b5050bcbb9eb47357cd17b4797b3.jpg

8de8cbae702ee0c158cec1b62ecff95df98.jpg

b9433f0712e2f4b5e6016c4bb2eee9a7670.jpg如果在每个节点进行一对多测试时依然遇到此问题则继续 yes 然后ssh  -o StrictHostKeyChecking=no  本机IP地址命令(哦还有注意是输入 yes 之前的本机IP哦),

由于我也是小白领悟有限,此方法虽然有些苦逼但也确实能解决问题。

现在就看似快乐的测试吧....

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第25张图片

[root@hadoop01 .ssh]# ssh root@hadoop02
Last login: Tue Feb 12 03:59:46 2019 from 192.168.44.1

[root@hadoop02 .ssh]# ssh root@hadoop01
Last login: Tue Feb 12 21:27:24 2019 from hadoop04

[root@hadoop03 .ssh]# ssh root@hadoop04
Last login: Tue Feb 12 04:00:47 2019 from 192.168.44.1

[root@hadoop04 .ssh]# ssh root@hadoop01
Last login: Tue Feb 12 21:26:44 2019 from hadoop02
 

 

2、修改Hadoop配置文件:

Hadoop安装目录下的etc/hadoop目录中,需修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers文件,根据实际情况修改配置信息。

(1)core-site.xml (配置Common组件属性)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第26张图片
代码记录:


    
     
      fs.defaultFS
      hdfs://hadoop01:9000
    

    
     
      hadoop.tmp.dir
      /opt/hadoop-3.2.0/tmp
    

(2)hdfs-site.xml (配置HDFS组件属性)
基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第27张图片
   代码记录:


     
         
          dfs.namenode.http-address
          hadoop01:50070
     

     
          dfs.namenode.name.dir
          file:/opt/hadoop-3.2.0/dfs/name
     

     
         dfs.datanode.data.dir
         file:/opt/hadoop-3.2.0/dfs/data
     

     
       
        dfs.replication
         3
     

         
      dfs.webhdfs.enabled 
      true 
     

     
      dfs.permissions
      false
      配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除.
     

 

(3)mapred-site.xml (配置Map-Reduce组件属性)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第28张图片
代码记录:
    
        mapreduce.framework.name
        yarn #设置MapReduce的运行平台为yarn
    

    
        mapreduce.jobhistory.address
        hadoop01:10020
    

    
        mapreduce.jobhistory.webapp.address
        hadoop01:19888
    

     
      mapreduce.application.classpath
       $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
  

(4)yarn-site.xml(配置资源调度属性)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第29张图片
代码记录:

 
 
 
 
 
         yarn.resourcemanager.hostname #指定yarn的ResourceManager管理界面的地址,不配的话,Active Node始终为0
         hadoop01
     

     
         yarn.nodemanager.aux-services  #reducer获取数据的方式
         mapreduce_shuffle
     


 yarn.resourcemanager.webapp.address
 hadoop01/localhost:8088
 配置外网只需要替换外网ip为真实ip,否则默认为 localhost:8088
 

 
yarn.scheduler.maximum-allocation-mb
 2048
 每个节点可用内存,单位MB,默认8182MB
 

 
 yarn.nodemanager.vmem-check-enabled
 false
 忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。
 


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

(5)workers文件

增加从节点地址(若配置了hosts,可直接使用主机名,亦可用IP地址)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第30张图片

代码记录:
hadoop02
hadoop03
hadoop04

(6)将配置好的文件夹拷贝到其他从节点:

(可在Windows上编辑后通过Xshell直接拖动上传至每个节点,也可在主节点用v编辑好后用 SCP 命令统一拷贝到其他从节点):

SCP命令记录:

[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop02:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop03:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop04:/opt/

(7)创建必要的文件夹:

1、/opt/hadoop-3.2.0/tmp

2、/opt/hadoop-3.2.0/dfs/name

3、/opt/hadoop-3.2.0/dfs/data

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第31张图片

 

五、添加HDFS和Yarn权限,配置启动脚本:

1、添加HDFS权限:编辑如下脚本,在第二行空白位置添加HDFS权限:

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第32张图片

命令记录:

[root@hadoop01 sbin]# vi sbin/start-dfs.sh 
[root@hadoop01 sbin]# vi sbin/stop-dfs.sh 

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2、添加Yarn权限:编辑如下脚本,在第二行空白位置添加Yarn权限:

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第33张图片

[root@hadoop01 sbin]# vi sbin/start-yarn.sh 
[root@hadoop01 sbin]# vi sbin/stop-yarn.sh 

YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

注意:若不添加上述权限,则会报错:缺少用户权限定义所致:
ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.


六、初始化 、启动:

1、式化:(命令 “ hdfs namenode -format ”)

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第34张图片

基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细_第35张图片

 

2、启动(两种方式均可启动)
方法一:(命令 “ start-all.sh ”)
 

 

方法一:(命令 “ start-dfs.sh  ” , “ start-yarn.sh ”)
[root@hadoop01 hadoop-3.2.0]# sbin/start-dfs.sh
[root@hadoop01 hadoop-3.2.0]# sbin/start-yarn.sh

2、验证Hadoop启动成功:
主节点
[root@hadoop01 sbin]# jps
11329 NameNode
11831 ResourceManager
11592 SecondaryNameNode
12186 Jps
从节点
[root@hadoop02 hadoop]# jps
5152 SecondaryNameNode
5085 DataNode
5245 NodeManager
5357 Jps

[root@hadoop03 opt]# jps
5080 DataNode
5178 NodeManager
5278 Jps

[root@hadoop04 opt]# jps
5090 NodeManager
5190 Jps
4991 DataNode
 

 

七、Web端口访问

注:先开放端口或直接关闭防火墙。

# 查看防火墙状态
firewall-cmd --state
# 临时关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

在浏览器输入:http://hadoop01:8088打开ResourceManager页面。

在浏览器输入:http://hadoop01:50070打开Hadoop Namenode页面。

 注意:如果输入主节点名称无法打开Web页面,则需要配置Windows上的hosts,路径如下:

C:\Windows\System32\drivers\etc\hosts

192.168.44.3 hadooop01
192.168.44.4 hadooop02
192.168.44.5 hadooop03
192.168.44.6 hadooop04

 

 

/*---------------------

作者:杨
版权声明:
       本文为博主原创文章,转载请附上源文链接!

本文链接:https://my.oschina.net/yangmufa/blog/3101846

如果觉得本文对你有所收获,你的请评论点赞

与合理优质的转发也将是鼓励支持我继续创作的动力,

 也欢迎访问个人网站:www.yangmufa.com(或百度   杨木发个人博客)

(不断学习 坚持创作 善于总结 共同进步)
---------------------*/

转载于:https://my.oschina.net/yangmufa/blog/3101846

你可能感兴趣的:(基于CentOS7的Hadoop3.2.0安装和分布式系统集群部署详细)