Hadoop集群搭建

Hadoop集群搭建

Hadoop集群简介

  • Hadoop集群:HDFS集群,YARN集群
  • 两个集群逻辑上分离,通常物理在一起
  • 两个集群都是标准主从集群
HDFS 分布式存储
主角色 NameNode
从角色 DataNode
主角色辅助角色 SecondaryNameNode
YARN 资源管理调度
主角色 ResoureManager
从角色 NodeManager

☎️Hadoop集群模式安装

源码包下载地址

  • 集群规划

    主机 角色
    node1 NN DN RM NM
    node2 SNN DN NM
    node3 DN NM
  • 基础环境搭建

    #编译环境软件安装目录
    mkdir -p /export/server
    
    #设置host映射
    cat >> /etc/hosts <<EOF
    #你每台主机的IP地址 和你自己设置的主机名或者域名 这几行都是可以你自己设置的
    192.168.88.128 node1
    192.168.88.129 node2
    192.168.88.130 node3
    EOF
    
    # JDK 1.8安装  上传 jdk-8u241-linux-x64.tar.gz到/export/server/目录下
    tar zxvf jdk-8u241-linux-x64.tar.gz
    
    #关闭防火墙与selinux 脚本在下方赋予执行权限
    
    
    
#ssh免密登录(node1>node1|node2|node3)
  ssh keygen
  ssh-copy-id node1
  ssh-copy-id node2
  ssh-copy-id node3
  #同步网络时间
  yum -y install ntpdate
  ntpdate ntp4.aliyun.com

  #统一工作目录
  mkdir -p /export/server/ #软件安装路径
  mkdir -p /export/data/ #数据存储路径
  mkdir -p /export/software/ #安装包存放路径

  #配置环境变量
  vim /etc/profile
  	export JAVA_HOME=/export/server/jdk1.8.0_241
  	export PATH=$PATH:$JAVA_HOME/bin
  	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  #重新加载环境配置变量
  source /etc/profile
  • 关闭防火墙和selinux脚本

    
    #!/bin/bash
    
    # 关闭防火墙
    echo "正在关闭防火墙..."
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    echo "防火墙已关闭并禁用。"
    
    # 检查 SELinux 状态
    sestatus=$(sestatus | grep "SELinux status" | awk '{print $3}')
    
    if [ "$sestatus" == "enabled" ]; then
        # 关闭 SELinux
        echo "正在关闭 SELinux..."
        sudo setenforce 0
        sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
        echo "SELinux 已关闭。"
    else
        echo "SELinux 已经处于禁用状态,无需操作。"
    fi
    
    echo "脚本执行完毕。"
    
    
  • Hadoop安装包上传到node1 /export/server

    [root@node1 server]# ls
    hadoop-3.3.0-Centos7-64-with-snappy.tar.gz  jdk1.8.0_241
    
    #解压
    tar zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
    
  • 修改配置文件node1最终将这些文件实验scp传输到其他主机(hadoop-3.3.0/etc/hadoop)

    • hadoop-env.sh

      #文件最后添加
      export JAVA_HOME=/export/server/jdk1.8.0_241
      #告诉Hadoop JDK在哪
      export HDFS_NAMENODE_USER=root
      export HDFS_DATANODE_USER=root
      export HDFS_SECONDARYNAMENODE_USER=root
      export YARN_RESOURCEMANAGER_USER=root
      export YARN_NODEMANAGER_USER=root 
      
      
    • core-site.xml(在两个configuration中间粘贴)

      
      <property>
          <name>fs.defaultFSname>
          <value>hdfs://node1:8020value>
      property>
      
      
      <property>
          <name>hadoop.tmp.dirname>
          <value>/export/data/hadoop-3.3.0value>
      property>
      
      
      <property>
          <name>hadoop.http.staticuser.username>
          <value>rootvalue>
      property>
      
      
      <property>
          <name>hadoop.proxyuser.root.hostsname>
          <value>*value>
      property>
      
      <property>
          <name>hadoop.proxyuser.root.groupsname>
          <value>*value>
      property>
      
      
      <property>
          <name>fs.trash.intervalname>
          <value>1440value>
      property>
      
    • hdfs-site.xml(在两个configuration中间粘贴)

      
      <property>
          <name>dfs.namenode.secondary.http-addressname>
          <value>node2:9868value>
      property>
      
    • mapred-site.xml(在两个configuration中间粘贴)

      
      <property>
        <name>mapreduce.framework.namename>
        <value>yarnvalue>
      property>
      
      
      <property>
        <name>mapreduce.jobhistory.addressname>
        <value>node1:10020value>
      property>
       
      
      <property>
        <name>mapreduce.jobhistory.webapp.addressname>
        <value>node1:19888value>
      property>
      
      <property>
        <name>yarn.app.mapreduce.am.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
      property>
      
      <property>
        <name>mapreduce.map.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
      property>
      
      <property>
        <name>mapreduce.reduce.envname>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
      property>
      
    • yarn-site.xml

      
      <property>
      	<name>yarn.resourcemanager.hostnamename>
      	<value>node1value>
      property>
      
      <property>
          <name>yarn.nodemanager.aux-servicesname>
          <value>mapreduce_shufflevalue>
      property>
      
      
      <property>
          <name>yarn.nodemanager.pmem-check-enabledname>
          <value>falsevalue>
      property>
      
      
      <property>
          <name>yarn.nodemanager.vmem-check-enabledname>
          <value>falsevalue>
      property>
      
      
      <property>
        <name>yarn.log-aggregation-enablename>
        <value>truevalue>
      property>
      
      
      <property>
          <name>yarn.log.server.urlname>
          <value>http://node1:19888/jobhistory/logsvalue>
      property>
      
      
      <property>
        <name>yarn.log-aggregation.retain-secondsname>
        <value>604800value>
      property>
      
    • workers

      node1
      node2
      node3
      
  • 分发同步hadoop安装包

    cd /export/server
    
    scp -r hadoop-3.3.0 root@node2:$PWD
    scp -r hadoop-3.3.0 root@node3:$PWD
    
  • 将Hadoop添加到环境变量当中

    vim /etc/profile
    
    export HADOOP_HOME=/export/server/hadoop-3.3.0
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    source /etc/profile
    
    
#scp给其他两台机器
[root@node1 ~]# scp /etc/profile node2:/etc/
profile                                                                                          100% 2064     1.3MB/s   00:00
[root@node1 ~]# scp /etc/profile node3:/etc/
profile                                                                                          100% 2064     1.1MB/s   00:00
  • NameNode format(格式化)

    • 首次启动,必须进行格式化操作

    • 本质初始化,进行HDFS清理和准备工作

    • 只进行一次,后续不再需要

    • 如果多次格式化会导致hdfs集群主从角色互不识别。通过删除所有机器

      hadoop.tmp.dir目录重新format解决

    hdfs namenode -format
    

