★悩み★
・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とはなんぞや?と思っているあなた」にこの記事が少しでも役に立てれば幸いです。
コメント