WebHDFSの設定手順と使い方【実機検証あり】

★悩み★
・http経由でHDFSを操作する方法がわからない。
・WebHDFSを使いたいけど設定方法が分からない。
・WebHDFSを設定したけど使い方が分からない。



こういった「悩み」に答えます。
 

★本記事の内容★
(1) http経由でHDFSを操作できるWebHDFSのご紹介
(2) WebHDFSを使うための設定方法をご紹介
(3) WebHDFSの使い方をご紹介



この記事を執筆している筆者は、4年間、データエンジニアとして従事しています。
データエンジニアとして、HDFS関連の運用保守であったり、HDFS関連の技術を用いたデータ基盤の提案をしたりしてきました。
 

HDFSに関わりはや4年な筆者が、「WebHDFSの設定手順と使い方」に関して分かりやすくご紹介します。
 

★HDFSとは?★
Hadoop Distributed File Systemを略称がHDFSとなります。
HDFSでは大きなファイルを複数のブロック単位(デフォルトで128MB)に分割して、それらを複数のノードにまたがり格納する。

参照先:https://ja.wikipedia.org/wiki/Apache_Hadoop


 

http経由でHDFSを操作できるWebHDFS


HDFSは、http経由で操作することができます。
その方法として、「WebHDFS」の機能があります。
 

WebHDFS」機能を使うことで以下のことができるようになります。

★WebHDFSを使ってできること★
・WebブラウザからHDFSに格納されたファイルをダウンロードできる。
・curlコマンドを使いHDFSに格納されたファイルを操作できる。
・wgetコマンドを使いHDFSに格納されたファイルをダウンロードできる。



上記に記載したのは主に代表的な例になります。
Pythonなどのプログラミング言語からHDFSを利用するハードルも低くなったりします。
 

すなわち、「WebHDFS」の機能を使うことで、「特別なライブラリやツールをインストールせずにHDFSへのアクセスができるようになるため、利便性が向上する」と筆者は考えています。

 

WebHDFSを使うための設定方法


利便性の向上が期待できる「WebHDFS」を使うための設定方法に関してご紹介します。
 

WebHDFSを使うための前提条件

今回、ご紹介する設定方法は、以下を前提としています。
 

★前提条件★
・Hadoop2系 または Hadoop3系を使っていること。
・CentOS または RHELを使っていること。(バージョンに関しては不問)
・Hadoopを完全分散で起動していること。



Hadoop1系を使っていたり、Ubuntu系のOSを使っていたりする場合は、以降でご紹介する手順によるWebHDFSの動作保証はできません。

また、以降でご紹介していく「WebHDFSの設定に関する手順」は、以下のマシン構成を想定しています。
 

★マシン構成★
・マスタサーバ × 1台
・ワーカーノード(スレーブサーバ) × 2台


 

WebHDFSの設定方法

WebHDFSの設定方法についてご紹介します。
 

WebHDFSの設定方法や使い方に関しては、以下のHadoopの公式ページに英語で書かれています。

ただし、Hadoop3系に関しては、下記URLに「WebHDFSの設定方法」が記載されていませんでした。

Hadoop2系:https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/WebHDFS.html

Hadoop3系:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/WebHDFS.html


WebHDFSの設定は、わずか3手順で終了します。
 

手順(1):hdfs-site.xmlにプロパティを追加

マスタサーバとワーカーノードのhdfs-site.xmlに以下のプロパティを追加します。

<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>

 

hdfs-site.xmlの格納場所は、環境ごとに異なります。
以下のコマンドで「hdfs-site.xmlの格納場所」を確認してください。

# find / -name “hdfs-site.xml”
/opt/oss/hadoop-3.2.1/etc/hadoop/hdfs-site.xml 

筆者の環境では、上記に「hdfs-site.xml」が格納されていました。


 

手順(2):ワーカーノードのDataNodeプロセスを再起動

ワーカーノード(スレーブサーバ)で起動されているDataNodeプロセスを再起動します。

そのために以下のコマンドを全ワーカーノードで実行します。

# su - hadoop (1)
$ cd /opt/oss/hadoop-3.2.1/bin/hdfs --daemon stop datanode (2)
$ cd /opt/oss/hadoop-3.2.1/bin/hdfs --daemon start datanode (3)

 

