頭歌實(shí)踐教學(xué)平臺(tái)
教學(xué)課堂
大數(shù)據(jù)從入門到實(shí)戰(zhàn) - 第2章 分布式文件系統(tǒng)HDFS
第1關(guān):HDFS的基本操作
任務(wù)描述
本關(guān)任務(wù):使用Hadoop
命令來操作分布式文件系統(tǒng)。
編程要求
在右側(cè)命令行中啟動(dòng)Hadoop
,進(jìn)行如下操作。
- 在
HDFS
中創(chuàng)建/usr/output/
文件夾; - 在本地創(chuàng)建
hello.txt
文件并添加內(nèi)容:“HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷。
”; - 將
hello.txt
上傳至HDFS
的/usr/output/
目錄下; - 刪除
HDFS
的/user/hadoop
目錄; - 將
Hadoop
上的文件hello.txt
從HDFS
復(fù)制到本地/usr/local
目錄。
測試說明
平臺(tái)會(huì)查看你本地的文件和HDFS
的文件是否存在,如果存在,則會(huì)將其內(nèi)容輸出到控制臺(tái)。
預(yù)期輸出:
HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷。
HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷。
代碼
start-dfs.sh
hadoop fs -mkdir /usr
hadoop fs -mkdir /usr/output
vim hello.txt
hadoop fs -put hello.txt /usr/output
hadoop fs -rm -r /user/hadoop
hadoop fs -copyToLocal /usr/output/hello.txt /usr/local
截圖
?第2關(guān):HDFS-JAVA接口之讀取文件
任務(wù)描述
本關(guān)任務(wù):使用HDFS
的Java
接口進(jìn)行文件的讀寫,文件uri
地址為hdfs://localhost:9000/user/hadoop/task.txt
。
編程要求
在右側(cè)代碼編輯區(qū)中編寫代碼實(shí)現(xiàn)如下功能:
- 使用
FSDataInputStream
獲取HDFS
的/user/hadoop/
目錄下的task.txt
的文件內(nèi)容,并輸出,其中uri
為hdfs://localhost:9000/user/hadoop/task.txt
。
測試說明
點(diǎn)擊評(píng)測,平臺(tái)會(huì)通過腳本創(chuàng)建/user/hadoop/task.txt
文件并添加相應(yīng)內(nèi)容,無需你自己創(chuàng)建,開啟hadoop
,編寫代碼點(diǎn)擊評(píng)測即可。因?yàn)?code>Hadoop環(huán)境非常消耗資源,所以你如果一段時(shí)間不在線,后臺(tái)會(huì)銷毀你的鏡像,之前的數(shù)據(jù)會(huì)丟失(你的代碼不會(huì)丟失),這個(gè)時(shí)候需要你重新啟動(dòng)Hadoop
。
預(yù)期輸出: WARN [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
怕什么真理無窮,進(jìn)一寸有一寸的歡喜。
第一行打印出來的是log4j
的日志警告,可以忽略。
代碼
//請(qǐng)?jiān)贐egin-End之間添加你的代碼,完成任務(wù)要求。
/********* Begin *********/
URI uri = URI.create("hdfs://localhost:9000/user/hadoop/task.txt");
Configuration config = new Configuration();
FileSystem fs = FileSystem.get(uri, config);
InputStream in = null;
try{
in = fs.open(new Path(uri));
IOUtils.copyBytes(in,System.out,2048,false);
}catch(Exception e){
IOUtils.closeStream(in);
}
/********* End *********/
截圖
第3關(guān):HDFS-JAVA接口之上傳文件
任務(wù)描述
本關(guān)任務(wù):使用HDFSAPI
上傳文件至集群。
編程要求
在右側(cè)代碼編輯區(qū)和命令行中,編寫代碼與腳本實(shí)現(xiàn)如下功能:
-
在
/develop/input/
目錄下創(chuàng)建hello.txt
文件,并輸入如下數(shù)據(jù):迢迢牽牛星,皎皎河漢女。
纖纖擢素手,札札弄機(jī)杼。
終日不成章,泣涕零如雨。
河漢清且淺,相去復(fù)幾許?
盈盈一水間,脈脈不得語。
《迢迢牽牛星》
-
使用
FSDataOutputStream
對(duì)象將文件上傳至HDFS
的/user/tmp/
目錄下,并打印進(jìn)度。
測試說明
平臺(tái)會(huì)運(yùn)行你的java
程序,并查看集群的文件將文件信息輸出到控制臺(tái),第一行屬于警告信息可以忽略。
預(yù)期輸出:
?代碼
//請(qǐng)?jiān)?Begin-End 之間添加代碼,完成任務(wù)要求。
/********* Begin *********/
File localPath = new File("/develop/input/hello.txt");
String hdfsPath = "hdfs://localhost:9000/user/tmp/hello.txt";
InputStream in = new BufferedInputStream(new FileInputStream(localPath));
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);
long fileSize = localPath.length() > 65536 ? localPath.length() / 65536 : 1;
FSDataOutputStream out = fs.create(new Path(hdfsPath),new Progressable(){
long fileCount = 0;
public void progress(){
System.out.println("總進(jìn)度"+(fileCount / fileSize) * 100 + "%");
fileCount++;
}
});
IOUtils.copyBytes(in,out,2048,true);
/********* End *********/
?截圖
?
第4關(guān):HDFS-JAVA接口之刪除文件?
任務(wù)描述
本關(guān)任務(wù):刪除HDFS
中的文件和文件夾。
編程要求
在右側(cè)代碼區(qū)填充代碼,實(shí)現(xiàn)如下功能:
- 刪除
HDFS
的/user/hadoop/
目錄(空目錄); - 刪除
HDFS
的/tmp/test/
目錄(非空目錄); - 列出
HDFS
根目錄下所有的文件和文件夾; - 列出
HDFS
下/tmp/
的所有文件和文件夾。
測試說明
HDFS
的文件夾在你點(diǎn)擊評(píng)測是會(huì)通過腳本自動(dòng)創(chuàng)建,不需要你自己創(chuàng)建哦,依照題意編寫代碼點(diǎn)擊評(píng)測即可。
預(yù)期輸出:
?代碼
//請(qǐng)?jiān)?Begin-End 之間添加代碼,完成本關(guān)任務(wù)。
/********* Begin *********/
String uri = "hdfs://localhost:9000/";
String path1 = "hdfs://localhost:9000/user/hadoop";
String path2 = "hdfs://localhost:9000/tmp/test";
Configuration config = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri),config);
fs.delete(new Path(path1),true);
fs.delete(new Path(path2),true);
Path[] paths = {new Path(uri),new Path("hdfs://localhost:9000/tmp")};
FileStatus[] status = fs.listStatus(paths);
Path[] listPaths = FileUtil.stat2Paths(status);
for(Path path : listPaths){
System.out.println(path);
}
/********* End *********/
截圖
?文章來源:http://www.zghlxwxcb.cn/news/detail-526194.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-526194.html
到了這里,關(guān)于Hadoop大數(shù)據(jù)從入門到實(shí)戰(zhàn)(二)分布式文件系統(tǒng)HDFS的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!