• Hadoop笔记HDFS(2)


    高级Hadoop MapReduce管理

    1 调试部署好的Hadoop的配置
    2 运行基准测试检验Hadoop的安装
    3 重新利用JVM提升性能
    4 容错性
    5 调试脚本-分析失败任务原因
    6 设置失败比例以及忽略无效的记录
    7 共享型用户Hadoop集群
    8 Hadoop的安全性
    9 使用Hadoop工具interface
    内容目录

    一调整参数

    1、首先需要关掉正在运行的Hadoop集群(stop-dfs.sh以及stop-yarn.sh)

    存放Hadoop参数的主要是下面4个文件:

    core-site.xml:存放对整个集群的公共配置

    hdfs-site.xml:存放对HDFS的配置

    mapred-site.xml:存放对MapReduce的配置

    yarn-site.xml:yarn的配置

    上面的文件都是XML格式:name-value的内容格式。<configuration>是最顶层的tag,<property>定义每个属性

    例如:<configuration>
    <property>
    <name>mapred.reduce.parallel.copies</name>
    <value>2</value>
    </property>
    ...
    </configuration>

    下面介绍修改存放hadoop日志的路径以及配置每个task的map和reduce个数的方法

    1.  创建一个存放日志的文件,例如/home/hadoop_logs .
    2. 在hadoop-env.sh中HADOOP_LOG_DIR这一行取消注释,并且赋值为新的路径。
    3. 在mapred-site.xml中添加下面两个属性
    <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>2 </value>
    </property>
    <property>

    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>2 </value>
    </property>
    4. 重启HDFS(start-dfs.sh)和MapReduce(start-yarn.sh)
    5. ps –ef|grep hadoop 检验hadoop进程个数

    HADOOP_LOG_DIR 重新定义了Hadoop输出日志的路径

    mapred.tasktracker.map.tasks.maximum 和 mapred.tasktracker.reduce.tasks.maximum

    连个属性定义了每个TaskTracker 在特定时刻能够运行的map和reduce任务的最大个数
    所有在*-site.xml做的修改,都需要在重新启动Hadoop后系统重新加载生效。

    二运行基准测试

    Hadoop自带多个基准测试程序。我们可以使用他们验证Hadoop的安装并测试Hadoop的性能。

    2.     Run the randomwriter Hadoop job using the following command:
    >bin/hadoop jar hadoop-examples-1.0.0.jarrandomwriter
    -Dtest.randomwrite.bytes_per_map=100
    -Dtest.randomwriter.maps_per_host=10 /data/unsorted-data
    Here the two parameters, test.randomwrite.bytes_per_map and test.
    randomwriter.maps_per_host 这两个参数指定由map产生的数据大小和map的数量
    3.  执行排序程序:
    >bin/hadoop jar hadoop-examples-1.0.0.jar sort /data/unsorted-data
    /data/sorted-data
    4.    检验前面运行的最终结果
    >bin/hadoop jar hadoop-test-1.0.0.jar testmapredsort -sortInput /
    data/unsorted-data -sortOutput /data/sorted-data

    其它的基准测试

    Hadoop includes several other benchmarks.
    TestDFSIO: 测试HDFS的IO性能
     nnbench:检验NameNode的硬件
     mrbench: 运行多个小的job
     TeraSort: 对1T的数据进行排序

    三 对JVM重复使用提升性能

    默认情况下,Hadoop会为每个map或reduce任务启动一个JVM,然而对多个task运行相同的jvm,

    有时会显著的加快执行速度。

    1.     运行WordCount的例子,并传递如下参数
    >bin/hadoop jar hadoop-examples-1.0.0.jar wordcount –D mapred.job.
    reuse.jvm.num.tasks=-1 /data/input1 /data/output1
    2.  这时 (执行 ps –ef|grep hadoop)Hadoop会为每个task使用同样的JVM
    However, passing arguments through the –D option only works if the job implements
    the org.apache.hadoop.util.Tools interface. Otherwise, you should set the
    option through the JobConf.setNumTasksToExecutePerJvm(-1) method.

    我们可以在mapred-site.xml中设置属性mapred.job.reuse.jvm.num.tasks ,
    这样就可以控制在hadopp中运行的JVM数,当设置为0或-1的时候Hadoop为每个task运行同样的JVM

    四、容错性和投机性运行

    选择Hadoop的主要优势是系统对容错性的支持。当运行一个job,特别是很大的job的时候,部分job

    可能会由于各种原因失败(网络、硬盘、节点故障等等)。

    在hadoop启动后JobTracker会监控TaskTrackers的执行情况,当TaskTrackers没有相应的时候,

    hadoop会重新将task提交给其它的TaskTracker(Hadoop V2中ResourceNode负责资源的分配,而DataNode负责监控

    自己节点的job运行情况)

    由于集群中每个节点的性能不一样可能出现其它节点完成job,但是还有其它node没有完成job,这个时候hadoop会启动一个

    空闲节点运行同样的job,然后tasktracker会使用最先运行完的节点的结果,并且结束掉另外一个还没运行完的节点。

    bin/hadoop jar hadoop-examples-1.0.0.jar wordcount–Dmapred.map.tasks.
    speculative.execution=false –D mapred.reduce.tasks.speculative.
    execution=true /data/input1 /data/output1

    待续...

  • 相关阅读:
    PL/SQL Developer 远程连接Oracle数据库
    常用js代码学习
    三元运算 多条件嵌套
    在后台CS文件里面,隐藏和显示Repeater里面控件
    最小二乘线性及平面拟合原理及C++实现
    C++的顶层const 和 底层const
    vs2019上遇到的一个未预指定引用函数的静态库导致的问题
    一个基础QItemDelegate检查器类
    linux 基础命令及快捷键
    lambda表达式
  • 原文地址:https://www.cnblogs.com/wangq17/p/5974902.html
Copyright © 2020-2023  润新知