码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Hadoop修改pid文件存储+配置YARN+运行默认YARN例子


    目录

    一、修改hadoop pid 文件的位置

    1、查看目前pid文件存储位置

    2、修改配置文件,修改pid文件存储位置

    3、重新启动集群?

    二、配置YARN

    1、修改配置文件?mapred-site.xml

    ?2、修改配置文件? ?yarn-site.xml

    3、启动? YARN??

    三、运行YARN例子

    1、创建一个input.txt文件

    2、将文件放入? hdfs的 ? ?/input? 目录下?

    3、运行?官网实例

    4、web端查看? hdfs? ?

    5、查看一下产生文件内容

    四、一些思考题

    1、关于? /etc/profile? 与? .bash_profile? ?与? .bashrc

    2、启动YARN出现如下错误解决方法?

    3、如何避免小文件过多

    (1)小文件定义

    (2)HDFS的小文件问题

    (3)MapReduce上的小文件问题

    (3) 为什么会产生大量的小文件

    (4)解决方案


    一、修改hadoop pid 文件的位置

    1、查看目前pid文件存储位置

    root下查看 /tmp文件

    现将其修改至 用户下的的 tmp文件夹

    2、修改配置文件,修改pid文件存储位置

    [peizk@hadoop hadoop]$ vim hadoop-env.sh 
    
    • 1

    添加如下内容

    3、重新启动集群

    查看pid文件是否移动至家目录下的tmp文件

    二、配置YARN

    1、修改配置文件mapred-site.xml

    修改如下 在 中添加

    mapreduce.framework.name
            yarn
    
    • 1
    • 2

    2、修改配置文件 yarn-site.xml

    修改如下 在 中添加

    
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        
    
    • 1
    • 2
    • 3
    • 4

    3、启动 YARN

    三、运行YARN例子

    1、创建一个input.txt文件

    2、将文件放入 hdfs的 /input 目录下

    3、运行官网实例

    [peizk@hadoop hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar  wordcount /input/input.txt /output
    
    • 1

    4、web端查看 hdfs

    5、查看一下产生文件内容

    实例运行成功

    四、一些思考题

    1、关于 /etc/profile 与 .bash_profile 与 .bashrc

    首先 .bash_profile 文件内 内容为

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin
    
    export PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    即 .bash_profile 就是调用 .bashrc 文件

    所以就是区分 .bashrc 与 /etc/profile

    /etc/profile 是全局变量

    .bashrc 是用户变量

    当用户变量配置时 优先取用用户变量 否则采用全局变量

    2、启动YARN出现如下错误解决方法

    hadoop3.1.1下MapReduce操作出现错误: 找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster 问题解决方法_凌云网络之昂chan的博客-CSDN博客

    3、如何避免小文件过多

    (1)小文件定义

    小文件是指文件大小明显小于 HDFS 上块(block)大小(默认64MB,在Hadoop2.x中默认为128MB)的文件。

    (2)HDFS的小文件问题

    **1)**HDFS 中任何一个文件,目录或者数据块在 NameNode 节点内存中均以一个对象形式表示(元数据),而这受到 NameNode 物理内存容量的限制。每个元数据对象约占 150 byte,所以如果有1千万个小文件,每个文件占用一个block,则 NameNode 大约需要2G空间。如果存储1亿个文件,则 NameNode 需要20G空间,这毫无疑问1亿个小文件是不可取的。
    **2)**处理小文件并非 Hadoop 的设计目标,HDFS 的设计目标是流式访问大数据集(TB级别)。因而,在 HDFS 中存储大量小文件是很低效的。访问大量小文件经常会导致大量的 seek,以及不断的在 DatanNde 间跳跃去检索小文件。这不是一个很有效的访问模式,严重影响性能。
    **3)**处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而任务启动将耗费大量时间甚至大部分时间都耗费在启动任务和释放任务上。

    (3)MapReduce上的小文件问题

    Map任务一般一次只处理一个块的输入(input。如果文件非常小,并且有很多,那么每一个 Map 任务都仅仅处理非常小的输入数据,并会产生大量的 Map 任务,每一个 Map 任务都会额外增加bookkeeping 开销。

    (3) 为什么会产生大量的小文件

    至少在两种场景下会产生大量的小文件:
    **1)**这些小文件都是一个大逻辑文件的一部分。由于 HDFS 在2.x版本才开始支持对文件进行追加,所以在此之前保存无边界文件(例如日志文件)一种常用的方式就是将这些数据以块的形式写入HDFS中。
    **2)**文件本身就是很小。比如对于一个很大的图片语料库,每一个图片都是一个单独的文件,并且没有一种很好的方法来将这些文件合并为一个大的文件。

    (4)解决方案

    这两种情况需要有不同的解决方式:
    **1)**对于第一种情况,文件是许多记录组成的,那么可以通过调用 HDFS 的 sync() 方法(和 append 方法结合使用),每隔一定时间生成一个大文件。或者,可以通过写一个 MapReduce 程序来来合并这些小文件。
    **2)**对于第二种情况,就需要容器通过某种方式来对这些文件进行分组。Hadoop提供了一些选择:
    ①使用HAR File。Hadoop Archives (HAR files)是在 0.18.0 版本中引入到 HDFS 中的,它的出现就是为了缓解大量小文件消耗 NameNode 内存的问题。HAR 文件是通过在 HDFS 上构建一个分层文件系统来工作。HAR 文件通过 hadoop archive 命令来创建,而这个命令实际上是运行 MapReduce 作业来将小文件打包成少量的 HDFS 文件。对于客户端来说,使用 HAR 文件系统没有任何的变化:所有原始文件都可见以及可以访问(只是使用 har://URL,而不是 hdfs://URL),但是在 HDFS 中中文件个数却减少了。
    ②使用SequenceFile存储。文件名作为 key,文件内容作为 value。在实践中这种方式非常有效。比如对于10,000个100KB大小的小文件问题,可以编写一个程序将合并为一个 SequenceFile,然后你可以以流式方式处理(直接处理或使用 MapReduce) SequenceFile。
    ③使用HBase。如果你产生很多小文件,根据访问模式的不同,应该进行不同类型的存储。HBase 将数据存储在 Map Files(带索引的 SequenceFile)中,如果你需要随机访问来执行 MapReduce 流式分析,这是一个不错的选择。

  • 相关阅读:
    带你了解树的全家桶(BST树到AVL树到B树到B+树)
    表单 v-decorator 相关用法
    内卷时代!程序员如何突破35岁的宿命?
    Wordpress替换Gravatar用户头像,让wordpress会员头像本地化提高加载速度(附代码)
    【论文阅读】时序动作检测系列论文精读(2018年)
    基于SpringBoot的教学资源库系统的设计与实现
    HTML常用标签
    SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心
    《三体》:挑战宇宙秩序的科幻巅峰
    运输层课后作业
  • 原文地址:https://blog.csdn.net/m0_67391121/article/details/126367612
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号