Cloudera Development Kit(CDK) 简介
2013.07.02
CDK简介
CDK(Cloudera Development Kit) 就是一些Cluodera开发的库、工具和文档的集合。CDK这个项目存在的价值在于使得在基于Hadoop生态系统上开发系统更加容易。这个项目是按照模块组织的,模块之间或者独立,或者依赖CDK内的其他模块,但是尽量少的依赖外部项目模块。CDK的文档主页在这里:http://cloudera.github.io/cdk/docs/0.2.0/index.html,项目主页:http://cloudera.github.com/cdk/cdk-data。
当前CDK有以下三个模块:
- CDK Data
CDK Data 模块在存储系统(HDFS)之上提供了逻辑抽象,使得用户能依据“records, datasets, and dataset repositories”这些概念去思考和操作数据。CDK Data的适用场景:如果你正在寻求一种方式
直接向存储系统中读/写数据记录,那么CDK Data应该就是你想要的。CDK Data 提供了操作Cloudra平台中数据集的简单、直观的API。换句话说,CDK Data所处的位置比 Hadoops input/output formats API低一个等级,比标准的HDFS+AVRO API高一个等级。
- CDK Example
CDK Example提供了一些例子用于学习和适用CDK。
- CDK Tools
CDK Tools提供了命令行公斤和API用于操作CDK的公共功能。
源代码
为什么要用CDK Data而不使用HDFS提供的API直接操作HDFS?
HDFS确实提供了用于操作HDFS的API,但是这些API(
FSInputStream,
FSOutputStream)都是面向字节流的,太底层、很不直观。
大多数的开发者更愿意思考更高层次的对象,而不是底层的文件、目录;而且开发者喜欢将表、数据集的概念移植到存储在HDFS上的数据上,因为这样更易于理解。CDK Data就着眼于这个需求,向开发者提供了立即可用的、令人愉快的方式用于操作Hadoop生态系统,并且不损失操作数据的效率。
FSInputStream,
FSOutputStream)都是面向字节流的,太底层、很不直观。
大多数的开发者更愿意思考更高层次的对象,而不是底层的文件、目录;而且开发者喜欢将表、数据集的概念移植到存储在HDFS上的数据上,因为这样更易于理解。CDK Data就着眼于这个需求,向开发者提供了立即可用的、令人愉快的方式用于操作Hadoop生态系统,并且不损失操作数据的效率。
CDK Data目前已知的局限性
- 目前不可以rename dataset。
- 当多进程操作数据集时,目前没有锁机制和进程间的协调机制。
- 不能确保被FileSystem*实现的writer所生成的文件名是真正唯一的。
- 所有的data set都使用Snappy压缩,目前不可以disable压缩或者更换不同的压缩方式。