2017.03.21 Hadoop使いのためのRPMの便利な使い方5つ

 転載 : http://linux.wwing.net/WordPress/?p=134

Hadoop使いのためのRPMの便利な使い方5つ

Hadoopにどっぷりつかってもうすぐほぼ一年。去年の今頃はKVMやCluster、Linuxのパフォーマンスチューニングやらで休む暇もなかったわけですが、今年はより自転車操業的生活を送っています。

– * – * – * –

さて、Hadoopクラスタを構築する場合、エンタープライズで安定して利用できるとということからRed Hat Enterprise LinuxCentOSを選ぶ方は多いでしょう。これらのOSにHadoopをインストールする場合、ClouderaのCDH(Cloudera’s distribution including Apache Hadoop)をRPMパッケージ[1]を利用すると便利です。あるいは、前回紹介したCloudera Managerを利用すればもっと簡単にセットアップできます。

今回はRPMの便利な使い方を5つ紹介します。インストールや削除などの基本的な使い方には触れていませんので、興味があればRed Hat 社のDeployment Guideなどをご覧ください。
断りのない限り、下記のコマンドは全てrootユーザーあるいはsudoで実行する必要があります。

1.パッケージがインストールされているかを調べる


hadoopパッケージがインストールされているかを確認したいことはありますよね?そんなときには rpm -qa | grep <文字列>が便利です。-qa オプションによりインストールされている全てのパッケージが一覧できるので、その結果をgrepすることで、探したいパッケージを抽出できます。例えばhadopパッケージがインストールされているかを調べる場合は以下のように行います。

[root@node2 ~]# rpm -qa |grep hadoop
hadoop-httpfs-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
hadoop-hdfs-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
hadoop-0.20-mapreduce-0.20.2+1215-1.cdh4.0.0.p0.23.el6.x86_64
hadoop-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
hadoop-mapreduce-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
hadoop-yarn-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
hadoop-client-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
[root@node2 ~]#

検索したい文字列が思い浮かばないと探しにくい、というデメリットはありますが、個人的には最も利用しているかもしれません。

2. 最後にインストールしたパッケージを表示する

前回書いたCloudera Managerを使ってセットアップしたような場合、何のパッケージがインストールされたかが気になることがあります。こういうときは rpm -qa –last を利用することができます。

[root@node2 ~]# rpm -qa –last |more
cloudera-manager-daemons-4.0.1-1.cm401.p0.44 2012年06月30日 10時07分57秒
cloudera-manager-agent-4.0.1-1.cm401.p0.44 2012年06月30日 10時00分23秒
hue-2.0.0+58-1.cdh4.0.0.p0.16.el6 2012年06月30日 10時00分00秒
hue-shell-2.0.0+58-1.cdh4.0.0.p0.16.el6 2012年06月30日 09時59分51秒
hue-useradmin-2.0.0+58-1.cdh4.0.0.p0.16.el6 2012年06月30日 09時59分43秒
hue-beeswax-2.0.0+58-1.cdh4.0.0.p0.16.el6 2012年06月30日 09時59分34秒
hue-jobsub-2.0.0+58-1.cdh4.0.0.p0.16.el6 2012年06月30日 09時59分24秒
(略)

インストールされた時間もわかります。yumを使ってインストールした場合には/var/log/yum.logを確認しても良いでしょう。

3. コマンドやファイルがどのパッケージに属しているかを確認する

インストールされたファイルが、いったいどのRPMパッケージに属しているのかを調べたいことはないでしょうか?例えば yarn というコマンド、どのRPMパッケージでインストールされたんだっけ?という場合に役立ちます。RPMパッケージが特定できればアンインストールするなんてこともできますしね。

[root@node2 ~]# which yarn
/usr/bin/yarn
[root@node2 ~]# rpm -qf /usr/bin/yarn
hadoop-yarn-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64
[root@node2 ~]#

4. RPMパッケージのインストールでどのファイルが更新されたのかを調べる

RPMパッケージにはインストールするファイルのリストが入っています。rpm -ql <パッケージ名> により、パッケージのインストールした時に変更(追加)されたファイルを確認できます。

[root@node2 ~]# rpm -ql hadoop-yarn
/etc/hadoop/conf.empty/yarn-env.sh
/etc/hadoop/conf.empty/yarn-site.xml
/etc/security/limits.d/yarn.conf
/usr/bin/yarn
/usr/lib/hadoop-yarn
/usr/lib/hadoop-yarn/bin
/usr/lib/hadoop-yarn/bin/container-executor
/usr/lib/hadoop-yarn/bin/mapred
/usr/lib/hadoop-yarn/bin/yarn
/usr/lib/hadoop-yarn/cloudera
/usr/lib/hadoop-yarn/cloudera/cdh_version.properties
/usr/lib/hadoop-yarn/etc
(略)

これを一歩応用し、RPMパッケージをインストールする前に、追加されるファイルを確認をすることも可能です。これには上記のコマンドのオプションを少し変更して、rpm -qlp のようにパッケージのファイル名を指定をします。

例えばyumdownloaderというコマンドを利用してrpmファイルをダウンロードし、追加されるファイルを確認してみましょう。(yumdownloaderがインストールされていない場合、yum install yum-utilsによりyum-utilsパッケージをインストールしておいてください)

[root@node2 ~]# yumdownloader hadoop-yarn-nodemanager
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
hadoop-yarn-nodemanager-2.0.0+88-1.cdh4.0.0.p0.26.el6.x8 | 4.7 kB 00:00
[root@node2 ~]#
[root@node2 ~]# rpm -qlp hadoop-yarn-nodemanager-2.0.0+88-1.cdh4.0.0.p0.26.el6.x86_64.rpm
/etc/default/hadoop-yarn-nodemanager
/etc/rc.d/init.d/hadoop-yarn-nodemanager
[root@node2 ~]#

このように、インストールしなくても初期スクリプトが含まれていることがわかります。便利ですね。

5. パッケージインストール時に実行されるスクリプトを確認する

RPMパッケージをインストール/アンインストール時に、スクリプトを自動で実行させることができます。例えばパッケージをインストールしたときにユーザーを作成したり、必要なディレクトリを作成すれば、人の手を介さずに実行させることができるので便利です。その一方、パッケージのインストール時に何を行っているのか確認したい場合もあるでしょう。そんなときには rpm -q <パッケージ名> –scripts と指定してみましょう。

[root@node2 ~]# rpm -q hadoop-yarn –scripts
preinstall scriptlet (using /bin/sh):
getent group yarn >/dev/null || groupadd -r yarn
getent passwd yarn >/dev/null || /usr/sbin/useradd –comment “Hadoop Yarn” –shell /bin/bash -M -r -g yarn -G hadoop –home /var/lib/hadoop-yarn yarn
[root@node2 ~]#

preinstはインストールする前に実行されるスクリプト、postinstはインストール後に実行されるスクリプト
preuninstはアンインストール前に実行されるスクリプト、postuninstはアンインストール後に実行されるスクリプトです。
この例ではインストールする前に、yarnというグループとユーザーを作成し、ホームディレクトリを/var/lib/hadoop/yarn に設定しているようなことがわかりますね。

このようにRPMパッケージは意外に情報が含まれているので、インストールや削除以外の使い方を知っていると役立つかもしれません。これらHadoop使いのためのRPMの便利な使い方5つ[2]を活用してHadoopライフを満喫してください。 🙂

[1] RPM=RPM Package Mangerの略称。 昔は RedHat Package Mangerの略だった。
[2] 実はHadoopとは全く関係ないRPMの話だったことに気づきました?