zoukankan      html  css  js  c++  java
  • Hadoop笔记HDFS(1)

    环境:Hadoop2.7.3

    1、Benchmarking HDFS

    1.1测试集群的写入

    运行基准测试是检测HDFS集群是否正确安装以及表现是否符合预期的好方法。DFSIO是Hadoop自带的一个基准测试程序,可以用来分析HDFS集群的I/O能力

    脚本: $HADOOP_HOME/bin/hadoop jar hadoop-mapreduce-client-jobclient-2.7.3-tests.jar TestDFSIO -write -nrFiles 10 -size 50MB

    nrFiles:指定输入的文件个数

    -size:指定每个输入文件的大小

    基准测试将结果写道控制台,并且将结果添加到TestDFSIO_results.log中,可以自己指定要写入的文件名(-resFile)

    1.2测试集群的读取

    这一步要在第一步完成后进行,因为脚本要用到第一步写完的文件。

     $HADOOP_HOME/bin/hadoop jar hadoop-mapreduce-client-jobclient-2.7.3-tests.jar TestDFSIO -read -nrFiles 10 -size 50MB

    1.3删除运行基准测试产生的文件

     $HADOOP_HOME/bin/hadoop jar hadoop-mapreduce-client-jobclient-2.7.3-tests.jar TestDFSIO -clean

    2、删除节点

    用下面的方法可以方便优雅的将节点从集群中解除掉。(从slaves文件中删除掉节点名也可以,简单但不优雅)
    2.1建立一个文件存放要删除的节点,hdfs_exclude.txt
    2.2在hdfs-site.xml中配置如下属性和value
    <property> <name>dfs.hosts.exclude</name> <value>$HADOOP_HOME/etc/hadoop/hdfs_exclude.txt</value> <description>DFS exclude</description> </property>
    2.3 运行:$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes
    2.4 解除节点的过程会在HDFS的webUI显示。解除过程可以使用脚本进行监控。在解除节点的过程完成前,
    不要关闭节点
    >bin/hadoop dfsadmin -report

    在一个解除一个节点的过程中,HDFS会将原来存在节点上的blocks移动到集群中其它的节点。解除节点的过程可能会很慢,
    因为HDFS会小心的进行避免集群的崩溃。在解除节点的过程结束前,关闭节点会导致数据的丢失。在解除过程结束后,在
    exclude文件中的节点不会再与namenode节点通信。

    3、Using multiple disks/volumes and limiting HDFS disk usage
    Hadoop支持为DataNode数据目录(datanode data directory)指定多个存储路径,这种特性允许我们使用DataNode的多个disk/valumes
    存放数据blocks,Hadoop会尽量在每个存储目录存放相同大小的数据。Hadoop也支持限制HDFS使用硬盘空间的大小。
    实现方法:
    3.1 Create HDFS data storage directories in each volume.
    3.2 In the $HADOOP_HOME/conf/hdfs-site.xml , provide a comma-separated list
    of directories corresponding to the data storage locations in each volume under the
    dfs.data.dir directory.
    <property>
    <name>dfs.data.dir</name>
    <value>/u1/hadoop/data,/u2/hadoop/data</value>
    </property>
    3.3 To limit the HDFS disk usage, add the following property to $HADOOP_HOME/conf/
    hdfs-site.xml to reserve space for non-DFS usage. The value specifies the
    number of bytes that HDFS cannot use per volume.
    <property>
    <name>dfs.datanode.du.reserved</name>
    <value>6000000000</value>
    <description>Reserved space in bytes per volume. Always leave
    this much space free for non dfs use.
    </description>
    </property>

    4、设置HDFS的block大小
    hdfs通过把存储的文件拆分成固定的大小block,存放在集群上。默认的hdfs的block大小是64MB。block的大小会影响hdfs上
    对文件系统进行操作的性能,如果存储和处理的是非常大的文件,那么更大的block大小会更有效。数据产品中block的大小,会影响
    MapReduce计算的性能,因为hadoop默认的行为是为每一个数据块中存储的数据创建一个map任务。
    4.1设置block的大小:在hdfs-site.xml中添加属性
    <property>
    <name>dfs.block.size</name>
    <value>134217728</value>
    </property>
    4.2 可以在上传文件的时候指定要上传路径的块的大小
    To specify the HDFS block size for specific file paths, you can specify the block size
    when uploading the file from the command line as follows:
    >bin/hadoop fs -Ddfs.blocksize=134217728 -put data.in /user/foo

    5、Setting the file replication factor(设置文件副本因子)
    HDFS在集群上将文件拆分成多个固定大小的blocks来存放。这些数据块在不同的datanode上保存有副本,以增加
    容错性。
    5.1在hdfs-site.xml中设置
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    5.2如果要在上传文件的时候设置副本个数,可以使用下面的命令行
    >bin/hadoop fs -D dfs.replication=1 -copyFromLocal non-critical-
    file.txt /user/foo
    5.3 setrep命令可以用来改变在hdfs中已经存在的文件或文件路径的副本因子。
    The setrep command can be used to change the replication factor of files or file
    paths that are already in the HDFS.
    > bin/hadoop fs -setrep 2 non-critical-file.txt --设置.txt文件的副本数为2个
    Replication 3 set: hdfs://myhost:9000/user/foo/non-critical-file.
    txt
    The setrep 命令的语法如下:
    hadoop fs -setrep [-R] <path>
    The <path> parameter of the setrep command specifies the HDFS path where the
    replication factor has to be changed. The –R option recursively sets the replication
    factor for files and directories within a directory.

    5.4The replication factor of a file is displayed when listing the files using the ls command.
    >bin/hadoop fs -ls
    Found 1 item
    -rw-r--r--2foo supergroup ... /user/foo/non-critical-file.txt--2就是表示副本因子是2
  • 相关阅读:
    深入理解JavaScript系列(45):代码复用模式(避免篇)
    深入理解JavaScript系列(38):设计模式之职责链模式
    深入理解JavaScript系列(43):设计模式之状态模式
    认识js中的function和this
    深入理解JavaScript系列(29):设计模式之装饰者模式
    javascript的内存分配
    详细解读Jquery各Ajax函数
    javascript 杂谈之哪种写法你更喜欢?
    深入理解JavaScript系列(28):设计模式之工厂模式
    深入理解JavaScript系列(30):设计模式之外观模式
  • 原文地址:https://www.cnblogs.com/wangq17/p/5971666.html
Copyright © 2011-2022 走看看