• 基于Win11、CentOS7、VMWare15pro搭建Hadoop2.7.7


    基于Win11、CentOS7、VMWare15pro搭建Hadoop2.7.7

    注意,本文章只有实操,基本没有理论概述,因为鄙人也在新手阶段,这点微薄知识就不上传了。需要进一步深入了解请移步到官网

    一. 安装

    1. 首先在vm虚拟机里搭建一台linux(centos7)root账户密码都设置为 123456
    2. 注意的事项为
      以下文章的命令都是适用centos7的,centos6部分命令不适用
      hadoop01 的内存为4G,hadoop02、hadoop03都为3G
      不要配置分区
      不要配置yum源
      语言都使用English(US) 方便学习 或 不要产生不必要的问题
      不要安装图形界面
      网络模式使用NAT
      参考链接:https://www.cnblogs.com/frankdeng/p/9027037.html

    二. 配置IP映射

    1. 安装完成后找到vm虚拟机左上角的编辑 -> 虚拟网络编辑器 -> 选择类型为NAT模式 -> 下方子网IP改为:

      192.168.121.0

    2. 右下DHCP设置 -> 起始IP与结束IP分别改为:

      192.168.121.128
      192.168.121.254

    3. 打开hadoop01,登陆root账户 vi /etc/hostsi 在下面输入:

      192.168.121.134 hadoop01
      192.168.121.135 hadoop02
      192.168.121.136 hadoop03

      保存: Esc > :wq

    三. 克隆

    1. 克隆前先把 hadoop01 关机
      在左边库中对hadoop01右键找到管理->克隆->选择完整克隆
      修改克隆的名字为hadoop02与存储位置 (建议把三台linux放在同一个位置)
      克隆完后修改内存为3G
      hadoop03一样的操作

    四. 修改主机名

    1. hadoop02、hadoop03也要修改对应的主机名

      hostnamectl set-hostname hadoop01
      查看结果
      hostname
      重启生效
      reboot

    五. 配置网卡

    hadoop01
    HWADDR 的值在左边我的计算机下面的hadoop01右键->设置->网络适配器->高级->下方的MAC地址找到后复制到某个文本里 后面需要用到

    1. 修改网卡配置 ifcfg-ens33 以实际为准 可在该目录下查看 一般第一个就是

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

      修改:
      ONBOOT=yes
      BOOTPROTO=static
      添加:
      IPADDR=192.168.121.134
      GATEWAY=192.168.121.2
      NETMASK=255.255.255.0
      DNS1=8.8.8.8
      DNS2=114.114.114.114
      HWADDR=00:0C:29:29:B9:44
      删除:
      UUID 或者注释 #UUID
      重启网卡:
      systemctl restart network.service 
      验证:
      ping www.baidu.com
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      1. 关闭NetworkManager

        systemctl stop NetworkManager.service
        systemctl disable NetworkManager.service

        hadoop02、hadoop03也是一样的操作,除了ip地址与HWADDR值不一样

    六. 关闭防火墙

    hadoop02、hadoop03也是一样的操作

    systemctl start firewalld (开启防火墙)
    systemctl status firewalld (查看防火墙状态 active 开启)
    systemctl disable firewalld (永久关闭防火墙 重启生效)
    systemctl stop firewalld (临时关闭 立即生效)
    systemctl status firewalld ( 检查为 inactive 关闭)

    七. 关闭SElinux

    hadoop02、hadoop03也是一样的操作

    查看命令 sestatus
    SELinux status: enabled (为开启)
    vi /etc/selinux/conf
    找到 SELINUX=enforcing
    修改为 SELINUX=disabled

    保存 esc > :wq
    重启 reboot
    验证效果

    ping hadoop01
    ping hadoop02
    ping hadoop03

    在每台都验证一下 看是否防火墙关闭成功

    八. 开启、配置shhd密匙认证

    1. 查看是否安装 ssh服务 rpm -qa | grep ssh
      没有则安装:yum install -y openssl openssh-server

      vi /etc/ssh/sshd_config

      将下面的值取消 注释 或 修改为 yes

      PermitRootLogin yes
      RSAAuthentication yes
      PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys

      重启sshd服务

      systemctl restart sshd

    2. 创建普通用户

      2.1. 在后面的操作都将使用普通用户进行操作,root账户的权限太高,防止出现不可逆转的因素

      创建普通用户
      useradd hadoop
      设置密码
      passwd hadoop (密码都为 123456)

      su hadoop

      2.2. 给普通用户添加使用sudo权限 (进入root账户操作)

      su
      visudo
      在 root ALL=(ALL) ALL 下面添加
      hadoop ALL=(ALL) ALL
      去掉 %wheel ALL=(ALL) NOPASSWD:ALL前面的#
      保存 esc > :wq
      gpasswd -a hadoop wheel
      su hadoop
      测试 sudo date

    3. 生成公钥与私钥
      然后在hadoop01、hadoop02、hadoop03上都运行下面代码

      ssh-keygen -t rsa
      ssh-copy-id hadoop01 # 输入yes 然后输入密码
      ssh-copy-id hadoop02
      ssh-copy-id hadoop03

    4. 免密测试

      ssh hadoop02
      ssh hadoop03
      ssh hadoop01

      都不需要输入密码就能登陆,就是成功了

    九. 安装配置jdk8

    1. 下载账户
      因为下载jdk需要登陆账户,所有为大家提供一个账户(密码后有位小数点),方便学习使用,请不要改密码,谢谢!

      user:lateautumns@163.com
      passwd: Oracle123.

    2. 首先创建目录在根目录下cd ~

      sudo mkdir -p /export/data # 存放数据类文件
      sudo mkdir -p /export/servers # 存放服务类软件
      sudo mkdir -p /export/software # 存放安装包文件

    3. 下载
      下载jdk-8uxxx-linux-x64.tar.gz (xxx表示版本)参考链接:https://blog.csdn.net/pdsu161530247/article/details/81582980
      利用SecureFX OR WinSCP等软件将文件上传到Linux里export/software目录下,执行下面命令

        cd /export/software
        tar -zxvf jdk-8uxxx-linux-x64.tar.gz -C /export/servers/
        配置环境变量
        vi /etc/profile
        执行下面命令快速编辑
        99gg > o 
        复制以下内容
        export JAVA_HOME=/export/servers/jdk1.8.0_xxx  #jdk安装目录
        export JRE_HOME=${JAVA_HOME}/jre
        export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
        export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
        export PATH=$PATH:${JAVA_PATH}
        保存命令
        esc > :wq 
        让环境变量立即生效 
        source /etc/profile 
        验证:
        javac 
        java -version
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

    十. 安装配置hadoop

    1. 安装:
      下载hadoop-2.7.7.tar.gz
      下载链接:https://archive.apache.org/dist/hadoop/common/?C=M;O=D
      利用SecureFX 将文件复制到export/software目录下

      cd /export/software
      tar -zxvf jdk-8uxxx-linux-x64.tar.gz -C /export/servers/
      配置环境变量
      vi /etc/profile
      export HADOOP_HOME=/usr/local/hadoop2.7.7
      export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
      让环境变量立即生效
      source /etc/profile
      验证
      hadoop version

      1. 修改配置文件:
        需要修改的配置文件有hadoop-env.sh、core-site.xml、 hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves。
        下面进行个性化配置
        hadoop-env.sh

        cd /export/servers/hadoop2.7.7/etc/hadoop/
        vi hadoop-env.sh
        将 export JAVA_HOME=${JAVA_HOME}
        修改为:export JAVA_HOME=/export/servers/jdk1.8.0_xxx # java安装路径
        保存:> esc > :wq

        core-site.xml

        vi core-site.xml
        找到标签
        在里面插入如下内容

        <property>
               	<name>fs.defaultFSname>
               	<value>hdfs://hadop01:9000value>
        property>
        <property>
               	<name>hadoop.tmp.dirname>
               	<value>/usr/local/hadoop2.7.7/tmpvalue>
        property>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

        保存:> esc > :wq

        hdfs-site.xml

        vi hdfs-site.xml
        找到
        在里面插入如下内容

        <property>
               	<name>dfs.replicationname>
               	<value>3value>
        property>
        <property>
               	<name>dfs.namenode.secondary.http-addressname>
               	<value>hadoop02:50090value>
        property>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

        保存:> esc > :wq

        mapred-site.xml
        没有该文件 需要使用用到模板文件进行复制改名

        cp mapred-site.xml.template mapred-site.xml
        vi mapred-site.xml
        找到
        在里面插入如下内容

        <property>
               	<name>mapreduce.framework.namename>
               	<value>yarnvalue>
        property>
        
        • 1
        • 2
        • 3
        • 4

        保存:> esc > :wq

        yarn-site.xml

        vi yarn-site.xml
        找到
        在里面插入如下内容

        <property>
        	<name>yarn.resourcemanager.hostnamename>
        	<value>hadoop01value>
        property>
        <property>
        	<name>yarn.nodemanager.aux-servicesname>
        	<value>mapreduce_shufflevalue>
        property>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

        保存:> esc > :wq

        slaves

        vi slaves
        删掉loaclhost
        添加 (每个占一行)
        hadoop01
        hadoop02
        hadoop03

    十一、分发配置文件与资源

    scp /etc/profile hadoop02:/etc/profile
    scp /etc/profile hadoop03:/etc/profile
    scp -r /usr/local/* hadoop02:/usr/local/
    scp -r /usr/local/* hadoop03:/usr/local/

    然后在hadoop02、hadoop03分别执行
    
    • 1

    source /etc/profile # 刷新配置文件

    分别验证

    java -version
    hadoop version

    十二. 测试启动Hadoop集群

    1. 格式化文件系统命令: hdfs namenode -format (在生成的日志记录中看到 been successfully formatted 表示成功)。
      如果有报错信息,查看报错信息,根据报错信息解决问题。一般为前面配置的4个文件是否有误。
      修改后重新格式化。
      使用普通用户启动hadoop集群(因为我们是在hadoop用户中配置的ssh免登陆)

      su hadoop
      start-dhs.sh # 这些命令是在hadoop目录下的sbin目录里
      start-yarn.sh
      jps # 查看节点是否启动 分别为
      hadoop01
      resourcemanager nodemanager datenode namenode
      hadoop02
      datenode nodemanager secondarynamenode
      hadoop03
      datenode nodemanager

      如果少一个,可以试试关闭集群,重新启动 或者单独启动缺少的节点 命令在sbin目录中查找
      需要在对应的节点启动对应的节点 (hadoop01为主节点)

      关闭命令
      stop-dhs.sh
      stop-yarn.sh

      还不行可能是配置,可以去查看haoop目录下的logs目录中的log文件找报错原因

      1. 配置windows的hosts文件
        找到C:WindowsSystem32driversetc 目录下的hosts文件,右键,属性,把只读的选项取消。然后用笔记本或notepad++打开hosts文件,在下面添加如下内容

        192.168.121.134 hadoop01
        192.168.121.135 hadoop02
        192.168.121.136 hadoop03

        在浏览器里打开 http://hadoop01:50070http://hadoop01:8088。查看运行情况,成功打开
        至此Hadoop集群搭建完毕

    十三. 测试Hadoop集群

    单词词频统计

    cd ~/export/data/
    sudo vi word.txt
    添加:
    hello itcast
    hello itheima
    hello hadoop
    保存:esc >:wq
    hadoop fs -mkdir -p /wordcount/input
    hadoop fs -put word.txt /wordcount/input
    cd /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/
    hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /wordcount/input wordcount/output

    查看浏览器的两个页面,8088端口的会显示运行状态,结束后,查看50070端口,点击utilities > Browse the file system 输入 /wordcount/output > 点击part-r-00000 > 下载后使用notepad++打开查看结果
    参考链接:https://blog.csdn.net/qq_40487484/article/details/96772856
    https://blog.csdn.net/pengjunlee/article/details/81589972
    https://www.cnblogs.com/theyang/p/12336391.html
    https://blog.csdn.net/pengjunlee/article/details/53932094

    十四. 配置hadoop集群时间同步

    使用Hadoop01为主服务器,其他节点根据主服务器来自动修正时间
    所有节点都需要安装ntp与ntpdate

    yum install -y ntp and yum install -y ntpdate

    hadoop01:

    vi /etc/ntp.conf

    授权192.168.121.128-192.168.121.255网段上的所有机器可以从这台机器上查询和同步时间

    修改
    restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

    restrict 192.168.121.128 mask 255.255.255.0 nomodify notrap

    集群在局域网中,不使用其他互联网上的时间
    注释 类似 server 0.centos.pool.ntp.org iburst 有多少注释多少
    并在后面添加主服务器的ip

    server 192.168.121.134
    server cn.pool.ntp.org perfer # 网络时间同步

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

    server 127.127.1.0
    fudge 127.127.1.0 stratum 10

    保存
    修改ntpd配置

    vi /etc/sysconfig/ntpd
    添加
    SYNC_HWCLOCK=yes
    重新启动
    systemctl enable ntpd
    systemctl restart ntpd
    开机自启
    chkconfig ntpd on

    hadoop02、hadoop03配置

    vi /etc/ntp.conf
    注释 类似 server 0.centos.pool.ntp.org iburst 有多少注释多少
    并在后面添加主服务器的ip
    server 192.168.121.134
    保存后
    crontab -e
    */10 * * * * /usr/sbin/ntpdate hadoop01 # 每过10分钟与hadoop01同步时间

    hadoop01 先调整时间

    sudo date -s “2022-3-17 18:18:06”

    等待其他机器同步时间

    ntpdate hadoop01 # 强制与hadoop01同步时间 但不建议这么做
    ntpd 是与服务器的时间通过计算慢慢的把自己的时间更改过来
    ntpdate 是立即同步时间,即时间的跃变。对某些依靠时间的程序造成不可逆转的问题

    参考连接:https://www.cnblogs.com/liushui-sky/p/9203657.html
    有问题请留言或联系鄙人
    不足之处请多多指教,感谢!!!

  • 相关阅读:
    如果编程语言是一门武功绝学
    微信小程序设计之主体文件app-json-window
    python flask_restful “message“: “Failed to decode JSON object: None“
    Android T 远程动画显示流程其三——桌面侧动画启动流程(更新中)
    【C语法学习】27 - strncat()函数
    在Java中如何优雅的停止一个线程?可别再用Thread.stop()了!
    交换机与路由器技术-02-以太网交换机工作原理
    Linux权限的概念和权限管理
    【物理应用】基于Matlab实现LBM-D2Q9模型粗糙界面流动
    pandas_使用总结(1)
  • 原文地址:https://blog.csdn.net/qq_46416934/article/details/126565576