eclipse远程连接hadoop_Hadoop之HDFS基本操作实验
基
礎
實
驗
Hadoop是一款開源的大數據通用處理平臺,其提供了分布式存儲和分布式離線計算。Hadoop由HDFS、YARN、MapReduce組成。
Hadoop分布式文件系統(HDFS)是一種分布式文件系統(Distributed File System)。HDFS具有高度容錯性,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。
HDFS其實是將一個大文件分成若干塊保存在不同服務器的多個節點中。通過聯網讓用戶感覺像是在本地一樣查看文件,為了降低文件丟失造成的錯誤,HDFS會為每個小文件復制多個副本(默認為3個),以此來實現多機器上的多用戶分享文件和存儲空間。
HDFS體系結構
HDFS采用了主從(Master/Slave)結構模型,一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務器,管理文件系統的命名空間和客戶端對文件的訪問操作;集群中的多個DataNode負責管理存儲的數據。
塊大小:Hadoop2版本里一個塊默認為128M,小文件也占用一個塊,小文件越多,塊越多。因此,HDFS中不適合存儲小文件。
副本個數:保存多個副本(默認3個),提供容錯機制,一個副本丟失或宕機,自動恢復。
01
實驗目的
熟悉HDFS基本命令行操作
使用Java 接口,通過Java程序讀取HDFS中的文件
02
實驗環境
云服務器1臺:(華為云、阿里云、騰訊云等等均可)
操作系統:CentOS7.4 64位
系統配置:2核4G以上
感謝華為云提供云服務器支持!
03
實驗步驟
》》實驗資源操作系統:CentOS 7
JDK:JDK8
Hadoop:2.8.5
Github地址:https://github.com/my-ss-course/BigData
工具包地址:鏈接: https://pan.baidu.com/s/1nOvFQGj12N3ODNilOYMYjg 密碼: r8qo
已經按照前面的教程搭建好3個節點的Hadoop偽分布式集群
1登錄遠程云服務器
使用本地客戶端連接遠程云服務器
2啟動Hadoop集群
如已啟動hadoop容器,請忽略本步驟
./start_container.sh進入hadoop-node1節點的容器
docker exec?-it hadoop-node1 /bin/bash3通過命令行方式操作HDFS文件系統
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命令創建目錄
hdfs dfs -mkdir?/output創建多級目錄,使用-p參數
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文件系統中數據
01
新建IntelliJ IDEA下的maven項目
點擊File->New->Project,在彈出的對話框中選擇Maven
JDK選擇相應的版本,點擊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://你的云服務器的IP:19000或hadoop-node1節點的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();
}
注意要把安全組以及防火墻中的端口打開。
直接運行程序的結果如下
警告先忽略,因為沒有配置log4j
可以看到能夠在HDFS中成功創建了一個目錄。
這這這也太不安全了吧???
可以直接訪問我的HDFS
03
打包發布
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需要根據打包的具體類修改
2、在IDEA右側欄中選擇Maven Projects,打開Lifecycle文件夾,先點擊compile再點擊package,等待jar打包成功。
3、jar包打完之后打開左側target文件夾,發現有兩個jar包,把無依賴的jar包復制到hadoop-node1節點內
拷貝到hadoop-node1節點
4、在hadoop-node1節點下執行命令
hadoop jar? ?jar包名? classname
hadoop?jar?hadoop-1.0.jar?com.myhadoop.HelloWorld???
END
每天進步一點點讓我知道你在看
總結
以上是生活随笔為你收集整理的eclipse远程连接hadoop_Hadoop之HDFS基本操作实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬网页数据到 excel 自
- 下一篇: combobox 怎么实现对listvi