java集成HadoopOzone簡單使用-創新互聯
這兩天 資本家突然對Ozone感興趣 讓使用Java實現上傳下載
成都創新互聯于2013年開始,是專業互聯網技術服務公司,擁有項目成都網站設計、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元蛟河做網站,已為上家服務,為蛟河各地企業和個人服務,聯系電話:18982081108我就找各種資料 找.....找 找了一個月??
Documentation for Apache Hadoop Ozone
上面這個連接是 Ozone官網的 里面有命令行的指令 和javaAPI的實現? 但是只要這個是實現不了的 因為官方沒有給你提供 要引入POM和 類似于YML的配置 我就各種找人問 終于有個大大大神 他也沒用過 但是架不住人家智商高 現學 。。。。。記得設置解除文件大小上傳限制 不然會出錯
可以去我另一篇文章看?
(30條消息) The field file exceeds its maximum permitted size of 1048576 bytes. 上傳文件到達限制 配置YML后無效_LogCNXB的博客-博客https://blog.csdn.net/LogCNXB/article/details/127917697
org.apache.hadoop hadoop-ozone-client1.1.0
我是在本地搭建的docker 版本的Ozone 直接拉取的官方鏡像
不廢話 上代碼?
思路 首先你要有 一個 Ozone 當然我是拉取的官方docker的 沒有廢啥力氣
然后需要先寫一個 上傳到WEB服務器的 文件上傳接口 (這個你們可以去csdn或者別的論壇搜一下都會有)
//要存儲的路徑如果你要在本地測試就用你本地的盤路徑 如果是liunx就用liunx的
private String fileSavePath="E:\\";
public String upload(MultipartFile uploadFile, HttpServletRequest req,String 創建卷,String 創建桶,String 創建快) throws IOException {
String filePath = "";
String format = sdf.format(new Date());
File folder = new File(fileSavePath + format);
if (!folder.isDirectory()) {
folder.mkdirs();
String oldName = uploadFile.getOriginalFilename();
String newName = UUID.randomUUID().toString() +
oldName.substring(oldName.lastIndexOf("."), oldName.length());
try {
uploadFile.transferTo(new File(folder, newName));
filePath = fileSavePath+ format + newName;
} catch (IOException e) {
e.printStackTrace();
return "上傳失敗! ";
}
}
String oldName = uploadFile.getOriginalFilename();
String newName = UUID.randomUUID().toString() +
oldName.substring(oldName.lastIndexOf("."), oldName.length());
try {
uploadFile.transferTo(new File(folder, newName));
filePath = fileSavePath+ format + newName;
} catch (IOException e) {
e.printStackTrace();
return "上傳失敗! ";
}
OzoneConfig ozoneConfig = new OzoneConfig();
ozoneConfig.Ozonedu(filePath,創建卷,創建桶,創建快);
return filePath;
}
接下來是官方給的javaAPI 其實這個上傳的代碼是可以直接拿來用的 我主要是是卡住在 可移動配置
不知道這個東西是什么? 記住一定要是9862接口哦 這個是Ozone指定的 具體我也不知道為什么
可移動配置?
new一個?OzoneConfiguration 就可以啦 不要問為什么 因為我也只是會用。。。
// 從文件中讀取數據,需要用戶提供此函數
byte [] videoData = readFile("intro.mp4");??
// 創建客戶端對象
OzoneClient ozClient = OzoneClientFactory.getRpcClient(服務器ip,9862接口,可移動配置);
// 通過客戶端對象獲取 ObjectStore 的引用
ObjectStore objectStore = ozClient.getObjectStore();
// 創建用于存儲數據的 assets 卷
// 此處創建的卷采用默認參數
objectStore.createVolume("assets");
// 驗證卷是否已創建
OzoneVolume assets = objectStore.getVolume("assets");
// 創建名為 videos 的桶
assets.createBucket("videos");
OzoneBucket video = assets.getBucket("videos");
// 從文件中讀取數據,需要用戶提供此函數 放你上傳文件的路徑哦 也就是上面上傳到WEB服務器的filePath
byte [] videoData = readFile(path);
// 創建輸出流并寫數據
OzoneOutputStream videoStream = video.createKey("intro.mp4", 1048576);
videoStream.write(videoData);
// 寫操作完成之后關閉輸出流
videoStream.close();
// 從文件中讀取數據,需要用戶提供此函數
byte [] videoData = readFile("intro.mp4");??
這個地方是需要你們自己去寫一個文件轉為 字節流的轉換方法哦 但是為了方便你們 我就直接貼在下面了
public static byte[] readFile(String path)
{
try {
FileInputStream in =new FileInputStream(new File(path));
byte[] data=new byte[in.available()];
in.read(data);
in.close();
return data;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
到此上傳就可以了
可以利用 官方給的命令行去查看你相應的 卷桶快 是否創建 如果創建那就證明是可以的
上傳 = 文件上傳到WEB -----轉字節流------存儲到Ozone
下載的話我就不貼了 和上傳一樣的 一樣的配置Ozone就可以
下載 = 讀取Ozone ------字節流轉文件 -------將文件再通過下載接口下載到本地 (字節流轉文件后可以指定到虛擬機某個路徑下 你可以寫WEB服務器的下載接口 根據路徑下載就可以)
上傳和下載的時候 卷 桶 不可重復
新人寫文章 多多指教 絕對原創哦 因為我當時做的時候搜遍了各大論壇 都沒有java集成Ozone
未經本人通知禁止搬運哦?
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
新聞標題:java集成HadoopOzone簡單使用-創新互聯
文章源于:http://www.xueling.net.cn/article/cdspeo.html