`
bupt04406
  • 浏览: 348372 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DFSClient Packet dfs.write.packet.size

 
阅读更多

HBase 里面调用DFSOutputStream的方法常用的是:write、sync 

write会往当前Packet里面写数据,sync会强制生成一个Packet。

在DFSClient Packet里面每次都会new 一个 big byte array,size 是65557(more than 64K,data+checksum+head),由于sync会强制生成Packet,对于小kv数据来说,实际的数据会比较少,几百、几千、上万,很多时候其实没有64k的数据,所以这个使用率比较低。

(1)想到的方法是:使用一个Packet Pool

(2)减少dfs.write.packet.size,默认是64k

 

第一种方法:Packet不在经常new了,每次取Packet时从一个pool里面取,如果pool里面没有就new一个,使用完后就放到pool里面。测试结果不是很好,gc频率以及总gc时间都变少了很多,但是平均RT( response time)变长,其中比较有意思的是:有很多请求RT变少了,也有不少RT变长了,两级分化严重,总体上面平均RT变长,导致TPS下降。

原先gc频率很快,单次gc时间比较短,总的gc时间比较长。

据说pool的方式对于现在的jvm来说不是最优的,因为现在的jvm创建对象速度已经很快了,并且这个pool时间长了会放到old区,old区到young区的引用比较多的话,那么ygc效率就会比较低下

 

第二种方法:

调整dfs.write.packet.size,可以调整成32k、16k

效果大概如下:

测试的是 key/value = 10/100 bytes 

export HBASE_REGIONSERVER_OPTS="-Xms8g -Xmx8g -Xmn2g -XX:SurvivorRatio=16 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -Xloggc:$HBASE_HOME/logs/gc-regionserver-`date +%Y%m%d-%H-%M`.log"

 

dfs.write.packet.size = 64k
 Writer Finished,Consume time is: 383 seconds
==================Summary==================
 Tables And Columns: hbasetest(10){caches:value1(100)}
----------Writer Statistics--------------
 Write Threads: 100
 Write Rows: 10000000
 Consume Time: 383s
 Requests: 10000000 Success: 100% (10000000) Error: 0% (0)
 Avg TPS: 26041 Max TPS: 44460 Min TPS: 3183
 Avg RT: 3ms
 RT <= 0: 0% 3483/10000000
 RT (0,1]: 12% 1273633/10000000
 RT (1,5]: 81% 8123190/10000000
 RT (5,10]: 1% 147321/10000000
 RT (10,50]: 3% 371064/10000000
 RT (50,100]: 0% 74896/10000000
 RT (100,500]: 0% 6400/10000000
 RT (500,1000]: 0% 13/10000000
 RT > 1000: 0% 0/10000000

  jstat -gcutil 19968 2s
  S0     S1     E      O      P       YGC     YGCT    FGC    FGCT     GCT   
 58.44   0.00  54.47  15.66  99.85      154      4.191     0    0.000    4.191

dfs.write.packet.size = 32k

Writer Finished,Consume time is: 367 seconds
==================Summary==================
 Tables And Columns: hbasetest(10){caches:value1(100)}
----------Writer Statistics--------------
 Write Threads: 100
 Write Rows: 10000000
 Consume Time: 367s
 Requests: 10000000 Success: 100% (10000000) Error: 0% (0)
 Avg TPS: 27173 Max TPS: 45276 Min TPS: 968
 Avg RT: 3ms
 RT <= 0: 0% 7274/10000000
 RT (0,1]: 19% 1948293/10000000
 RT (1,5]: 73% 7350970/10000000
 RT (5,10]: 2% 259443/10000000
 RT (10,50]: 3% 371545/10000000
 RT (50,100]: 0% 56944/10000000
 RT (100,500]: 0% 5360/10000000
 RT (500,1000]: 0% 85/10000000
 RT > 1000: 0% 86/10000000
 
  S0     S1     E      O      P                YGC     YGCT    FGC    FGCT     GCT   
  0.00  92.02  92.32  14.89  99.74     67        2.668     0        0.000    2.668

 dfs.write.packet.size = 16k
 
Writer Finished,Consume time is: 364 seconds
==================Summary==================
 Tables And Columns: hbasetest(10){caches:value1(100)}
----------Writer Statistics--------------
 Write Threads: 100
 Write Rows: 10000000
 Consume Time: 364s
 Requests: 10000000 Success: 100% (10000000) Error: 0% (0)
 Avg TPS: 27397 Max TPS: 45309 Min TPS: 890
 Avg RT: 3ms
 RT <= 0: 0% 9291/10000000
 RT (0,1]: 21% 2118605/10000000
 RT (1,5]: 71% 7192119/10000000
 RT (5,10]: 2% 265516/10000000
 RT (10,50]: 3% 346697/10000000
 RT (50,100]: 0% 61084/10000000
 RT (100,500]: 0% 6590/10000000
 RT (500,1000]: 0% 15/10000000
 RT > 1000: 0% 83/10000000

  S0     S1     E      O      P                YGC      YGCT    FGC    FGCT     GCT   
 53.45   0.00  77.52  15.31  99.24     50        2.295     0        0.000      2.295

 

 

YGC(young gc次数)    YGCT(young gc总时间,单位s)     dfs.write.packet.size    单次gc时间(单位ms)

 154                            4.191                                          64K                           27.57236842105263

 

 67                              2.668                                          32k                           39.82089552238806

 

 50                              2.295                                          16K                           45.9

 






 

 

 

 

分享到:
评论

相关推荐

    亲测OK 还原精灵2021年Faronics_DFS_8.53.020.5458工具与方法.zip

    从找资源到找到,验证虚拟机反复验证PJ情况。2021年 目前亲测可用版本:Faronics_DFS_8.53.020.5458 项目需要,大约用时3小时寻找此资源。

    DFs.rar_dfs.r

    具体来说,`DFS.cpp` 可能是实现DFS算法的主要C++源代码文件,而其他文件如 `DFS.dsp`、`DFS.dsw`、`DFS.ncb`、`DFS.opt`、`DFS.plg` 是Visual Studio项目和构建系统中的配置文件,用于管理和编译C++项目。...

    dfs.rar_DFS.rar_dfs_dfs.zip_八码_深度优先

    在DFS的具体实现中,`dfs.cpp`文件很可能是包含了深度优先搜索算法的C++代码。通常,这样的代码会定义一个函数,如`dfs(int row, QueenPosition[])`,其中`row`表示当前处理的行号,`QueenPosition[]`是一个数组,...

    dfs-final-tidai.zip_dfs

    深度优先遍历(DFS, Depth First Search)是一种用于遍历或搜索树或图的算法,它的基本思想是从起点开始,尽可能深地探索图的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一...

    PyPI 官网下载 | graph-dfs-0.0.7.tar.gz

    2. `src` 或 `graph_dfs` 目录:包含实际的Python源代码,可能有`dfs.py`或其他类似文件,实现DFS算法。 3. `tests` 目录:包含单元测试或集成测试,用于验证代码功能和性能。 4. `README.md` 或 `docs` 文件:提供...

    编码器-DFS60[汇编].pdf

    编码器-DFS60[汇编].pdf

    dfs.zip_DFS.inc_UpdateLayeredWindow_delphi d_delphi7 dfsstatusb_

    标题中的"dfs.zip_DFS.inc_UpdateLayeredWindow_delphi d_delphi7 dfsstatusb_" 提供了一些关键信息,其中“DFS.inc”可能是一个包含特定功能或接口声明的包含文件,通常在Delphi编程环境中用于组织代码。...

    Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表

    9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50070 dfs.namenode.http-address 50470 dfs.namenode.https-address 50100 dfs.namenode.backup.address 50105 dfs.namenode.backup.http-address 50090 ...

    dfs_sum.c.zip_SUM_深度优先搜索

    深度优先搜索(DFS,Depth-First Search)是一种用于遍历或搜索树或图的算法。在计算机科学中,DFS常用于解决各种问题,包括寻找路径、判断连通性以及求解最短路径等。DFS的基本思想是尽可能深地探索树的分支,直到...

    Hadoop默认端口清单-防火墙申请使用

    - **2181**:`hbase.zookeeper.property.clientPort`,如果HBase使用内部管理的ZooKeeper集群,则此端口用于客户端连接。 - **2888**:`hbase.zookeeper.peerport`,用于Follower与Leader之间的通信。 - **3888**...

    dfs-bfs-master.zip_bfs_dfs

    深度优先搜索(DFS,Depth-First Search)与广度优先搜索(BFS,Breadth-First Search)是图论和树形结构中常用的两种遍历算法,它们在计算机科学中有着广泛的应用,如在算法设计、数据结构、游戏逻辑、网络爬虫等...

    旅游图_dfs_bfs_源码.zip

    这里我们关注的是两种主要的图遍历算法:深度优先搜索(DFS,Depth-First Search)和广度优先搜索(BFS,Breadth-First Search)。这个名为“旅游图_dfs_bfs_源码.zip”的压缩包很可能是包含这两种算法的实现,针对...

    DFS_CDMA_Tool3.3.0.7

    DFS_CDMA_Tool3.3.0.7 是一个专门针对CDMA网络设备进行写号操作的工具,主要用于手机或其他CDMA设备的网络设置与优化。CDMA(Code Division Multiple Access,码分多址)是一种无线通信技术,广泛应用于移动通信系统...

    dfs-parent-git.zip

    - **dfs-fastdfs-client-api(fastdfs 客户端)** fastdfs提供的java客户端api,所有java相关功能都在基于这个基础上封装,扩展。 第三方应用不需要关心该接口. - **dfs-core(http服务器)** 提供http接口服务...

    DFS文件服务器详解归类.pdf

    《DFS文件服务器详解归类》 分布式文件系统(DFS,Distributed File System)是一种网络文件系统,它允许用户在一个统一的命名空间内访问分布在网络各处的文件资源。DFS通过创建逻辑上的文件结构,将物理上分散的...

    DFS.rar_DFS.rar_bfs_depth first_depth first search_graph theory

    在这个“DFS.rar”压缩包中,包含了关于DFS算法的实现,以及与之相关的图操作和邻接表构建。在图论编程中,DFS是一种常用的技术,它按照“尽可能深”的原则探索图的边,直到达到某个节点无法继续深入为止,然后回溯...

    dfs算法的详细讲解.txt

    深度优先搜索(DFS)是一种用于图和树的遍历算法,它在计算机科学领域被广泛应用于搜索问题和路径查找问题中。DFS的核心思想是尽可能深地探索每一条可能的分支路径,直到这条路径达到尽头,然后回溯到上一个节点继续...

Global site tag (gtag.js) - Google Analytics