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来做负载均衡多台提供图像数据的服务器。

联系作者:beijing.josh@gmail.com

已完成部分

  • 初步完成程序
  • I18n国际化问题.

未完成部分

  • 优化代码,优化运行速度
  • 为未完成的功能提供接口
  • 采用JSON方式把数据序列化到用户端,减少服务段数据访问
  • 编写Mapreduce程序为搜索提供数据.
  • 程序需要一个IO类存储各个略索图片的压缩数据,提供用key访问方法
  • 修改数据API接口(/data/user/{userid}/album/{albumid}),提供REST方式的访问.

下载程序和运行环境

  • 运行本程序需安装jre1.5以上版本,所有调用的类库都打包在一个jar文件中(hphoto.jar)
  • 下载后请打开压缩文件阅读里面的readme.txt