• 在centos7上搭建hadoop集群


    准备工作

    主机名称

    系统环境

    ip地址

    hadoop-master

    centos7

    192.168.150.181

    hadoop-slave1

    centos7

    192.168.150.182

    hadoop-slave2

    centos7

    192.168.150.183

    1.下载hadoop
    本文用的是hadoop-2.7.3的版本
    下载hadoop的链接:http://hadoop.apache.org/releases.html#25+August%2C+2016%3A+Release+2.7.3+available
    这里写图片描述

    2.下载jdk
    本文用的是jdk1.8
    jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    这里写图片描述

    3.安装3个虚拟机并实现ssh免密码登录
    - 1.安装虚拟机
    这里用的linux系统是CentOS7,安装方法请看上篇博客(centos7 Linux环境的搭建);安装3台机器,机器名分别是hadoop-master、hadoop-slave1、hadoop-slaver2
    1.1)机器在安装的时候,可以创建1个hadoop用户,之后通过hostname进行修改;
    1.2)也可以使用克隆的方式复制多个独立的虚拟机,每个虚拟机创建一个Hadoop用户并加入到root组中useradd -m hadoop -G root -s /bin/bash 利用 passwd hadoop 配置密码遇到提示说密码简单就再输入一次
    如图:
    - 2.配置ip和主机名

    用root用户登录hadoop-master主机上配置

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 1

    这里写图片描述
    注意如果你是克隆的虚拟机那么每个虚拟机的网卡UUID是一样的,这个不行,所有要删除这个,让它自动在生成一个
    重启网路服务:systemctl restart network
    我的实验是把上面图中的ip地址改为192.168.196.162 默认网关设置为192.168.150.2 为什么这么做,根据什么要看看你的虚拟机网络编辑器 这个在虚拟机菜单 编辑 中 我的设置如图:
    这里写图片描述
    如果你在上图中设置取消了DHCP那么你想让你的电脑访问虚拟机就设置你的电脑中
    这里写图片描述
    配置静态IP
    这里写图片描述
    修改主机名:vi /etc/hostname删除原有的,修改成hadoop-master 保存退出
    - 3. 修改/etc/hosts文件
    修改hosts:vi 、etc/hosts配置如图所示:
    这里写图片描述
    保存退出,重启虚拟机。在每个虚拟机里重复修改网卡(ifcfg-enss*),hostname,hosts 的步骤,重启后测试互通性
    要求在hadoop-master中能ping通slave1,slave2。其它任何一个虚拟机中都能ping通另外两个才行
    这里写图片描述
    - 4.给hadoop-master生成秘钥文件并且在hadoop-master上创建authorized_keys文件
    检查每个虚拟机上是否安装了ssh 和 启动了sshd服务

    rpm -qa | grep ssh
    
    • 1

    如图所示:(出现ssh server和client证明已经安装)
    这里写图片描述
    如果没有安装请执行下面的代码:(遇到输入y/N输入y)

    yum -y install openssl openssh-server openssh-clients
    
    • 1

    退出所有虚拟机上root登陆用户,使用hadoop用户登录

    在每个虚拟机上执行ssh localhost测试一下,最好都做一下,非常有用,会生成 .ssh 隐藏文件夹,遇到提示输入yes
    这里写图片描述

    在hadoop-master虚拟机上生成ssh密钥

    cd .ssh
    ssh-keygen -t rsa #遇到提示一路回车就行
    ll #会看到 id_rsa id_rsa.pub 两文件前为私钥,后为公钥
    cat id_rsa.pub >> authorized_keys #把公钥内容追加到authorized_keys文件中
    chmod 600 authorized_keys #修改文件权限,重要不要忽略
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如图:
    这里写图片描述
    至此hadoop-master可以无密码登陆自己了,测试 ssh localhost 不再提示输入密码,如果不能请检查少了上面那一步

    • 5.将authorized_keys文件复制到其他机器,实现hadoop-master无密码登陆到所有slave上

      scp authorized_keys hadoop@hadoop-slave1:~/.ssh/
      scp authorized_keys hadoop@hadoop-slave2:~/.ssh/

    如图:
    这里写图片描述

    • 6.测试使用ssh进行无密码登录
      这里写图片描述

    安装jdk8+并搭建环境变量

    使用xftp把jdk-8u121-Linux-x64.rpm传送到每个虚拟机上

    如图:
    这里写图片描述
    这里写图片描述

    使用下面代码安装

    sudo yum -y install jdk-8u121-linux-x64.rpm 
    
    • 1

    如果出现这样的错误 hadoop 不在 sudoers 文件中。此事将被报告

    可以使用两种途径解决:
    1)切换到root用户下

    su
    yum -y install jdk-8u121-linux-x64.rpm
    
    • 1
    • 2

    2)切换到root用户下,配置hadoop的权限,改为root权限

    su
    visudo
    
    • 1
    • 2

    之后输入:89 回车 添加hadoop ALL=(ALL) ALL 注意不是空格是制表符
    这里写图片描述
    保存退出,切换到hadoop用户下,重新输入命令:sudo yum -y install jdk-8u121-linux-x64.rpm 测试是否安装成功,输入如下命令

    java -version
    
    • 1

    如图表示安装成功:
    这里写图片描述

    搭建环境变量,我使用本地环境变量,默认安装的jdk在/usr/Java/jdk1.8.0_121

    vi .bashrc
    
    • 1

    添加

    # Java Environment Variables
    export JAVA_HOME=/usr/java/jdk1.8.0_121
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 1
    • 2
    • 3

    这里写图片描述
    退出,保存,执行如下命令:

    source .bashrc
    
    • 1

    验证命令:echo $PATH/JAVA_HOME
    这里写图片描述
    注意:每台机器上都要做一遍

    安装hadoop并配置

    使用xftp把hadoop-2.7.3.tar.gz传送到每个虚拟机上(这一步可以在传jdk的时候一起做)

    使用tar -xzvf hadoop-2.7.3.tar.gz 解压

    配置hadoop环境变量vi .bashrc 我的hadoop安装目录/home/hadoop/hadoop-2.7.3

    添加

    # Hadoop Environment Variables
    export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里写图片描述

    编辑如下5个文件 在 /home/hadoop/hadoop-2.7.3/etc/hadoop 目录中

    1.core-site.xml

    
    
    
        
        
            fs.defaultFS
            hdfs://hadoop-master:9000
        
        
        
            hadoop.tmp.dir
            file:/home/hadoop/hadoop-2.7.3/tmp
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.hdfs-site.xml

    
    
    
            
            
                    dfs.namenode.secondary.http-address
                    hadoop-master:50090
            
            
            
                    dfs.replication
                    2
            
             
            
                    dfs.namenode.name.dir
                    file:/home/hadoop/hadoop-2.7.3/tmp/dfs/name
            
             
            
                    dfs.datanode.data.dir
                    file:/home/hadoop/hadoop-2.7.3/tmp/dfs/data
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3.mapred-site.xml

    
    
    
            
            
                    mapreduce.framework.name
                    yarn
            
            
                    mapreduce.jobhistory.address
                    hadoop-master:10020
            
            
                    mapreduce.jobhistory.webapp.address
                    hadoop-master:19888
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.yarn-site.xml

    
    
     
    
            
                    yarn.resourcemanager.hostname
                    hadoop-master
            
             
            
                    yarn.nodemanager.aux-services
                    mapreduce_shuffle
            
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.slaves

    hadoop-slave1
    hadoop-slave2
    
    • 1
    • 2

    运行hadoop集群#

    关闭防火墙和selinux

    在root用户下执行

    systemctl disable firewalld   #此命令在下次重启时生效,将永久关闭防火墙
    
    #或用
    
    systemctl stop firewalld    #只在本次运用时生效,下次开启机器时需重复此操作
    setenforce 0  #仅此次关闭selinux,下次开启机器时需重复此操作
    
    #永久关闭selinux 
    vi /etc/selinux/config
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里写图片描述
    在每台机子上都执行此操作

    **

    启动hadoop集群

    **
    在hadoop-master执行如下命令:

    hdfs namenode -format #第一次启动要执行格式化,之后启动不用执行这个
    start-dfs.sh
    start-yarn.sh
    mr-jobhistory-daemon.sh start historyserver
    
    • 1
    • 2
    • 3
    • 4

    之后在hadoop-master 执行jps

    看到如下算成功:

    [hadoop@hadoop-master ~]$ jps
    3345 NameNode
    3529 SecondaryNameNode
    3962 JobHistoryServer
    3678 ResourceManager
    3998 Jps
    [hadoop@hadoop-master ~]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在hadoop-slave1 和 hadoop-slave2上 执行jps

    在hadoop-slave1上

    [hadoop@hadoop-slave1 ~]$ jps
    3142 DataNode
    3357 Jps
    3246 NodeManager
    [hadoop@hadoop-slave1 ~]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在hadoop-slave2上

    [hadoop@hadoop-slave2 ~]$ jps
    3092 DataNode
    3306 Jps
    3196 NodeManager
    [hadoop@hadoop-slave2 ~]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    上面的信息中数字表示进程ID,后面的字符表示进程名字
    缺少任何一个进程表示集群启动失败
    失败可以通过查看日志查找原因

    如果通过真机win访问hadoop web管理界面需要先配置真机的hosts文件它存在于C:WindowsSystem32driversetc 目录中 在hosts文件中添加

    192.168.150.181 hadoop-master
    192.168.150.182 hadoop-slave1
    192.168.150.183 hadoop-slave2
    
    • 1
    • 2
    • 3

    之后访问 http://hadoop-master:50070 查看节点状态

    这里写图片描述

    访问http://hadoop-master:8088 查看如图

    这里写图片描述

  • 相关阅读:
    在选购腾讯云服务器时需要注意哪些参数?
    从油猴脚本管理器的角度审视Chrome扩展
    C# 实现迷宫游戏
    孙凝晖院士:集成芯片引领高性能计算革命
    从PMP理论看华为销售项目运作与管理
    Kubernetes rancher、prometheus、ELK的安装
    09数据结构与算法刷题之【位运算】篇
    Unity3D热更设计:一款基于 HybridCLR的C#热更方案
    多测师肖sir_高级讲师_python安装和pycharm(002)
    卷积神经网络(CNN)理解
  • 原文地址:https://blog.csdn.net/m0_67402341/article/details/126565428