日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用HDFS客户端java api读取hadoop集群上的信息

發布時間:2024/7/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用HDFS客户端java api读取hadoop集群上的信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹使用hdfs java api的配置方法。

1、先解決依賴,pom

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.2</version><scope>provided</scope></dependency>

2、配置文件,存放hdfs集群配置信息,基本都是來源于core-site.xml和hdfs-site.xml,可以根據hdfs集群client端配置文件里的信息進行填寫

#============== hadoop =================== hdfs.fs.defaultFS=hdfs://mycluster-tj hdfs.ha.zookeeper.quorum=XXXX-apache00.XX01,XXXX-apache01.XX01,XXXX-apache02.XX01 hdfs.dfs.nameservices=XXXX hdfs.dfs.ha.namenodes.mycluster-tj=XX1,XX2 hdfs.dfs.namenode.rpc-address.mycluster-tj.nn1=XXXX-apachenn01.XX01:8020 hdfs.dfs.namenode.rpc-address.mycluster-tj.nn2=XXXX-apachenn02.XX01:8020

3、java client api

import java.io.IOException; import java.net.URI; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.conf.Configuration; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.text.SimpleDateFormat; import java.util.Date;public class HadoopClient {protected final Logger logger = LoggerFactory.getLogger(this.getClass());private FileSystem fs;private String defaultFS;private String zKQuorum;private String nameServices;private String nameNodes;private String rpcAddressNN1;private String rpcAddressNN2;public void setDefaultFS(String defaultFS) {this.defaultFS = defaultFS;}public String getDefaultFS() {return defaultFS;}public void setZKQuorum(String zKQuorum) {this.zKQuorum = zKQuorum;}public String getzKQuorum() {return zKQuorum;}public void setNameServices(String nameServices) {this.nameServices = nameServices;}public String getNameServices() {return nameServices;}public void setNameNodes(String nameNodes) {this.nameNodes = nameNodes;}public String getNameNodes() {return nameNodes;}public void setRpcAddressNN1(String rpcAddressNN1) {this.rpcAddressNN1 = rpcAddressNN1;}public String getRpcAddressNN1() {return rpcAddressNN1;}public void setRpcAddressNN2(String rpcAddressNN2) {this.rpcAddressNN2 = rpcAddressNN2;}public String getRpcAddressNN2() {return rpcAddressNN2;}public void init() {try {Configuration conf = new Configuration();conf.set("fs.defaultFS", defaultFS);conf.set("ha.zookeeper.quorum", zKQuorum);conf.set("dfs.nameservice", nameServices);conf.set("dfs.ha.namenodes.mycluster-tj", nameNodes);conf.set("dfs.namenode.rpc-address.mycluster-tj.nn1", rpcAddressNN1);conf.set("dfs.namenode.rpc-address.mycluster-tj.nn2", rpcAddressNN2);fs = FileSystem.get(new URI(defaultFS), conf);} catch (Exception ex) {ex.printStackTrace();}}public void stop() {try {fs.close();} catch(Exception e) {}}public boolean exists(String path) {boolean isExists = false;try {Path hdfsPath = new Path(path);isExists = fs.exists(hdfsPath);} catch (Exception ex) {logger.error("exists error: {}", ex.getMessage());}return isExists;}public String getModificationTime(String path) throws IOException {String modifyTime = null;try {Path hdfsPath = new Path(path);FileStatus fileStatus = fs.getFileStatus(hdfsPath);long modifyTimestamp = fileStatus.getModificationTime();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date(modifyTimestamp);modifyTime = simpleDateFormat.format(date);} catch(Exception ex) {logger.error("getModificationTime error: {}", ex.getMessage());}return modifyTime;}}

4、configuration

import com.xiaoju.dqa.prometheus.client.hadoop.HadoopClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration public class HadoopConfiguration {@Value("${hdfs.fs.defaultFS}")private String defaultFS;@Value("${hdfs.ha.zookeeper.quorum}")private String zKQuorum;@Value("${hdfs.dfs.nameservices}")private String nameServices;@Value("${hdfs.dfs.ha.namenodes.mycluster-tj}")private String nameNodes;@Value("${hdfs.dfs.namenode.rpc-address.mycluster-tj.nn1}")private String rpcAddressNN1;@Value("${hdfs.dfs.namenode.rpc-address.mycluster-tj.nn2}")private String rpcAddressNN2;@Bean(initMethod = "init", destroyMethod = "stop")public HadoopClient hadoopClient() {HadoopClient hadoopClient = new HadoopClient();hadoopClient.setDefaultFS(defaultFS);hadoopClient.setZKQuorum(zKQuorum);hadoopClient.setNameServices(nameServices);hadoopClient.setNameNodes(nameNodes);hadoopClient.setRpcAddressNN1(rpcAddressNN1);hadoopClient.setRpcAddressNN2(rpcAddressNN2);return hadoopClient;} }

今天被一個問題坑的要死了,回來補這篇文章。

如果你要訪問的集群采用了viewfs方式管理數據,按照本文上面的方法鏈接集群是有問題。會導致由URI和nameservices解析成功的namenode才可以訪問,而其他的訪問不了!!!

如果你想解決這個問題,在api部分你要去掉URI部分和nameservices配置,直接使用集群客戶端hdfs-site.xml和core-site.xml

