參考資料為:
教材代碼-林子雨編著《大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程(第2版)》教材所有章節(jié)代碼_廈大數(shù)據(jù)庫(kù)實(shí)驗(yàn)室博客
1.實(shí)驗(yàn)學(xué)時(shí)
4學(xué)時(shí)
2.實(shí)驗(yàn)?zāi)康?/strong>
- 熟悉HDFS的基本shell命令
- 熟悉HDFS的web管理
- 掌握HDFS編程實(shí)踐
3.實(shí)驗(yàn)內(nèi)容
(一)參考實(shí)驗(yàn)指南的內(nèi)容,完成相關(guān)的HDFS的基本shell命令。
先啟動(dòng)hadoop:
?輸入命令查看hdfs dfs支持的操作:
?
?
?查看具體命令的作用:
?
?先新建文件夾:
?
運(yùn)行命令顯示HDFS與當(dāng)前用戶對(duì)應(yīng)目錄下的內(nèi)容:
創(chuàng)建input目錄:
刪除input文件:
創(chuàng)建一個(gè)xml文件
復(fù)制文件到生成的input文件之中:
查看HDFS中txt文件的內(nèi)容:
將txt文件移動(dòng)到其他文件夾下:
后面查看:
(二)查看HDFS的網(wǎng)頁(yè)管理界面。請(qǐng)描述網(wǎng)頁(yè)界面中的各個(gè)參數(shù)的名稱。
查看HDFS網(wǎng)頁(yè)管理界面:
(三)完成eclipse的安裝,在eclipse中創(chuàng)建項(xiàng)目,配置所需要的jar包,編寫(xiě)一個(gè)可以和HDFS相交互的Java應(yīng)用程序。
安裝完成之后進(jìn)入:
?進(jìn)行對(duì)應(yīng)包的調(diào)用之后,開(kāi)始編寫(xiě)函數(shù):下面為java代碼
import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
/**
* 過(guò)濾掉文件名滿足特定條件的文件
*/
class MyPathFilter implements PathFilter {
String reg = null;
MyPathFilter(String reg) {
this.reg = reg;
}
public boolean accept(Path path) {
if (!(path.toString().matches(reg)))
return true;
return false;
}
}
/***
* 利用FSDataOutputStream和FSDataInputStream合并HDFS中的文件
*/
public class MergeFile {
Path inputPath = null; //待合并的文件所在的目錄的路徑
Path outputPath = null; //輸出文件的路徑
public MergeFile(String input, String output) {
this.inputPath = new Path(input);
this.outputPath = new Path(output);
}
public void doMerge() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fsSource = FileSystem.get(URI.create(inputPath.toString()), conf);
FileSystem fsDst = FileSystem.get(URI.create(outputPath.toString()), conf);
//下面過(guò)濾掉輸入目錄中后綴為.abc的文件
FileStatus[] sourceStatus = fsSource.listStatus(inputPath,
new MyPathFilter(".*\\.abc"));
FSDataOutputStream fsdos = fsDst.create(outputPath);
PrintStream ps = new PrintStream(System.out);
//下面分別讀取過(guò)濾之后的每個(gè)文件的內(nèi)容,并輸出到同一個(gè)文件中
for (FileStatus sta : sourceStatus) {
//下面打印后綴不為.abc的文件的路徑、文件大小
System.out.print("路徑:" + sta.getPath() + " 文件大?。? + sta.getLen()
+ " 權(quán)限:" + sta.getPermission() + " 內(nèi)容:");
FSDataInputStream fsdis = fsSource.open(sta.getPath());
byte[] data = new byte[1024];
int read = -1;
while ((read = fsdis.read(data)) > 0) {
ps.write(data, 0, read);
fsdos.write(data, 0, read);
}
fsdis.close();
}
ps.close();
fsdos.close();
}
public static void main(String[] args) throws IOException {
MergeFile merge = new MergeFile(
"hdfs://localhost:9000/user/hadoop/",
"hdfs://localhost:9000/user/hadoop/merge.txt");
merge.doMerge();
}
}
?
?
?
?
(四)生成jar包,部署相關(guān)的應(yīng)用程序。
先生成一個(gè)文件夾存放信息:
之后右鍵工作區(qū),彈出export:
?
之后在彈出的界面中選擇java包下的文件,進(jìn)入后填好運(yùn)行的java類(lèi)和將要保存到的包中:
之后文件開(kāi)始打包:
打包完成之后,在對(duì)應(yīng)的文件夾下發(fā)現(xiàn)打包好的文件:
刪除merge文件之后,運(yùn)行這個(gè)打包好的文件:
之后執(zhí)行命令查看文件信息:
4.思考題
(一)Hadoop中HDFS包含哪些命令,這些命令各自代表什么意思?
1.創(chuàng)建目錄
hdfs dfs -mkdir /
2.查看目錄下載文件
hdfs dfa -ls /???? hdfs dfs -ls /
3. 上傳本地文件
hdfs dfs -put a.txt /
4.刪除文件/目錄
刪除文件hdfs dfs -rm /test/a.txt? 刪除目錄hdfs dfs -rm -r /test
5. 復(fù)制文件
hdfs dfs -cp /test/a.txt /
(二)Hadoop創(chuàng)建的應(yīng)用程序,需要導(dǎo)入哪些安裝包,這些安裝包里面有什么功能?
1. hadoop-common-2.7.1.jar?? ??2. haoop-hdfs-2.7.1.jar
3.haoop-hdfs-nfs-2.7.1.jar; ??4. haoop-nfs-2.7.1.jar
安裝包的內(nèi)部對(duì)應(yīng)的目錄有著以下的功能:
sbin目錄:存放啟動(dòng)或停止hadoop相關(guān)服務(wù)的腳本
bin目錄:存放對(duì)hadoop相關(guān)服務(wù)(HDFS,YARN)進(jìn)行操作的腳本
etc目錄:hadoop的配置文件目錄,存放hadoop的配置文件
share目錄:存放hadoop的依賴jar包和文檔,文檔可以被刪除掉
5、lib目錄:存放hadoop的本地庫(kù)(對(duì)數(shù)據(jù)進(jìn)行壓縮解壓縮功能)
5.實(shí)驗(yàn)結(jié)論和體會(huì)
1.運(yùn)行hdfs的時(shí)候,需要注意先啟動(dòng)hadoop系統(tǒng),如果不清楚對(duì)應(yīng)的hdfs的操作,可以使用./bin/hdfs dfs,命令查看。
2.在ecplise導(dǎo)入jar包的時(shí)候,需要注意導(dǎo)入包的數(shù)量,注意不要漏導(dǎo)入包。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-717974.html
3.在運(yùn)行完成主程序之后,需要在hdfs上查看是否成功運(yùn)行生成對(duì)應(yīng)文件。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-717974.html
到了這里,關(guān)于云計(jì)算技術(shù) 實(shí)驗(yàn)四 HDFS操作方法和基礎(chǔ)編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!