您好,登錄后才能下訂單哦!
1 運行環境說明
1.1 硬軟件環境
1.2 機器網絡環境
2 書面作業1:編譯并運行《權威指南》中的例3.2
2.1 書面作業1內容
2.2 運行代碼
2.3 實現過程
2.3.1 創建代碼目錄
2.3.2 建立例子文件上傳到hdfs中
2.3.3 配置本地環境
2.3.4 編寫代碼
2.3.5 編譯代碼
2.3.6 使用編譯代碼讀取文件
3 書面作業2:寫入HDFS成為一個新文件
3.1 書面作業2內容
3.2 運行代碼
3.3 實現過程
3.3.1 編寫代碼
3.3.2 編譯代碼
3.3.3 建立測試文件
3.3.4 使用編譯代碼上傳文件內容到hdfs
3.3.5 驗證是否成功
4 書面作業3:作業2反向操作
4.1 書面作業2內容
4.2 程序代碼
4.3 實現過程
4.3.1 編寫代碼
4.3.2 編譯代碼
4.3.3 建立測試文件
4.3.4 使用編譯代碼把文件內容從hdfs輸出到文件系統中
4.3.5 驗證是否成功
l 主機操作系統:Windows 64 bit,雙核4線程,主頻2.2G,6G內存
l 虛擬軟件:VMware Workstation 9.0.0 build-812388
l 虛擬機操作系統:CentOS 64位,單核,1G內存
l JDK:1.7.0_55 64 bit
l Hadoop:1.1.2
該開發機器處于能連接互聯網的局域網中,具體信息為:
序號 | IP地址 | 機器名 | 類型 | 用戶名 | 運行進程 |
1 | 10.88.147.220 | Hadoop0 | 單機節點 | hadoop | NN、SNNTaskTracer、DN、JobTracer |
在Hadoop集群中編譯并運行《權威指南》中的例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集群中編譯并運行《權威指南》中的例3.2
啟動Hadoop,在/usr/local/hadoop-1.1.2目錄下使用如下命令建立myclass和input目錄:
mkdir myclass
mkdir input
進入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立quangle.txt文件,內容為:
使用如下命令在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進行配置,如下如所示:
ls
vi hadoop-env.sh
加入對HADOOP_CLASPATH變量值,值為/usr/local/hadoop-1.1.2/myclass
進入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立FileSystemCat.java代碼文件,命令如下:
cd /usr/local/hadoop-1.1.2/myclass/
vi FileSystemCat.java
輸入代碼內容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java
ls
使用如下命令讀取quangle.txt內容:
hadoop FileSystemCat /usr/hadoop/quangle.txt
自行在本地文件系統生成一個大約100字節的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節的內容寫入HDFS成為一個新文件,提供代碼和執行結果演示抓圖
注意:在編譯前請先刪除中文注釋!
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 {
// 獲取讀取源文件和目標文件位置參數
String local = args[0];
String uri = args[1];
FileInputStream in = null;
OutputStream out = null;
Configuration conf = new Configuration();
try {
// 獲取讀入文件數據
in = new FileInputStream(new File(local));
// 獲取目標文件信息
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);
}
}
}
進入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立LocalFile2Hdfs.java代碼文件,命令如下:
輸入代碼內容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.java
ls
進入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立local2hdfs.txt文件,內容為:
cd /usr/local/hadoop-1.1.2/input/
vi local2hdfs.txt
使用如下命令讀取local2hdfs第101-120字節的內容寫入HDFS成為一個新文件:
cd /usr/local/hadoop-1.1.2/bin/
hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt
使用如下命令讀取local2hdfs_part.txt內容:
hadoop fs -cat /usr/hadoop/local2hdfs_part.txt
2的反向操作,在HDFS中生成一個大約100字節的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節的內容寫入本地文件系統成為一個新文件,提供代碼和執行結果演示抓圖
進入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立Hdfs2LocalFile.java代碼文件,命令如下:
cd /usr/local/hadoop-1.1.2/myclass/
vi Hdfs2LocalFile.java
輸入代碼內容:
在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.java
ls
進入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立hdfs2local.txt文件,內容為:
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字節的內容寫入本地文件系統成為一個新文件:
hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txt
ls ../input
使用如下命令讀取hdfs2local_part.txt內容:
cat ../input/hdfs2local_part.txt
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。