1 運行環(huán)境說明
創(chuàng)新互聯(lián)成立與2013年,先為沙坡頭等服務(wù)建站,沙坡頭等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為沙坡頭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1.1 硬軟件環(huán)境
1.2 機器網(wǎng)絡(luò)環(huán)境
2 書面作業(yè)1:編譯并運行《權(quán)威指南》中的例3.2
2.1 書面作業(yè)1內(nèi)容
2.2 運行代碼
2.3 實現(xiàn)過程
2.3.1 創(chuàng)建代碼目錄
2.3.2 建立例子文件上傳到hdfs中
2.3.3 配置本地環(huán)境
2.3.4 編寫代碼
2.3.5 編譯代碼
2.3.6 使用編譯代碼讀取文件
3 書面作業(yè)2:寫入HDFS成為一個新文件
3.1 書面作業(yè)2內(nèi)容
3.2 運行代碼
3.3 實現(xiàn)過程
3.3.1 編寫代碼
3.3.2 編譯代碼
3.3.3 建立測試文件
3.3.4 使用編譯代碼上傳文件內(nèi)容到hdfs
3.3.5 驗證是否成功
4 書面作業(yè)3:作業(yè)2反向操作
4.1 書面作業(yè)2內(nèi)容
4.2 程序代碼
4.3 實現(xiàn)過程
4.3.1 編寫代碼
4.3.2 編譯代碼
4.3.3 建立測試文件
4.3.4 使用編譯代碼把文件內(nèi)容從hdfs輸出到文件系統(tǒng)中
4.3.5 驗證是否成功
l 主機操作系統(tǒng):Windows 64 bit,雙核4線程,主頻2.2G,6G內(nèi)存
l 虛擬軟件:VMware Workstation 9.0.0 build-812388
l 虛擬機操作系統(tǒng):CentOS 64位,單核,1G內(nèi)存
l JDK:1.7.0_55 64 bit
l Hadoop:1.1.2
該開發(fā)機器處于能連接互聯(lián)網(wǎng)的局域網(wǎng)中,具體信息為:
序號 | IP地址 | 機器名 | 類型 | 用戶名 | 運行進(jìn)程 |
1 | 10.88.147.220 | Hadoop0 | 單機節(jié)點 | hadoop | NN、SNNTaskTracer、DN、JobTracer |
在Hadoop集群中編譯并運行《權(quán)威指南》中的例3.2
import java.io.InputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
publicclass FileSystemCat {
publicstaticvoid main(String[] args) throws Exception {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem. get(URI.create (uri), conf);
InputStream in = null;
try {
in = fs.open( new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
在Hadoop集群中編譯并運行《權(quán)威指南》中的例3.2
啟動Hadoop,在/usr/local/hadoop-1.1.2目錄下使用如下命令建立myclass和input目錄:
mkdir myclass
mkdir input
進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立quangle.txt文件,內(nèi)容為:
使用如下命令在hdfs中建立/usr/hadoop/文件夾
hadoop fs -mkdir /usr/hadoop/
hadoop fs -ls /usr/
把例子文件上傳到hdfs的/usr/hadoop/文件夾中
hadoop fs -copyFromLocal ../input/quangle.txt /usr/hadoop/quangle.txt
hadoop fs -ls /usr/hadoop
對/usr/local/hadoop-1.1.2/conf目錄中的hadoop-env.sh進(jìn)行配置,如下如所示:
ls
vi hadoop-env.sh
加入對HADOOP_CLASPATH變量值,值為/usr/local/hadoop-1.1.2/myclass
進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立FileSystemCat.java代碼文件,命令如下:
cd /usr/local/hadoop-1.1.2/myclass/
vi FileSystemCat.java
輸入代碼內(nèi)容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java
ls
使用如下命令讀取quangle.txt內(nèi)容:
hadoop FileSystemCat /usr/hadoop/quangle.txt
自行在本地文件系統(tǒng)生成一個大約100字節(jié)的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節(jié)的內(nèi)容寫入HDFS成為一個新文件,提供代碼和執(zhí)行結(jié)果演示抓圖
注意:在編譯前請先刪除中文注釋!
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
publicclass LocalFile2Hdfs {
publicstaticvoid main(String[] args) throws Exception {
// 獲取讀取源文件和目標(biāo)文件位置參數(shù)
String local = args[0];
String uri = args[1];
FileInputStream in = null;
OutputStream out = null;
Configuration conf = new Configuration();
try {
// 獲取讀入文件數(shù)據(jù)
in = new FileInputStream(new File(local));
// 獲取目標(biāo)文件信息
FileSystem fs = FileSystem.get(URI.create(uri), conf);
out = fs.create(new Path(uri), new Progressable() {
@Override
publicvoid progress() {
System.out.println("*");
}
});
// 跳過前100個字符
in.skip(100);
byte[] buffer = newbyte[20];
// 從101的位置讀取20個字符到buffer中
int bytesRead = in.read(buffer);
if (bytesRead >= 0) {
out.write(buffer, 0, bytesRead);
}
} finally {
IOUtils.closeStream(in);
IOUtils.closeStream(out);
}
}
}
進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立LocalFile2Hdfs.java代碼文件,命令如下:
輸入代碼內(nèi)容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.java
ls
進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立local2hdfs.txt文件,內(nèi)容為:
cd /usr/local/hadoop-1.1.2/input/
vi local2hdfs.txt
使用如下命令讀取local2hdfs第101-120字節(jié)的內(nèi)容寫入HDFS成為一個新文件:
cd /usr/local/hadoop-1.1.2/bin/
hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt
使用如下命令讀取local2hdfs_part.txt內(nèi)容:
hadoop fs -cat /usr/hadoop/local2hdfs_part.txt
2的反向操作,在HDFS中生成一個大約100字節(jié)的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節(jié)的內(nèi)容寫入本地文件系統(tǒng)成為一個新文件,提供代碼和執(zhí)行結(jié)果演示抓圖
進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立Hdfs2LocalFile.java代碼文件,命令如下:
cd /usr/local/hadoop-1.1.2/myclass/
vi Hdfs2LocalFile.java
輸入代碼內(nèi)容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.java
ls
進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立hdfs2local.txt文件,內(nèi)容為:
cd /usr/local/hadoop-1.1.2/input/
vi hdfs2local.txt
把該文件上傳到hdfs的/usr/hadoop/文件夾中
cd /usr/local/hadoop-1.1.2/bin/
hadoop fs -copyFromLocal ../input/hdfs2local.txt /usr/hadoop/hdfs2local.txt
hadoop fs -ls /usr/hadoop
使用如下命令讀取hdfs2local.txt第101-120字節(jié)的內(nèi)容寫入本地文件系統(tǒng)成為一個新文件:
hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txt
ls ../input
使用如下命令讀取hdfs2local_part.txt內(nèi)容:
cat ../input/hdfs2local_part.txt
當(dāng)前文章:HDFS讀寫文件操作
瀏覽路徑:http://bm7419.com/article26/psdcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、微信公眾號、虛擬主機、商城網(wǎng)站、外貿(mào)建站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)