• Hadoop学习1:概述、单体搭建、伪分布式搭建


    概述

    Hadoop: 分布式系统基础架构

    解决问题: 海量数据存储、海量数据的分析计算

    官网:https://hadoop.apache.org/

    HDFS(Hadoop Distributed File System): 分布式文件系统,用于存储数据

    Hadoop的默认配置【core-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/core-default.xml == 配置Hadoop集群中各个组件间共享属性和通用参数以实现更好的性能和可靠性 == hadoop目录\share\hadoop\common\hadoop-common-3.3.6.jar

    Hadoop的默认配置【hdfs-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml === 配置HDFS组件中各种参数以实现更好的性能和可靠性(如数据块大小、心跳间隔等)== hadoop目录\share\hadoop\hdfs\hadoop-hdfs-3.3.6.jar

    Hadoop的默认配置【mapred-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml === 配置MapReduce任务执行过程进行参数调整、优化等操作 == hadoop目录\share\hadoop\mapreduce\hadoop-mapreduce-client-core-3.3.6.jar

    Hadoop的默认配置【yarn-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml === 配置YARN资源管理器(ResourceManager)和节点管理器(NodeManager)的行为 == hadoop目录\share\hadoop\yarn\hadoop-yarn-common-3.3.6.jar

    基础知识

    Hadoop三大发行版本
    Apache:最基础版本,入门学习友好
    Cloudera:大型互联网企业用的多 == 收费
    Hotronwords:文档好
    Hadoop优点
    高可靠性:Hadoop底层维护多个数据副本,以即使adoop某个计算元素或存储出现贴故障,也不会导致据的丢失
    高扩展性:在集间分配任务数据,可方便的扩展数刻以干十的节点
    高效性:在MapReducel的思想下,Hadoop是并行工作的,以加快任务处理速度
    高容错性:能够自动将失败的任务重新分配
    Hadoop 1.x组成
    HDFS:数据存储
    Common:辅助工具
    MapReduce:计算以及资源调度

    Hadoop组件构成

    Hadoop 2.x组成
    HDFS:数据存储 == 涉及进程【NameNode、DataNode、SecondaryNameNode、Journal Node、NFSGateway】
    Common:辅助工具
    MapReduce:计算== 涉及进程【JobTracker、TaskTracker、MapTask、ReduceTask】
    Yarn:资源调度 == 涉及进程【ResourceManager、NodeManager、ApplicationMaster、TimelineServer】
    HDFS(分布式文件系统)组成
    NameNode:存储文件元数据,属性信息,比如文件名、文件权限等,以及每个文件的快列表以及其所在的DataNode
    DataNode:文件块数据、以及快数据的校验和
    Secondary NameNode:监控HDFS状态的程序,每隔一段时间获取HDFS元数据快照
    JournalNode:协调多个NameNodes之间共享编辑日志
    NFSGateway:提供给用户访问 HDFS 文件系统的一种途径, 它将 HDFS 文件系统映射为标准的网络文件系统 (NFS) 挂载点
    YARN(资源调度)组成
    ResourceManager:主节点,负责协调集群资源并分配给各个应用程序
    NodeManager:从节点,负责管理单个节点上的资源并执行任务
    ApplicationMaster:新应用程序提交到集群时,会创建一个ApplicationMaster实例
    TimelineServer:用户方便地查询 Hadoop 集群中运行过的历史作业和应用程序信息
    MapReduce(计算)组成
    JobTracker:主节点,负责协调集群资源并分配给各个任务
    TaskTracker:从节点,负责管理单个节点上的资源并执行任务
    JobHistoryServer:管理和存储MapReduce作业历史记录信息
    MapTask和ReduceTask:执行任务的Java程序。新作业被提交到集群时,会创建多个Mapper和Reducer实例处理数据
    MapReduce计算过程
    Map:并行处理输入数据
    Reduce:对Map结果进行汇总

    在这里插入图片描述

    Hadoop配置文件

    配置文件路径: hadoop目录/etc/hadoop

    在这里插入图片描述

    Hadoop配置文件
    core-site.xml:所有组件共享的通用属性和参数、修改文件系统、集群名称、日志路径等
    hdfs-site.xml:HDFS特定的属性和参数、数据快大小、副本数、NameNode、DataNode的存储路径
    mapred-site.xml:配置MapReduce任务执行过程进行参数调整、优化等操作
    yarn-site.xml:配置YARN资源管理器(ResourceManager)和节点管理器(NodeManager)的行为

    环境准备

    配置

    //修改主机名
    //more /etc/sysconfig/network == 内容如下  //不同机器取不同的HOSTNAME,不要取成一样的
    NETWORKING=yes
    HOSTNAME=hadoop107  
    
    //=======================
    
    //固定IP地址 == 自行百度
    ifconfig
    more /etc/sysconfig/network-scripts/ifcfg-ens33 
    
    //=======================
    // 查看自定义主机名、ip的映射关系 ==  more /etc/hosts
    ping 主机名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    在这里插入图片描述

    Hadoop配置

    下载

    官网: https://hadoop.apache.org/releases.html

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    配置环境变量
    //将压缩包解压到指定目录
    mkdir  -p /opt/module/ &&  tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/
    
    
    //进入解压后的软件目录
    cd /opt/module/hadoop-3.3.6
    
    //设置环境变量
    vim /etc/profile
    
    //此文件末尾添加下面四行内容
    ## Hadoop
    export HADOOP_HOME=/opt/module/hadoop-3.3.6
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    
    
    //使环境变量生效
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    在这里插入图片描述

    Hadoop运行模式

    默认模式
    生产真正使用
    分布模式
    本地模式(Local) == Standalone Operation
    伪分布模式(Pseudo-Distributed)== Pseudo-Distributed Operation
    完全分布模式(Fully-Distributed)== Fully-Distributed Operation

    Standalone Operation(本地)

    参考: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation

    官方Demo

    官方Demo,统计文件中某个正则规则的单词出现次数

    # hadoop目录
    cd /opt/module/hadoop-3.3.6
    
    # 创建数据源文件 == 用于下面进行demo统计单词
    mkdir input
    
    # 复制一些普通的文件
    cp etc/hadoop/*.xml input
    
    # 统计input里面的源文件规则是'dfs[a-z.]+'的单词个数,并将结果输出到当前目录下的output目录下 == 输出目录不得提前创建,运行时提示会报错
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.]+'
    
    # 查看统计结果
    cat output/*
    cat output/part-r-00000
    
    
    # 显示出来的结果,跟grep查出来的一样
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    WordCount单词统计Demo
    //创建数据目录
    mkdir -p /opt/module/hadoop-3.3.6/input/wordCountData && cd /opt/module/hadoop-3.3.6/input/
    
    
    //文件数据创建 = 用于demo测试
    echo "cat apple banana" >> wordCountData/data1.txt
    echo "dog" >> wordCountData/data1.txt
    echo " elephant" >> wordCountData/data1.txt
    
    
    echo "cat apple banana" >> wordCountData/data2.txt
    echo "dog" >> wordCountData/data2.txt
    echo " elephant queen" >> wordCountData/data2.txt
    
    
    //查看数据内容
    more wordCountData/data1.txt
    more wordCountData/data2.txt
    
    
    //开始统计wordCountData文件目录下的单词数
    hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /opt/module/hadoop-3.3.6/input/wordCountData wordCountDataoutput
    
    //查看统计结果
    cd /opt/module/hadoop-3.3.6/input/wordCountDataoutput
    cat ./*
    
    • 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

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    Pseudo-Distributed Operation(伪分布式模式)

    参考: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation

    概述: 单节点的分布式系统(用于测试使用)

    配置修改


    核心配置文件修改: vim /opt/module/hadoop-3.3.6/etc/hadoop/core-site.xml

    <configuration>
    
    
        
        <property>
            <name>fs.defaultFSname>
            <value>hdfs://192.168.19.107:9000value>
        property>
    
    
        
        <property>
            <name>hadoop.tmp.dirname>
            <value>/opt/module/hadoop-3.3.6/tmpvalue>
        property>
    
    
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18


    核心配置文件修改: vim /opt/module/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

    <configuration>
    
        
        <property>
            <name>dfs.replicationname>
            <value>1value>
        property>
    
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    启动DFS【9870】
    Hadoop-DFS数据清空格式化
    hdfs namenode -format
    
    • 1

    在这里插入图片描述

    启动DFS组件

    注意: 启动过程中可能遇到非root用户、JAVA_HOME找不到的现象,导致启动失败,自行参考下面的问题解决

    # 未启动hadoop时所系统所运行java程序
    jps
    
    
    # 启动hadoop相关的应用程序
    sh /opt/module/hadoop-3.3.6/sbin/start-dfs.sh
    
    
    # 查看启动hadoop的应用变化
    jps
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    访问DFS前端页面(不同版本的Hadoop的NameNode端口有变)

    浏览器NameNode前端页面: http://192.168.19.107:9870/

    在这里插入图片描述

    在这里插入图片描述

    dfs命令使用(主要用来操作文件)

    帮助文档: hdfs dfs --help

    在这里插入图片描述

    复制物理机文件中hadoop中
    hdfs dfs -mkdir /test
    
    
    hdfs dfs -put /opt/module/hadoop-3.3.6/input /test
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在这里插入图片描述

    文件展示以及读取文件内容
    hdfs dfs -ls -R /
    
    hdfs dfs -cat /test/input/core-site.xml
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    创建目录、文件
    hdfs dfs -mkdir -p /test/linrc
    
    
    hdfs dfs -touch /test/linrc/1.txt
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    使用mapreduce进行计算hadoop里面某个文件夹的内容
    hdfs dfs -ls /test/input
    
    # 对hadoop里面某个文件夹内容进行单词统计
    hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput2
    
    
    hdfs dfs -ls /test/input
    
    
    # 查看统计结果
    hdfs dfs -cat /test/input/wordCountDataoutput2/*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    启动Yarn组件【8088】
    配置修改

    强制指定Yarn的环境变量: /opt/module/hadoop-3.3.6/etc/hadoop/yarn-env.sh
    在这里插入图片描述

    export JAVA_HOME=/www/server/jdk8/jdk1.8.0_202
    
    • 1



    yarn-site.xml添加如下两个配置 /opt/module/hadoop-3.3.6/etc/hadoop/yarn-site.sh

    <configuration>
    
    
    
        <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
        property>
    
    
        <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>192.168.19.107value>
        property>
    
        <property>
            <name>yarn.nodemanager.env-whitelistname>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HO
    MEvalue>
        property>
    
        
        <property>
            <name>yarn.timeline-service.hostnamename>
            <value>192.168.19.107value>
        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

    在这里插入图片描述

    启动
    //非常重要,必须回到hadoop的目录里面进行启动,我也不知道为什么
    cd /opt/module/hadoop-3.3.6
    
    //不要使用 sh命令启动,否则报错,我也不知道为什么
    ./sbin/start-yarn.sh 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    访问yarn前端页面

    浏览器: http://ip:8088

    yarn页面端口配置: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml的【yarn.resourcemanager.webapp.address】

    在这里插入图片描述

    在这里插入图片描述

    运行计算dfs某个目录所有文件的单词数,yarn页面有运行记录

    在这里插入图片描述

    在这里插入图片描述

    //单词计算开始
    hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput3
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    启动MapReduce组件
    配置修改

    强制指定mapred的环境变量: /opt/module/hadoop-3.3.6/etc/hadoop/mapred-env.sh
    在这里插入图片描述

    export JAVA_HOME=/www/server/jdk8/jdk1.8.0_202
    
    • 1


    mapred-site.xml添加如下配置: /opt/module/hadoop-3.3.6/etc/hadoop/mapred-site.xml
    在这里插入图片描述

    <configuration>
    
    
        
        <property>
            <name>mapreduce.framework.namename>
            <value>yarnvalue>
        property>
    
    
        <property>
            <name>mapreduce.application.classpathname>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*value>
        property>
    
        
        <property>
            <name>mapreduce.jobhistory.addressname>
            <value>192.168.19.107:10020value>
        property>
    
        <property>
            <name>mapreduce.jobhistory.webapp.addressname>
            <value>192.168.19.107:19888value>
        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
    启动日志采集系统

    在这里插入图片描述

    mapred --daemon start historyserver
    
    • 1
    查看任务日志

    在这里插入图片描述

    在这里插入图片描述

    启动日志聚集(任务执行的具体详情上传到HDFS组件中)
    未启动前

    在这里插入图片描述

    在这里插入图片描述

    启动

    注意: 如果yarn组件已经启动,修改yarn的配置需要重新启动,使得配置生效

    #停止日志系统
    mapred --daemon stop historyserver
    
    
    #停止yarn组件
    cd /opt/module/hadoop-3.3.6
    ./sbin/stop-yarn.sh 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    yarn-site.xml添加如下配置 /opt/module/hadoop-3.3.6/etc/hadoop/yarn-site.sh
    在这里插入图片描述

    <configuration>
    
    
    
        <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
        property>
    
    
        <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>192.168.19.107value>
        property>
    
        <property>
            <name>yarn.nodemanager.env-whitelistname>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HO
    MEvalue>
        property>
    
    
        <property>
            <name>yarn.timeline-service.hostnamename>
            <value>192.168.19.107value>
        property>
    
    
        
        <property>
            <name>yarn.log-aggregation-enablename>
            <value>truevalue>
        property>
        
        <property>
            <name>yarn.log-aggregation.retain-secondsname>
            <value>2592000value>
        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


    
    #启动yarn组件
    cd /opt/module/hadoop-3.3.6
    ./sbin/start-yarn.sh
    
    #启动日志系统
    mapred --daemon start historyserver
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述


    # 重新运行一个任务
    hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput5
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    酷早报:6月23日Web3加密行业每日新闻汇总
    逍遥自在学C语言 | 指针的基础用法
    Spark Join类型和适用的场景
    卡奥斯第二届1024程序员节正式启动!
    vue3 组件与API直接使用,怎样无需import?
    27.CF1004F Sonya and Bitwise OR 区间合并线段树
    Elixir-Tuples
    【书籍篇】Git 学习指南(二)提交与多次提交
    Dropdown 下拉菜单实现标签页的相关操作
    龙口联合化学通过注册:年营收5.5亿 李秀梅控制92.5%股权
  • 原文地址:https://blog.csdn.net/weixin_39651356/article/details/136639113