應該是這樣的。

package com.xiaoju.dqa.jazz.hadoop.client;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date;public class HadoopClient {protected final Logger logger = LoggerFactory.getLogger(this.getClass());private FileSystem fs;public void init() {try {Configuration conf = new Configuration();conf.addResource("core-site.xml");conf.addResource("hdfs-site.xml");conf.addResource("mount-table.xml");fs = FileSystem.get(conf);} catch (Exception ex) {ex.printStackTrace();}}public void stop() {try {fs.close();} catch(Exception e) {}}public boolean exists(String path) {boolean isExists = true;try {Path hdfsPath = new Path(path);isExists = fs.exists(hdfsPath);} catch (Exception e) {logger.error("[HDFS]判斷文件是否存在失敗", e);}return isExists;}public String getModificationTime(String path) throws IOException {String modifyTime = null;try {Path hdfsPath = new Path(path);FileStatus fileStatus = fs.getFileStatus(hdfsPath);long modifyTimestamp = fileStatus.getModificationTime();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date(modifyTimestamp);modifyTime = simpleDateFormat.format(date);} catch(Exception e) {logger.error("[HDFS]獲取最近修改時間失敗", e);}return modifyTime;}public long getPathSize(String path) throws IOException {long size = -1L;try {Path hdfsPath = new Path(path);size = fs.getContentSummary(hdfsPath).getLength();} catch (Exception e) {logger.error("[HDFS]獲取路徑大小失敗", e);}return size;}}

config中也不需要傳任何參數了

package com.xiaoju.dqa.jazz.hadoop.configuration;import com.xiaoju.dqa.jazz.hadoop.client.HadoopClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration public class HadoopConfig {@Bean(initMethod = "init", destroyMethod = "stop")public HadoopClient hadoopClient() {HadoopClient hadoopClient = new HadoopClient();return hadoopClient;} }

?

轉載于:https://www.cnblogs.com/kangoroo/p/7221527.html

總結

以上是生活随笔為你收集整理的使用HDFS客户端java api读取hadoop集群上的信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆精品国产 | 欧美图片第一页 | av一级久久| 一区二区三区久久 | 亚洲美免无码中文字幕在线 | 免费草逼视频 | 久久在线电影 | 青青久在线视频 | 永久免费无码av网站在线观看 | 七七色影院 | 老司机激情影院 | 国产乱了高清露脸对白 | 奇米精品一区二区三区在线观看一 | 大乳村妇的性需求 | 成人h视频在线观看 | 99免费精品 | 不卡的av在线 | 国产在线拍揄自揄拍无码 | 成人av第一页 | 亚洲视频在线免费播放 | 天堂网男人 | 18禁男女爽爽爽午夜网站免费 | 少妇乱淫 | 亚洲区中文字幕 | 欧美激情一区二区视频 | 日韩欧美二区三区 | 欧美日韩在线免费看 | 僵尸叔叔在线观看国语高清免费观看 | 红色假期黑色婚礼2 | 午夜寂寞影院在线观看 | av爱爱爱 | 私库av在线| 国产精品无码一区二区桃花视频 | 国产亚洲av片在线观看18女人 | 日韩精品一区在线 | 在线观看国产 | 国产精品无码自拍 | 亚洲jlzzjizz少妇| 久久久久久五月天 | 真人毛片97级无遮挡精品 | 天天鲁| 国产伦人伦偷精品视频 | 伊人影院在线视频 | 无罩大乳的熟妇正在播放 | 国产日本在线观看 | 国产区在线视频 | 天堂91| 在线免费观看国产视频 | 欧美在线一区二区三区四区 | 亚洲成a人片77777kkkk | 亚州成人 | 精品久久久久久久久久 | 狠狠干在线| 国产91在线 | 亚洲 | 亚洲国产精品99久久久久久久久 | 国产一区二区日韩 | 亚洲人在线观看视频 | 人人干人人爽 | 欧美日韩在线免费观看视频 | 大尺度做爰无遮挡露器官 | 99久久伊人 | 青青草视频在线看 | 精品少妇v888av | 色图色小说 | 久久青青草原亚洲av无码麻豆 | 岛国精品 | 97国产资源 | 日韩不卡在线播放 | 日韩av在线播放一区 | 麻豆蜜桃av | 国产精品电影一区二区三区 | 免费av一区二区 | av国语 | 中文字幕在线观看亚洲 | 欧美日韩高清不卡 | 日日骚av一区二区 | 青青青在线免费 | 91麻豆视频在线观看 | 椎名由奈av一区二区三区 | 中文字幕国产亚洲 | 在线91观看| 国产精品白浆一区二小说 | 超碰1000| 国产精品自拍片 | 免费在线播放黄色片 | 美女扒开尿口给男人桶 | 肉大捧一进一出免费视频 | 国产成人在线播放视频 | 无套白嫩进入乌克兰美女 | 久久久久久久久99精品 | 亚洲情趣| 春色激情 | 激情在线网站 | 色桃av | 大尺度做爰呻吟舌吻网站 | 国产又粗又猛又黄视频 | 正在播放国产一区 | 久久久久久亚洲av毛片大全 | 综合 欧美 亚洲日本 |