Hadoop HIPI学习
1.Hipi是什么?
HIPI是hadoop图片处理的框架,它提供了用于在分布式计算环境中执行图片处理任务的API。
描述图如下:
2.HIPI作用:
用于合并小的图像文件,及切割算法。
3.为什么用要用HIPI框架
因为hadoop框架很适合大文件的操作,而我们平时使用的图片的文件都比较小,如果这种小文件不经过处理直接上传,会十分影响性能,所以HIPI框架具备图片的合并以及分割,Hadoop HIPI学习
2.Hipi是什么?
HIPI是hadoop图片处理的框架,它提供了用于在分布式计算环境中执行图片处理任务的API。
描述图如下:
本人的个人理解:
通过HIBI框架把客户端上传的多张图片合并成一个大的HIB文件,然后把这些大的文件上传到hadoop hdfs中,
(待续.。。。。)
3.HIPI作用:
用于合并小的图像文件,及切割算法。
帮我们很好的解决了这方面的问题.
4.HIPI官网: 官网中有很多有用的资料,大家可以看看
http://hipi.cs.virginia.edu/index.html
5.HIPI框架下载地址:
http://hipi.cs.virginia.edu/downloads.html
里面有几个版本,大家把HIPI开发版下载下来就可以了,里面的内容很全.
hipi-dev.tar.gz ---该版本为开发版
6.把本地的图片文件通过HIPI框架上传到hadoop系统中
(1).把hipi-dev.tar.gz中src的源码引入到eclipse的jar项目中.----之所以引入源码,因为目前HIPI还是有一些BUG的(不过对我们使用HIPI的影响不是很大)
例如:获取一个分辨率很大的图片,会报内存异常错误,导入源码后,可以对一些bug进行修改,或对现已有的功能进行定制化修改。
(2).把hipi-dev.tar.gz中3rdparty中的metadata-extractor-2.3.1.jar和junit-4.11.jar,导入的到项目中去.否则会报错.
(3)上传代码:
往hib中添加1张图片,上传到hdfs中
/**
*
*/
package com.hd.hdfs;
import hipi.image.FloatImage;
import hipi.image.ImageHeader;
import hipi.image.ImageHeader.ImageType;
import hipi.imagebundle.AbstractImageBundle;
import hipi.imagebundle.HipiImageBundle;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
/**
* @author
*时间: @2013-12-18 @下午5:22:44
*说明:上传数据
*
*/
public class UploadImage {
/**
* 上传
* @throws IOException
*/
public void myUploadImage() throws IOException{
//ArrayList<String> hosts=new ArrayList<String>();
Configuration conf=new Configuration();
conf.addResource(new Path("d:\\core-site.xml"));