Ranger-hdfs插件压测

公司的并发量很大,担心使用ranger-hdfs插件后 namenode扛不住压力 所以需要本人进行压测 没有在网上找到其他文档 资料太少了 决定自己写一份

介绍下压测环境 15个节点 集群高可用两个namenode 主备 其中node2 为活动的namenode

环境如下:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
Stepping:              1
CPU MHz:               2299.951
CPU max MHz:           3000.0000
CPU min MHz:           1200.0000
BogoMIPS:              4194.67
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7,16-23
NUMA node1 CPU(s):     8-15,24-31

这里使用阿里的压测包 stresstester 包

public class PressTest {

    static  int concurrencyLevel=128; //并发数
    static  int totalRequest=Integer.MAX_VALUE; //请求数
    static String username="sparkuser1";
    public static void main(String[] args) {
        StressResult result= StressTestUtils.test(concurrencyLevel, totalRequest, new StressTask() {
            public Object doTask() throws Exception {
                HdfsFileService hdfsFileService = HdfsFileServiceLocal.LocalThread.get();
                Random random=new Random();
                int i=random.nextInt(100)+1;
                if(i<=(100*0.1)){
                    hdfsFileService.updateToHdfs("/tmp/startScl.sh","/user/tmp");
                }else{
                    int rand = new Random().nextInt(10000) + 1;
                    hdfsFileService.read("/scldir/test/dir"+rand);
                }
                return"";
            }
        });
    }
    private static class HdfsFileServiceLocal {

        private static ThreadLocal<HdfsFileService> LocalThread = new ThreadLocal<HdfsFileService>() {
            @Override
            protected HdfsFileService initialValue() {
                try {
                    return HdfsFileServiceImpl.newBuilder().build(username);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        };

提前在Ranger上建好策略 可以开始进行测试了

建一万个策略 也提前在hdfs上建好目录 随机访问读取建立的目录

 

在不同服务器下启动测试程序 进行压测  启动不同数量的进程   变换条件 建更多的策略 分别测试安装插件和不安装时 相同条件 节点配置 线程数等环境下 的QPS RPC processTime等

 

测试结论

  安装Ranger-hdfs插件较不安装插件更耗namenode性能 在该集群配置环境上namenode QPS上线分别为

二服务器下二进程

    ♥安装Ranger-hdfs     

          QPS:2.45W 

         RPC processing time : 0 ms

 三服务器下三进程

    ♥安装Ranger-hdfs     

          QPS:3.15W 

         RPC processing time : 0 ms

    ♥未安装Ranger-hdfs   

         QPS:5.6W

         RPC processing time : 0 ms

 五服务器下五进程

    ♥安装Ranger-hdfs     

          QPS:3.14W 

         RPC processing time : 20 ms

    ♥未安装Ranger-hdfs   

         QPS:5.58W

         RPC processing time : 0 ms    

 七服务器下七进程

    ♥安装Ranger-hdfs     

          QPS:3.34W 

         RPC processing time : 25 ms

    ♥未安装Ranger-hdfs   

         QPS:5.71W

         RPC processing time : 3 ms

比对建一万策略跟五万策略测试结果基本一致 影响不大 建五万策略时使用更多的内存

 

posted @ 2019-08-29 17:55  songchaolin  阅读(762)  评论(1编辑  收藏  举报