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"); }