Hphoto项目简介
本程序立基与Hbase,Hbase是一个分布式的结构化数据存储系统,
其立项初衷是在Hadoop上构建一个跟GoogleBigtable相似的一个系统。
Hbase是Hadoop的一个分支项目,Hadoop的分布式文件系统(HDFS)和MapReduce运算模型已被广泛采用。到2007年7月,Yahoo有大于5000个节点运行Hadoop.最大的集群超过2000个节点(被应用在Ad Systems 和 Web Search).
可以轻松地添加存储节点和从集群中取下部分存储节点,其自动备份系统保证了数据的可靠性.也可采用Ganglia对集群的性能进行监控.
BigTable是一个高可靠性大数据集的分布式系统,已被证明应用于Google的大型应用中:Crawl大约800T数据,Google Analytics大约200多T数据,
Google Earth,大约80多T数据(资料来源:Google参加OSDI 2006发表的论文).
自Apache在2007年10月29号发布了0.15.0版本的Hadoop,Hbase第一次随着这个版本正式发布.
本人用Hbase编写了一段象Picasaweb的一段程序,已供学习.积累了一些经验,也有一些不足.
本程序用两个表来存储数据,没有使用表级数据压缩,没有使用BloomFilter.用户表和图像表中的album段数据放在内存里。
本来Hadoop在设计时是考虑用在Linux系统上的,所以从官方下载的Hadoop需要修改一下才能在Windows系统中运行.因为默认的org.apache.hadoop.fs.DU类和org.apache.hadoop.fs.DF类
采用Linux的du -s 和df -k命令来获取磁盘信息。所以我在Windows系统下模拟了du -s命令,采用系统的命令 fsutil volume diskfree来替换df -k.由于Windows各个语言的系统采用fsutil volume diskfree返回的字符都不一样,
所以本程序只能用在简体中文的操作系统或英文操作系统的NTFS的卷上运行(fsutil命令不支持FAT32文件系统)并且只在XP系统上运行过,请大家注意.
本程序由于没有考虑用于商业,所以在编写程序时也没有考虑高性能运行环境要求.
所有略缩都是按需生成的,采用最近最久未使用策略(LRUCache)管理略缩图,对服务器压力也比较大。如应用于商业可考虑用LVS来做负载均衡多台提供图像数据的服务器。
已完成部分
- 初步完成程序
- I18n国际化问题.
未完成部分
- 优化代码,优化运行速度
- 为未完成的功能提供接口
- 采用JSON方式把数据序列化到用户端,减少服务段数据访问
- 编写Mapreduce程序为搜索提供数据.
- 程序需要一个IO类存储各个略索图片的压缩数据,提供用key访问方法
- 修改数据API接口(/data/user/{userid}/album/{albumid}),提供REST方式的访问.