筆者の環境では、hadoopユーザーでHadoopを動かしています。
上記コマンド内の(1)は、お手元の環境に合わせて実行してください。
また、筆者の環境では、hdfsコマンドは「/opt/oss/hadoop-3.2.1/bin/」に格納されています。
上記コマンド内の(2)(3)は、お手元の環境に合わせて実行してください。


 

手順(3):マスタサーバーのNameNodeプロセスを再起動

マスタサーバーで起動されているNameNodeプロセスを再起動します。
そのために以下のコマンドをマスタサーバーで実行します。

# su - hadoop (1)
$ cd /opt/oss/hadoop-3.2.1/sbin/stop-dfs.sh (2)
$ cd /opt/oss/hadoop-3.2.1/sbin/start-dfs.sh (3)

 

筆者の環境では、hadoopユーザーでHadoopを動かしています。
上記コマンド内の(1)は、お手元の環境に合わせて実行してください。
また、筆者の環境ではコマンドは「/opt/oss/hadoop-3.2.1/sbin/」に格納されています。
上記コマンド内の(2)(3)は、お手元の環境に合わせて実行してください。



以上で、WebHDFSの設定終わりです。
以降では、WebHDFSの使い方に関してご紹介します。
 

WebHDFSの使い方

WebHDFS経由でできる代表的な操作は、以下になります。
 

★WebHDFS経由での代表的な操作★
【HTTP PUT】
 ・ファイルの作成
 ・ディレクトリの作成
 ・シンボリックリンクの作成
 ・名称変更
【HTTP GET】
 ・指定したファイルを開く
 ・指定したフォルダ内のファイル一覧を取得
【HTTP POST】
 ・指定したファイルに追記
 ・指定した複数ファイルを結合
【HTTP DELETE】
 ・指定したファイルを削除



Hadoop公式ページのWebHDFSの設定と使い方のページで「対象のフォルダ内にあるファイルを結合してダウンロード(hadoop fs -getmergeに相当する操作)」の操作がないのが気がかりです。

次回あたりの記事で、「本当にWebHDFSにはgetmergeに相当する操作がないのか」を解明していきましょう。

それでは、WebHDFSにおける代表的な操作の使い方とその結果をご紹介していきます。
 

ファイルの作成

以下のコマンドを順に実行することで、HDFS上にファイルを作成することができます。

# su - hadoop
$ curl -i -L -X PUT  "http://master1:9870/webhdfs/v1/user/hadoop/webhdfs_test?op=CREATE&user.name=hadoop"
$ hadoop fs -ls webhdfs_test
-rw-r--r--   1 hadoop supergroup          0 2020-09-03 17:57 webhdfs_test

 

指定したファイルに追記

以下のコマンドを順に実行することで、HDFS上の指定ファイルに追記することができます。

# su - hadoop
$ cat test.txt 
1
2
3
$ curl -i -L -X POST -T test.txt "http://master1:9870/webhdfs/v1/user/hadoop/webhdfs_test?op=APPEND&user.name=hadoop"
$ hadoop fs -cat webhdfs_test
1
2
3
$

 

指定したファイルを開く

以下のコマンドを順に実行することで、HDFS上の指定ファイルを開くことができます。

# su - hadoop
$ curl -i -L "http://master1:9870/webhdfs/v1/user/hadoop/webhdfs_test?
1
2
3

 

指定したファイルを削除

以下のコマンドを順に実行することで、HDFS上の指定ファイルを削除することができます。

# su - hadoop
$ curl -i -L -X DELETE  "http://master1:9870/webhdfs/v1/user/hadoop/webhdfs_test?op=DELETE&user.name=hadoop"
$ hadoop fs -cat webhdfs_test
cat: `webhdfs_test': No such file or directory

 

【まとめ】WebHDFSの設定手順と使い方


今回の記事を通して、WebHDFSの設定方法と使い方をご紹介することで、以下の悩みを解消しました。

★悩み★
・http経由でHDFSを操作する方法がわからない。
・WebHDFSを使いたいけど設定方法が分からない。
・WebHDFSを設定したけど使い方が分からない。



WebHDFSとはなんぞや?と思っているあなたにこの記事が少しでも役に立てれば幸いです。

コメント