(一)hadoop叢集搭建——1.4hdfs的操作
(一)hadoop叢集搭建——1.4hdfs的操作
1.HDFS介紹
1.1HDFS特點
a. HDFS是分散式檔案管理系統中的一種,適用一次寫入,多次讀取,不支援對檔案的隨機寫,可以追加,但不能進行修改。
原因:
- 檔案在HDFS儲存時,以block為基本單位儲存,修改一個塊中的內容,就會影響當前快之後所有的塊,效率低。
- 沒有對檔案提供線上定址功能。
b. HDFS具有高容錯性,儲存資料自動儲存多個副本;適合處理大資料;可構建在廉價機器上。
c. HDFS不適合低延時資料訪問,無法對大量小檔案進行儲存,不支援併發寫入、檔案隨機修改。
1.2HDFS檔案塊大小
塊大小取絕於dfs.blocksize,預設為128M,預設為128M原因,基於最佳傳輸損耗理論。
最佳傳輸損耗理論:在一次傳輸中,定址時間佔用總傳輸時間的1%時,本次傳輸的損耗最小,為最佳價效比傳輸。
2.HDFS的shell操作
- 統計檔案數
[hzhao@h2 ~]$ hadoop fs -count -h / 7 0 0 /
- 檢視檔案大小
[hzhao@h2 ~]$ hadoop fs -du / 0 /tmp
- hadoop fs既可以對本地檔案系統進行操作,還可以操作分散式檔案系統;hdfs dfs只能操作分散式檔案系統。
3.使用java客戶端操作hdfs
3.1windows安裝hadoop並配置到環境變數中。
3.2建立專案
使用idea建立maven工程,並匯入相關依賴,pom.xml內容為
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fanbai</groupId>
<artifactId>hadoop</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
</project>
3.3java客戶端建立目錄
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class TestHDFS {
private FileSystem fs;
private Configuration conf = new Configuration();
@Before
public void init() throws URISyntaxException, IOException, InterruptedException {
fs = FileSystem.get(new URI("hdfs://h1:9000"), conf, "hzhao");
}
@After
public void close() throws IOException {
fs.close();
}
/**
* 建立目錄
* @throws IOException
*/
@Test
public void testMkdir() throws IOException {
//建立一個客戶端物件
fs.mkdirs(new Path("/idea"));
fs.close();
}
}
目錄建立成功
3.4上傳檔案
/**
- 上傳檔案
*/
@Test
public void testUpload() throws IOException {
fs.copyFromLocalFile(new Path(“D:\tmp\test.txt”), new Path("/"));
}
檔案上傳成功
3.5檔案下載
/**
* 上傳下載
*/
@Test
public void testDownload() throws IOException {
fs.copyToLocalFile(new Path("/idea"), new Path("D:\\tmp"));
}
相關文章
- Hadoop叢集搭建(一)Hadoop
- Hadoop叢集搭建Hadoop
- Hadoop搭建叢集Hadoop
- 4.4 Hadoop叢集搭建Hadoop
- hadoop分散式叢集搭建Hadoop分散式
- Hadoop叢集搭建之關閉防火牆(一)Hadoop防火牆
- Hadoop HA叢集簡單搭建Hadoop
- Hadoop分散式叢集搭建_1Hadoop分散式
- 基於kerberos的hadoop安全叢集搭建ROSHadoop
- 大資料7.1 - hadoop叢集搭建大資料Hadoop
- hadoop-2.5.0-cdh5.3.6叢集搭建HadoopH5
- Centos mini系統下的Hadoop叢集搭建CentOSHadoop
- 虛擬機器Hadoop叢集搭建5安裝Hadoop虛擬機Hadoop
- 大資料平臺Hadoop叢集搭建大資料Hadoop
- 基於 ZooKeeper 搭建 Hadoop 高可用叢集Hadoop
- BigData~03:Hadoop05 ~ HA叢集搭建Hadoop
- Ubuntu上搭建Hadoop叢集環境的步驟UbuntuHadoop
- hadoop叢集搭建及程式設計實踐Hadoop程式設計
- hadoop叢集搭建——單節點(偽分散式)Hadoop分散式
- hadoop叢集搭建,CentOS7克隆HadoopCentOS
- 五行命令使用docker搭建hadoop叢集DockerHadoop
- Hadoop叢集之 ZooKeeper和Hbase環境搭建Hadoop
- hadoop之旅3-centerOS7: 搭建hadoop免密叢集啟動HadoopROS
- Hadoop叢集搭建--虛擬機器互相ping通Hadoop虛擬機
- Hadoop框架:叢集模式下分散式環境搭建Hadoop框架模式分散式
- CentOS7搭建Hadoop-3.3.0叢集手記CentOSHadoop
- Linux 環境下搭建Hadoop叢集(全分佈)LinuxHadoop
- hadoop之旅9-centerOS7 : hbase叢集環境搭建HadoopROS
- 雲主機centos7搭建基於docker的hadoop叢集CentOSDockerHadoop
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- 搭建zookeeper叢集(偽叢集)
- Redis操作及叢集搭建以及高可用配置Redis
- Centos7搭建hadoop3.3.4分散式叢集CentOSHadoop分散式
- 基於Hadoop不同版本搭建hive叢集(附配置檔案)HadoopHive
- 【教程】手把手教你如何搭建Hadoop單機偽叢集Hadoop
- Hadoop-叢集執行Hadoop
- 使用docker部署hadoop叢集DockerHadoop
- Hadoop叢集面試題Hadoop面試題