hadoop on ceph
http://docs.ceph.com/docs/master/cephfs/hadoop/
依赖的接口:
主要的要点:
1、hadoop更新设置对应的配置为ceph
2、为了支持三副本的要求,需要手动创建hadoop的三个pool
3、hadoop需要支持ceph的本地jar文件
4、当前hadoop支持的ceph版本是hadoop1.x
HDFS和ceph性能比较
http://iopscience.iop.org/article/10.1088/1742-6596/513/4/042014/pdf
https://stackoverflow.com/questions/34041084/glusterfs-or-ceph-as-backend-for-hadoop
主要观点:
1、 ceph在性能上2/3慢于HDFS,ith default replication factor in terasort benchmark
http://www.jianshu.com/p/60a78c1fa1ce
一、 前置知识
块设备:
块设备将信息存储在固定大小的块中,每个块都能进行编址。块设备的基本特征是每个块都能区别于其它块而读写。块设备也是底层设备的抽象,块设备上未建立文件系统时,也称之为裸设备。
块设备与ceph的联系:
client想要把数据存储到ceph的集群中时,他必须要有一个读写的目标,能够在本地知道这个目标。这里讲的是块存储,当然这个读写的目标要是一个块设备才行,需要将这个块设备与ceph关联起来,这个块设备通常成为rbd设备。
rbd的全称应该是Rados Block Device。rbd是由ceph进行整理物理资源并且向外提供的RAODS形式的块设备,这样的块设备在客户端同其他类型的块设备使用方法相同
OSD是如何存储数据:
OSD其实是建立在文件系统之上的,当你使用一个块设备进行部署OSD节点时,部署工具会默认格式化osd为xfs,当然你也可以预先格式为想要的文件系统(ext4等)。数据到了OSD层次时,这时可以把这个请求变成一个文件的操作,最后交给了xfs文件系统,最终组织到了磁盘上。
二、rbd到osd的映射:
1、客户端的使用rbd设备,
在客户端使用rbd设备时,一般有两种方法。
第一种 是kernel rbd。就是创建了rbd设备后,把rbd设备map到内核中,形成一个虚拟的块设备,这时这个块设备同其他通用块设备一样,一般的设备文件为/dev/rbd0,后续直接使用这个块设备文件就可以了,可以把/dev/rbd0格式化后mount到某个目录,也可以直接作为裸设备使用。这时对rbd设备的操作都通过kernel rbd操作方法进行的。
第二种是librbd方式。就是创建了rbd设备后,这时可以使用librbd、librados库进行访问管理块设备。这种方式不会map到内核,直接调用librbd提供的接口,可以实现对rbd设备的访问和管理,但是不会在客户端产生块设备文件。
Hadoop2.7.3和Ceph0.94结合
ceph中国官方
当前hadoop还没有在内核完整的支持ceph,所以直接替换掉hdfs还不太成熟,可以直接当成一个存储介质来使用,CEPH的对象存储到还不错。