eclipse远程连接hadoop_Hadoop之HDFS基本操作实验
基
礎(chǔ)
實
驗
Hadoop是一款開源的大數(shù)據(jù)通用處理平臺,其提供了分布式存儲和分布式離線計算。Hadoop由HDFS、YARN、MapReduce組成。
Hadoop分布式文件系統(tǒng)(HDFS)是一種分布式文件系統(tǒng)(Distributed File System)。HDFS具有高度容錯性,適合部署在廉價的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
HDFS其實是將一個大文件分成若干塊保存在不同服務(wù)器的多個節(jié)點中。通過聯(lián)網(wǎng)讓用戶感覺像是在本地一樣查看文件,為了降低文件丟失造成的錯誤,HDFS會為每個小文件復(fù)制多個副本(默認(rèn)為3個),以此來實現(xiàn)多機(jī)器上的多用戶分享文件和存儲空間。
HDFS體系結(jié)構(gòu)
HDFS采用了主從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作;集群中的多個DataNode負(fù)責(zé)管理存儲的數(shù)據(jù)。
塊大小:Hadoop2版本里一個塊默認(rèn)為128M,小文件也占用一個塊,小文件越多,塊越多。因此,HDFS中不適合存儲小文件。
副本個數(shù):保存多個副本(默認(rèn)3個),提供容錯機(jī)制,一個副本丟失或宕機(jī),自動恢復(fù)。
01
實驗?zāi)康?/p>
熟悉HDFS基本命令行操作
使用Java 接口,通過Java程序讀取HDFS中的文件
02
實驗環(huán)境
云服務(wù)器1臺:(華為云、阿里云、騰訊云等等均可)
操作系統(tǒng):CentOS7.4 64位
系統(tǒng)配置:2核4G以上
感謝華為云提供云服務(wù)器支持!
03
實驗步驟
》》實驗資源操作系統(tǒng):CentOS 7
JDK:JDK8
Hadoop:2.8.5
Github地址:https://github.com/my-ss-course/BigData
工具包地址:鏈接: https://pan.baidu.com/s/1nOvFQGj12N3ODNilOYMYjg 密碼: r8qo
已經(jīng)按照前面的教程搭建好3個節(jié)點的Hadoop偽分布式集群
1登錄遠(yuǎn)程云服務(wù)器
使用本地客戶端連接遠(yuǎn)程云服務(wù)器
2啟動Hadoop集群
如已啟動hadoop容器,請忽略本步驟
./start_container.sh進(jìn)入hadoop-node1節(jié)點的容器
docker exec?-it hadoop-node1 /bin/bash3通過命令行方式操作HDFS文件系統(tǒng)
01命令行接口格式格式1:hadoop fs -命令 路徑格式2:hdfs dfs -命令 路徑02ls命令hdfs dfs -ls?/03put命令
將本地文件上傳到HDFS中。
hdfs dfs -put?/usr/local/hadoop-2.8.5/NOTICE.txt /input/04get命令將HDFS中文件下載到本地
hdfs dfs -get?/input/README.txt ./hdfs dfs -get?/input/README.txt README2.txt
hdfs dfs -get?/input/README.txt05rm命令
刪除文件
hdfs dfs -rm /input/README.txt刪除目錄
hdfs?dfs -rm -r /output06mkdir命令創(chuàng)建目錄
hdfs dfs -mkdir?/output創(chuàng)建多級目錄,使用-p參數(shù)
hdfs dfs -mkdir?-p?/output/abc/12307cp命令hdfs dfs -cp?/input/NOTICE.txt /input/NOTICE2.txt08mv命令hdfs dfs -mv /input/NOTICE.txt /input/NOTICE3.txt09cat命令hdfs dfs -cat?/input/NOTICE3.txt4使用Java?API操作HDFS文件系統(tǒng)中數(shù)據(jù)
01
新建IntelliJ IDEA下的maven項目
點擊File->New->Project,在彈出的對話框中選擇Maven
JDK選擇相應(yīng)的版本,點擊Next
填寫Maven的GroupId和ArtifactId,可以隨便填寫
項目名可填寫HDFSTest
編輯pom.xml添加hadoop依賴
????????<dependency>
????????????<groupId>org.apache.hadoopgroupId>
????????????<artifactId>hadoop-hdfsartifactId>
????????????<version>2.8.5version>
????????dependency>
????????<dependency>
????????????<groupId>org.apache.hadoopgroupId>
????????????<artifactId>hadoop-clientartifactId>
????????????<version>2.8.5version>
????????dependency>
????dependencies>
02
編寫代碼
新建一個class,增加如下實驗代碼
public?static?void?main(String[] args) throws IOException {????????System.out.println("hello world");
????????Configuration conf=new?Configuration();
????????conf.set("fs.defaultFS","hdfs://你的云服務(wù)器的IP:19000或hadoop-node1節(jié)點的IP:9000");
????????FileSystem hdfs =FileSystem.get(conf);
????????boolean is_success = hdfs.mkdirs(new?Path("/helloByJava"));
????????if(is_success){
????????????System.out.println("success");
????????}else{
????????????System.out.println("failure");
????????}
????????hdfs.close();
}
注意要把安全組以及防火墻中的端口打開。
直接運行程序的結(jié)果如下
警告先忽略,因為沒有配置log4j
可以看到能夠在HDFS中成功創(chuàng)建了一個目錄。
這這這也太不安全了吧???
可以直接訪問我的HDFS
03
打包發(fā)布
1、pom.xml文件中增加如下代碼,用于編譯打包
<build>????????<plugins>
????????????<plugin>
????????????????<artifactId>maven-compiler-pluginartifactId>
????????????????<version>2.3.2version>
????????????????<configuration>
????????????????????<source>1.8source>
????????????????????<target>1.8target>
????????????????configuration>
????????????plugin>
????????????<plugin>
????????????????<artifactId>maven-assembly-plugin artifactId>
????????????????<configuration>
????????????????????<descriptorRefs>
????????????????????????<descriptorRef>jar-with-dependenciesdescriptorRef>
????????????????????descriptorRefs>
????????????????????<archive>
????????????????????????<manifest>
????????????????????????????<mainClass>com.myhadoop.HelloWorldmainClass>
????????????????????????manifest>
????????????????????archive>
????????????????configuration>
????????????????<executions>
????????????????????<execution>
????????????????????????<id>make-assemblyid>
????????????????????????<phase>packagephase>
????????????????????????<goals>
????????????????????????????<goal>singlegoal>
????????????????????????goals>
????????????????????execution>
????????????????executions>
????????????plugin>
????????plugins>
build>
注意:代碼中mainClass需要根據(jù)打包的具體類修改
2、在IDEA右側(cè)欄中選擇Maven Projects,打開Lifecycle文件夾,先點擊compile再點擊package,等待jar打包成功。
3、jar包打完之后打開左側(cè)target文件夾,發(fā)現(xiàn)有兩個jar包,把無依賴的jar包復(fù)制到hadoop-node1節(jié)點內(nèi)
拷貝到hadoop-node1節(jié)點
4、在hadoop-node1節(jié)點下執(zhí)行命令
hadoop jar? ?jar包名? classname
hadoop?jar?hadoop-1.0.jar?com.myhadoop.HelloWorld???
END
每天進(jìn)步一點點讓我知道你在看
總結(jié)
以上是生活随笔為你收集整理的eclipse远程连接hadoop_Hadoop之HDFS基本操作实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬网页数据到 excel 自
- 下一篇: combobox 怎么实现对listvi