• 【Hadoop】学习笔记(一)


    一、入门

    1.1、Hadoop优势

    1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
      在这里插入图片描述
    2. 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
      在这里插入图片描述
    3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
      在这里插入图片描述
    4. 高容错性:能够自动将失败的任务重新分配。
      在这里插入图片描述

    1.2、Hadoop组成

    在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
    在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。
    在Hadoop3.x在组成上没有变化。

    在这里插入图片描述

    1.2.1、HDFS架构概述

    Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

    1. NameNode (nn)︰存储文件的元数据,如文件名文件目录结构文件属性(生成时间、副本数、文件权限),以及每个文件的块列表块所在的DataNode等。
    2. DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和
    3. Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份

    1.2.2、YARN架构概述

    Yet Another Resource Negotiator简称YARN,另一种资源协调者,是Hadoop 的资源管理器。

    1. ResourceManager (RM):整个集群资源(内存、CPU等)的老大
    2. NodeManager (NM)︰单个节点服务器资源老大
    3. ApplicationMaster (AM)︰单个任务运行的老大
    4. container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。

    在这里插入图片描述
    客户端可以有多个

    集群上可以运行多个ApplicationMaster

    每个NodeManager上可以有多个Container

    1.2.3、MapReduce架构概述

    MapReduce将计算过程分为两个阶段: Map和 Reducee

    1. Map阶段并行处理输入数据
    2. Reduce阶段对Map结果进行汇总k

    在这里插入图片描述

    1.2.4、HDFS、YARN、MapReduce三者关系

    在这里插入图片描述

    1.3、大数据技术生态体系

    在这里插入图片描述

    二、Hadoop运行环境搭建

    2.1、模板虚拟机环境准备

    2.1.1、CentOS 硬盘分配

    挂载点:/boot 期望容量:1G 文件系统:ext4
    挂载点:swap 期望容量:4G 文件系统:swap
    挂载点:/ 期望容量:默认 文件系统:xfs

    2.1.2、IP和主机名称

    su root
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 1
    • 2

    更改
    BOOTPROTO=" static"
    添加
    IPADDR=“192.168.3.24” #IP地址
    PREFIX=“24”
    GATEWAY=“192.168.3.1” #网关地址
    DNS1=“202.97.224.68” #域名解析器
    IPV6_PRIVACY=“no”

    vim /etc/hostname
    
    • 1

    更改为自己的主机名称

    vim /etc/hosts
    
    • 1

    添加主机映射
    192.168.3.24 master
    192.168.3.25 slave1
    192.168.3.26 slave2

    reboot
    
    • 1

    在win10上配置主机映射
    C:\windows\system32\drivers\etc
    添加主机映射
    192.168.3.24 master
    192.168.3.25 slave1
    192.168.3.26 slave2

    2.1.3、模板虚拟机准备完成

    【首先保证网络畅通】
    在这里插入图片描述
    【安装 epel-release】

    yum install -y epel-release
    
    • 1

    【关闭防火墙,关闭防火墙开机自启】

    systemctl stop firewallde
    
    • 1
    systemctl disable firewalld.service
    
    • 1

    【删除自带的jdk】

    rpm -qa | grep jdk
    
    • 1
    rpm -e --nodeps   XXXXX.jdk
    
    • 1

    【安装jdk】
    【安装Hadoop】
    【配置 Hadoop {参考本文2.4、集群配置} 】
    【配置 workers {参考本文2.5.1、配置 workers} 】

    2.2、克隆虚拟机

    修改克隆机IP
    修改克隆机主机名称

    2.3、ssh免密登入

    在这里插入图片描述

    cd .ssh/
    ssh-keygen -t rsa
    ssh-copy-id 要传给主机的主机名
    
    • 1
    • 2
    • 3

    2.4、集群配置

    2.4.1、集群部署规划

    NameNode和 SecondaryNameNode不要安装在同一台服务器
    ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上

    在这里插入图片描述

    2.4.2、配置文件说明

    Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
    在这里插入图片描述
    在这里插入图片描述

    2.4.2.1、核心配置文件 core-site. xml
    
    
    <configuration>
    	<property>
    		<name>fs.defaultFSname>
    		<value>hdfs://master:9000value>
    		<description>指定默认NameNode的访问地址以及端口号description>
    	property>
    	<property>
    		<name>hadoop.tmp.dirname>
    		<value>/usr/work/hadoop/data/tmpvalue>
    		<description>其它临时目录的父目录,会被其它临时目录用到description>
    	property>
    	<property>
    		<name>hadoop.http.staticuser.username>
    		<value>rootvalue>
    		<description>配置HDFS 网页登录使用的静态用户description>
    	property>
    configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    2.4.2.2、HDFS 配置文件 hdfs-site.xml
    <configuration>
    	
    	<property>
    		<name>dfs.namenode.http-addressname>
    		<value>master:50070value> 
    		<description>hdfs web端访问地址description>
    	property>
    	<property>
    		<name>dfs.namenode.secondary.http-addressname>
    		<value>hadoop104:9868value>
    		<description>2nn web端访问地址description>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    2.4.2.3、YARN配置文件 yarn-site.xml
    <configuration>
    	<property>
    		<name>yarn.nodemanager.aux-servicesname>
    		<value>mapreduce_shufflevalue>
    		<description>获取数据的方式是shuffledescription>
    	property>
    	<property>
    		<name>yarn.resourcemanager.hostnamename>
    		<value>mastervalue>
    		<description>指定ResourceManager的地址description>
    	property>
    	<property>
    		<name>yarn.resourcemanager.webapp.addressname>
    		<value>master:8088value>
    		<description>配置 yarn 外部可访问,(外网IP:端口)description>
    	property>
    	<property>
    		<name>yarn.nodemanager.vmem-check-enabledname>
    		<value>falsevalue>
    		<description>关闭内存检测,虚拟机需要,不配会报错description>
    	property>
    	<property>
    		<name>yarn. log-aggregation-enablename>
    		<value>truevalue>
    		<description>日志聚集功能description>
    	property>
    	<property> 
    		<name>yarn.log.server.urlname>
    		<value>http://hadoop102:19888/jobhistory/logsvalue>
    		<description>设置日志聚集服务器地址description>
    	property>
    	<property>
    		<name>yarn.log-aggregation.retain-secondsname>
    		<value>604800value>
    		<description>设置目志保留时间为7天description>
    	property>
    
    	<property>
    		<name>yarn.nodemanager.pmem-check-enabledname>
    		<value>falsevalue>
    	property>
    	<property>
    		<name>yarn.nodemanager.vmem-check-enabledname>
    		<value>falsevalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    2.4.2.4、MapReduce配置文件 mapred-site.xml
    <configuration>
    	<property>
    		<name>mapreduce.framework.namename>
    		<value>yarnvalue>
    		<description>指定MapReduce程序运行在Yarn上description>
    	property>
    	<property>
    		<name>mapreduce.jobhistory.addressname>
    		<value>hadoop102:10020value>
    		<description>历史服务器端地址description>
    	property>
    	<property>
    		<name>mapreduce.jobhistory.webapp.addressname>
    		<value>hadoop102:19888value>
    		<description>历史服务器web端地址址description>
    	property>
    
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.5、群起集群

    2.5.1、配置 workers

    vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
    
    • 1

    在该文件中增加Hadoop主机名称

    2.5.2、启动集群

    (1)如果集群是第一次启动,需要在 hadoop102节点格式化NameNode ( 注意:格式化 NameNode,会产生新的集群id,导致NameNode,和 DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode,和 datanode,进程,并且要删除所有机器的data和 logs目录,然后再进行格式化。 )

    hdfs namenode -format
    sbin start-all.sh
    
    在配置了ResourceManager的节点启动YARN
    sbin start-yarn.sh
    在配置了jobhistory的节点启动历史服务器
    mapred --daemon start historyserver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.5.3、常用脚本

    2.5.3.1、集群分发

    #!/bin/bash
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
     echo Not Enough Arguement!
     exit;
    fi
    #2. 遍历集群所有机器
    for host in hadoop102 hadoop103 hadoop104
    do
     echo ==================== $host ====================
     #3. 遍历所有目录,挨个发送
     for file in $@
     do
     #4. 判断文件是否存在
     if [ -e $file ]
     then
     #5. 获取父目录
     pdir=$(cd -P $(dirname $file); pwd)
     #6. 获取当前文件的名称
     fname=$(basename $file)
     ssh $host "mkdir -p $pdir"
     rsync -av $pdir/$fname $host:$pdir
     else
     echo $file does not exists!
     fi
     done
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    执行时,只需:xsync 文件或文件夹1 文件或文件夹2.....执行即可。

    2.5.3.2、集群集中启动、停止

    #!/bin/bash
    
    if [ $# -lt 1 ]
    then
      echo "No args Input..."
      exit;
    fi
    
    case $1 in
    "start")
      echo "============= 启动hadoop集群 ======================"
    
      echo "------------- 启动 hdfs ---------------------------"
      ssh hadoop102 "/opt/module/hadoop-3.2.3/sbin/start-dfs.sh"
      echo "------------- 启动 yarn ---------------------------"
      ssh hadoop103 "/opt/module/hadoop-3.2.3/sbin/start-yarn.sh"
      echo "---------- 启动 historyserver ----------------------"
      ssh hadoop102 "/opt/module/hadoop-3.2.3/bin/mapred --daemon start historyserver"
    ;;
    "stop")
      echo "================ 关闭hadoop集群 =========================="
    
      echo "-------------- 关闭historyserver ------------------------"
      ssh hadoop102 "/opt/module/hadoop-3.2.3/bin/mapred --daemon stop historyserver"
      echo "---------------- 关闭 yarn ------------------------------"
      ssh hadoop103 "/opt/module/hadoop-3.2.3/sbin/stop-yarn.sh"
      echo "---------------- 关闭 hdfs ------------------------------"
      ssh hadoop102 "/opt/module/hadoop-3.2.3/sbin/stop-dfs.sh"
    ;;
    *)
      echo "Input Args Error..."
    ;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    使用
    停止myhadoop.sh stop
    启动myhadoop.sh start

    2.5.3.3、遍历集群中每台服务器调用jps查看上面的java进程启动情况

    #!/bin/bash
    
    for host in hadoop102 hadoop103 hadoop104
    do
      echo ================= $host =================
      ssh $host jps
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    使用 jpsall

    三、常用端口和配置文件

    Hadoop 3.x中:

    ● HDFS NameNode 内部通讯端口:8020/9000/9820
    ● HDFS NameNode 对用户的web查询端口:9870
    ● Yarn查看任务运行情况的web页面端口:8088
    ● 历史服务器对外暴露的web页面端口:19888

    hadoop 3.x中:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers

  • 相关阅读:
    地形有通挂支隘险远六种情况
    【C语言】ROUND_UP宏定义的解释
    基于Java springMVC+MySQL的大学校园BBS论坛网站设计与实现
    【前后缀技巧】2022牛客多校3 A
    docker概述
    【C++】常用遍历算法
    大数据之Hudi数据湖_基本概念_时间轴_TimeLine---大数据之Hudi数据湖工作笔记0005
    rust 初识基础: 变量、数据类型、函数、所有权、枚举
    一用就会的手机配音软件,效果好到你震惊~
    1029 旧键盘
  • 原文地址:https://blog.csdn.net/lushixuan12345/article/details/126088525