zoukankan      html  css  js  c++  java
  • Hypertable hbase hdfs kfs java与c++的较量 Angels

    曾经做过一个测试,用hdfs和 kfs分别作hadoop的底层,发现还是hdfs快,可能hdfs更符合hadoop的生态系统,但是一个很明显的现象就是用hdfs的时候,系统的内存缓存量很大几乎等于全部内存,iowait 也很高,kfs则没那么严重,这也是kfs慢的原因吧,因此如果在一个繁忙的集群上测试,哪个效果好,还是难以下定论,c++比java省内存和cpu,好多人都这么说,具体原因,我还不清楚,需要进一步学习。下面引用了另一位高人的随笔:

    原创  Hypertable C++ vs Hbase Java 

    Hypertable 和Hbase二者同源,设计也有诸多相似之处,最主要的区别当然还是编程语言的选择。Hbase选择Java主要是因为Apache和Hadoop的公共 库、历史项目基本都采用该语言,并且Java项目在设计模式和文档上一般都比C++项目好,非常适合开源项目。C++的优势当然还是在性能和内存使用上。 Yahoo曾经给出了一个很好的Terasort结果(perspectives.mvdirona.com/2008/07/08/HadoopWinsTeraSort.aspx), 它们认为对于大多数Mapreduce任务,比如分布式排序,性能瓶颈在于IO和网络,Java和C++在性能上基本没有区别。不过,使用Java的 Mapreduce在每台服务器上明显使用了更多的CPU和内存,如果用于分布式排序的服务器还需要部署其它的CPU/内存密集型应用,Java的性能劣 势将显现。对于Hypertable/HBase这样的表格系统,Java的选择将带来如下问题: 1.  Hyertable/Hbase是内存和CPU密集型的。Hypertable/Hbase采用Log-Structured Merge Tree设计,系统可以使用的内存直接决定了系统性能。内存中的memtable和表格系统内部的缓存都大量使用内存,可使用的内存减少将导致 merge-dump频率加大,直接加重底层HDFS的压力。另外,读取和dump操作大量的归并操作也可能使CPU成为一个瓶颈,再加上对数据的压缩/ 解压缩,特别是Bigtable中最经常使用的BM-diff算法在压缩/解压缩过程完全跑满一个CPU核,很难想象Java实现的Hbase能够与 C++实现的Hypertable在性能上抗衡。 2. Java垃圾回收。目前Java虚拟机垃圾回收时将停止服务一段时间,这对Hypertable/HBase中大量使用的Lease机制是一个很大的考 验。虽然Java垃圾回收可以改进,但是企图以通用的方式完全解决内存管理问题是不现实的。内存管理没有通用做法,需要根据应用的访问模式采取选择不同的 策略。 当然,Hadoop由于采用了Java设计,导致开源合作变得更加容易,三大核心系统之上开发的辅助系统,如Hadoop的监控,Pig等都相当成功。所 以,我的观点依然是:对于三驾马车的核心系统,采用C++相对合理;对于辅助模块,Java是一个不错的选择。
  • 相关阅读:
    电脑连接到手机并安装手机驱动usb-driver
    创建安卓模拟器的两种方式及常用Android命令介绍
    在loadrunner中用头文件的形式对字符串进行MD5加密操作
    Android自动化测试Uiautomator--UiCollection接口简介
    Android自动化测试Uiautomator--UiScrollable接口简介
    Android自动化测试Uiautomator--UiObject接口简介
    Android自动化测试Uiautomator--UiSelector接口简介
    Uiautomator简介及其环境搭建、测试执行
    Android自动化测试Uiautomator--UiDevice接口简介
    Eclipce 配置javaEE
  • 原文地址:https://www.cnblogs.com/qianxun/p/2029321.html
Copyright © 2011-2022 走看看