• hadoop HDFS 写入吞吐量


        最近一个项目 在大把大把的使用hadoop-HDFS,关于HDFS 的优势网上都快说烂了,这里不再说了,免得被。。 呵呵

    废话少说,开整

    1、场景描述:

        服务器A 监听 服务器B分发任务socket。当B 服务器发送指令上传数据,服务器A 便启动HDFSClient 开始

    从服务器D(FTP服务器)获取数据上传至HADOOP(这里的数据总量大小一般10-100G,单个文件4-15M)2、

    2、环境:

      网络:千兆局域网

      hadoop版本:1.2.1

      硬件环境:略(正规服务器,不扯了)

    3、问题

    至于这种数据量大,文件碎小。单线程程序绝对打不满网络(IO 这里绝对不是问题,服务器插着多块磁盘)此处已写程序测试。

    4、解决方法

    4.1、hadoop优化配置

    -------------------------------------------------------------------------------------------------------------

    集群整体心跳 将默认3秒 修改为0.25秒
    <!--hadoop 源代码 心跳 解释:conf.getLong("dfs.heartbeat.interval", HEARTBEAT_INTERVAL) * 1000L;//代码中读取心跳 为毫秒 --->
        <property>
           <name>dfs.heartbeat.interval</name>
           <value>0.25</value>
        </property>
    ------------------------------------------------------------------------------------------------------------------------
    集群  SequenceFiles在读写中可以使用的缓存大小 默认 为4KB  ,这里扩容至 1MB 今后根据实际物理机器调优
    直接影响 hdfs 读写能力
    <property>
             <name>io.file.buffer.size</name>
             <value>1048576</value>
        </property>
     
    注意:看你hadoop 集群的配置,普通pc 或者虚拟机请勿模仿。
    -------------------------------------------------------------------------------------------------------------------------
    启动 hadoop 做磁盘存储均衡
    hadoop balancer -Threshold 5 ------- 每个磁盘利用率偏差 在5% 之内
    -------------------------------------------------------------------------------------------------------------------------
     
    4.2 程序优化
    1、将程序改为多线程(我的集群目前35线程可以将网络基本打满)
    2、将HDFS 操作类改成单例(注意,线程安全的哦),这只主要第一步初始化的是
     
    (1) Configuration config = new Configuration();
    (2)FileSystem hdfs = FileSystem.get(URI.create(URL),config);
    //FileSystem 初始化相对比较耗时。
    ----------------------------------------------------------------------
    好了,开启你的线程池 开始测试吧
    我这里网络基本可以打满,个人还是比较满意的
    (亲们,千兆局域网  一般说的是都是小b,你传输数据的时候 理想速度应该是125M)。
     
     
     
     
     
  • 相关阅读:
    form表单回车提交
    Mac os x下配置nginx + php
    Mac下git命令自动补全
    关于javascript中的操作符&&和||的最终返回值
    ARM 裸机程序学习 01 点亮LED
    LINUX SHELL 中 2>&1 重定向的问题
    项目经理到底关心项目的什么?——有关外包项目成本的计算
    ARM 裸机程序学习 03 发送SOS信号(汇编 + C)
    ARM 裸机程序学习 02 按响BEEP
    备忘录 Linux及其内核杂项知识
  • 原文地址:https://www.cnblogs.com/elwiny/p/3438160.html
Copyright © 2020-2023  润新知