️Hadoop集群启停 Web UI

  • 集群启停

    • 在node1上,使用软件自带的shell脚本一键启动。前提:配置好机器之间的SSH免密登录和workers文件。

    • HDFS集群

    start-dfs.sh 
    
    stop-dfs.sh 
    
    • YARN集群
    start-yarn.sh
    stop-yarn.sh
    
    • Hadoop集群

      start-all.sh
      stop-all.sh 
      
    • 进程状态,日志查看

      jps命令
      
      Hadoop启动日志路径 /export/server/hadoop-3.3.0/logs/
      
    • Web UI页面 (C:\Windows\System32\drivers\etc\hosts配置IP地址和主机名)

      • HDFS集群:http://node1:9870/
      • YARN集群:http://node1:8088/

Hadoop初体验

#创建文件夹
[root@node1 ~]# hadoop fs -mkdir /rkun18
[root@node1 ~]# hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2023-06-13 01:26 /rkun18

在Web UI上也可以查看,操控:

Hadoop集群搭建_第1张图片

#上传文件
[root@node1 ~]# echo hello hadoop > hp
[root@node1 ~]# ll
total 12
-rw-------. 1 root root 1228 Jun 12 10:16 anaconda-ks.cfg
-rw-r--r--  1 root root   13 Jun 13 01:29 hp
-rwxr--r--. 1 root root  580 Jun 12 12:01 spt
[root@node1 ~]# hadoop fs -put hp /

  • HDFS本质文件系统
  • 有目录树结构,与Linux类似,分文件和文件夹
  • 上传小文件也较慢
#计算圆周率
[root@node1 mapreduce]# pwd
/export/server/hadoop-3.3.0/share/hadoop/mapreduce
[root@node1 mapreduce]# ll
... #此处省略
-rw-r--r--. 1 root root  281197 Jul 15  2021 hadoop-mapreduce-examples-3.3.0.jar
...
[root@node1 mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.0.jar  pi 2 2
Number of Maps  = 2
Samples per Map = 2
Wrote input for Map #0
Wrote input for Map #1
Starting Job
... #此处省略
Job Finished in 66.387 seconds
Estimated value of Pi is 4.00000000000000000000

你可能感兴趣的:(#,大数据,hadoop,hdfs,大数据)