学習のHadoop HDFS()

A、HDFSと紹介の長所と短所

  HDFS(Hadoopの分散ファイル・システム)は、データ記憶装置に関連する重要な部品のHadoopエコシステムは、ストレージコンポーネント、ファンデーションのHadoopの珍しい、大部分において位置のHadoopであり、MapReduceのよう計算モデルは、HDFSに格納されたデータに依存しなければなりません。HDFSクラスタ商用ハードウェアで別のマシン上のデータへのデータアクセスモード、メモリブロックのストリーミング大きなファイルを格納するための分散ファイルシステムです。

  (1):ここではに関連するいくつかの概念に焦点を当てて大きなファイル現在のHadoopクラスタは、TBの数百またはさらにPBレベルのデータを記憶することができます。(2)ストリーミングデータアクセスHDFSアクセスモードは次のとおりです。書き込みを何度も読んで、一度、より多くの注意が全体の時間のデータセット全体を読むことです。(3)汎用ハードウェア。HDFSの長いいくつかの通常の日常の使用などとしてすることができますどのように高価な機器や特別なハードウェアを必要としないのクラスター、およびなど、HDFSノード障害の可能性が非常に高いので、この単一障害点に対処するためのメカニズムがなければなりません、データの信頼性が保証。(4)は、低レイテンシのデータアクセス時間をサポートしていませんHDFSの懸念は、低レイテンシのデータアクセス時間を必要とするアプリケーションに適した高データスループット、ではありません。(5)シングルユーザの書き込みは、任意の変更をサポートしていません。HDFSは、読み取り、ほとんどのデータは、単一のライターをサポートし、書き込み操作は、常にどこにもサポートされていない変形例では、最後に追加されるテキストの形で添加されています。

 

 

 

 

 

 二、シェルでHDFS操作

  ビン/ Hadoopのfsの特定のコマンドまたは   ビン/ HDFS DFS特定のコマンド

  以下は、いくつかの一般的に使用されるコマンドです

  

0 )スタートのHadoop クラスタ(その後の試験を容易にするために)

  

$ sbinに/スタート- dfs.sh
 $ sbinに/ start-yarn.sh

 

1 -help :このコマンドのパラメータの出力

 

$ HadoopのFS -help RM

 

 

 

2 -ls:表示ディレクトリ情報

 

$ HadoopのFS -Ls /

 

 

 

3 -mkdir :では HDFS上のディレクトリを作成します。

 

$ HadoopのFS -mkdir -p /三国/ shuguo

 

 

 

4 -moveFromLocal :ローカルカットからに貼り付け HDFS

タッチkongming.txt $ 
$ HadoopのFS   -moveFromLocal ./kongming.txt /三国/ shuguo

5 -appendToFile :追加は、ファイルの最後にファイルが既に存在して

$ liubei.txtタッチ
$ viのliubei.txt

エントリー

サン区真央LU

 

実行

$ HadoopのFS -appendToFile liubei.txt /sanguo/shuguo/kongming.txt

 

6 -cat :表示ファイルの内容

$ HadoopのFS -cat /sanguo/shuguo/kongming.txt

(7 -chgrp -chmod -chown Linuxのファイルシステム使用許可などが属するファイルを変更するには

$ HadoopのFS -chmod   666   /三国/ shuguo / kongming.txt 

$ HadoopのFS   -chown atguigu:atguigu /sanguo/shuguo/kongming.txt

(8。 -copyFromLocal :ファイルをコピーするには、ローカルファイルシステムから HDFSパスに

$ HadoopのFS -copyFromLocalのREADME.txt /

(9 -copyToLocal :からコピーローカルHDFSへ

 

$ HadoopのFS -copyToLocal /sanguo/shuguo/kongming.txt ./

 

10 -cp :からコピーHDFSパスHDFSの別のパスに

 

$ HadoopのFS -cp /sanguo/shuguo/kongming.txt /zhuge.txt

 

11 -mv :中 HDFSのディレクトリにファイルを移動

$ HadoopのFS -mv /zhuge.txt /三国/ shuguo /

12 -get :に相当copyToLocal からで、ローカルにファイルをダウンロードHDFS

 

$ HadoopのFS - GET /sanguo/shuguo/kongming.txt ./

 

13 -getmerge 次のようなマージダウンロード複数のファイル、 HDFSのディレクトリ /ユーザー/ atguigu /テスト複数のファイル:log.1、log.2、log.3、...

 

$ HadoopのFS -getmerge /ユーザー/ atguigu /テスト/ * ./zaiyiqi.txt

 

 

 

14 -put :に相当copyFromLocal

$ HadoopのFS -put ./zaiyiqi.txt /ユーザー/ atguigu /テスト/

 

(15 -tail :ファイルの最後に表示されます

$ HadoopのFS -tail /sanguo/shuguo/kongming.txt

 

16 -rm :ファイルまたはフォルダを削除します

$ HadoopのFS -rm /user/atguigu/test/jinlian2.txt

 

17 -rmdir :削除空のディレクトリ

$ HadoopのFS -mkdir / テスト

$ HadoopのFS -rmdir /テスト

 

18 -du 統計フォルダサイズ情報

$ HadoopのFS -du -s -h /ユーザー/ atguigu /テスト

2.7 K /ユーザ/ atguigu /試験

$ HadoopのFS -du -h /ユーザー/ atguigu /テスト

1.3 K /user/atguigu/test/README.txt

15 /user/atguigu/test/jinlian.txt

1.4 K /user/atguigu/test/zaiyiqi.txt

19 -setrep :セット HDFS内のファイルのコピー数を

$ HadoopのFS -setrep 10 /sanguo/shuguo/kongming.txt

 

 

 

 

ここで設定したばかりのレコードのコピー数名前ノード参照してくださいする必要がありますが、本当に多くのコピーがあるかどうか、メタデータをデータノードの数を。現在だけなので 3つのセット機器は、最大で 3つのGe コピー、ノードの数だけを増やすには 10 市、台湾コピーリーチ数 10

三、HDFSクライアント操作

彼らができる前に、Hadoopのは、最初にローカルコンピュータの環境変数で良い準備が必要

 

 

 

 

空のMavenプロジェクトを作成するためのアイデアを使用して、座標に追加されました

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <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>
        
    </dependencies>

本次导入的坐标时间较长,需要耐心等待

需要在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

创建文件夹↓

@Test
    public void testMkdirs() throws IOException, InterruptedException, URISyntaxException {

        // 1 获取文件系统
        Configuration configuration = new Configuration();
        // 配置在集群上运行
        // configuration.set("fs.defaultFS", "hdfs://hadoop102:9000");
        // FileSystem fs = FileSystem.get(configuration);

        FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:9000"), configuration, "root");

        // 2 创建目录
        fs.mkdirs(new Path("/1108/daxian/banzhang"));

        // 3 关闭资源
        fs.close();
    }

从本地上传文件↓

@Test
    public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {

        // 1 获取文件系统
        Configuration configuration = new Configuration();
        configuration.set("dfs.replication", "2");
        FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:9000"), configuration, "root");

        // 2 上传文件
        fs.copyFromLocalFile(new Path("D:/banzhang.txt"), new Path("/banzhang.txt"));

        // 3 关闭资源
        fs.close();

        System.out.println("over");
    }

 

おすすめ

転載: www.cnblogs.com/g-cl/p/12348681.html