読者です 読者をやめる 読者になる 読者になる

2017.03.22 hbase

 

http://phoenix.apache.org/tuning.html

 

https://phoenix.apache.org/faq.html#How_I_map_Phoenix_table_to_an_existing_HBase_table

 

http://hbase.apache.org/book.html

 

http://hadoop.apache.org/

 

2017.03.21 CDH5で擬似分散モードのHadoopクラスタを構築する

転載: http://www.task-notes.com/entry/20150608/1433732400

JDKのインストール

OracleJDKをインストールします。 Java Development Kit Installation によるとJDK1.8も対象です。JDKのインストールについての詳細は CentOSにJava(JDK)をRPMでインストール を参照。

# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm" -O jdk-8u45-linux-x64.rpm
# yum -y localinstall jdk-8u45-linux-x64.rpm
# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
# echo "export JAVA_HOME=/usr/java/default" > /etc/profile.d/jdk.sh
# source /etc/profile.d/jdk.sh

 CDH 5 Requirements and Supported Versions

CDH5のインストール

CDH5 の RPM をダウンロードしてインストールします。

# wget http://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-5-0.x86_64.rpm
# yum -y --nogpgcheck localinstall cloudera-cdh-5-0.x86_64.rpm
# yum clean all

CDH5 は直接リポジトリを追加してもいいです。

# wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo -P /etc/yum.repos.d/

パッケージの公開鍵を先にインポートしておく場合は実行してください。

# rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

 Installing CDH 5

擬似分散環境の設定

擬似分散環境用の設定ファイルhadoop-conf-pseudoをインストールします。依存関係のあるモジュールも自動でインストールされるため、HDFSやYARNも含まれています。

# yum -y install hadoop-conf-pseudo

今回はローカルの仮想マシンで構築しているのでファイアーウォールを無効化しておきます。これでローカルマシンからアクセスできるようになります。

# service iptables stop
# chkconfig iptables off

Hadoopはホスト名を参照するので次のように設定しておきます。

# vi /etc/hosts
127.0.0.1       localhost
192.168.33.100  vm-cluster

localhostをホスト名に変更します。

# vi /etc/hadoop/conf/core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://vm-cluster:8020</value>
</property>

こちらも同じくlocalhostをホスト名に変更して下さい。これでWeb管理画面にアクセスできるようになります。

# vi /etc/hadoop/conf/mapred-site.xml
<property>
  <name>mapred.job.tracker</name>
  <value>vm-cluster:8021</value>
</property>

<property>
  <name>mapreduce.jobhistory.address</name>
  <value>vm-cluster:10020</value>
</property>

<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>vm-cluster:19888</value>
</property>

HDFSの起動

Namenodeのフォーマットをします。JDKをインストールしてJAVA_HOMEをセットしていない、またはホスト名を書いてないとエラーになります。

# sudo -u hdfs hdfs namenode -format

HDFS(Namenode / Secondarynamenode / Datanode)を起動します。擬似分散環境の場合、ひとつのサーバーで構築するので Secondarynamenode は必要ありませんが起動しても特に問題ありません。

# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-vm-cluster.out
Started Hadoop datanode (hadoop-hdfs-datanode):            [  OK  ]
starting namenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-namenode-vm-cluster.out
Started Hadoop namenode:                                   [  OK  ]
starting secondarynamenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-secondarynamenode-vm-cluster.out
Started Hadoop secondarynamenode:                          [  OK  ]

起動できたらブラウザでhttp://192.168.33.10:50070/にアクセスしてみましょう。HDFSのWeb管理画面が表示されれば成功です。

YARNの起動

HDFS上に各種ディレクトリを作成します。スクリプトが用意されてるので実行しましょう。これをしてないと YARN の起動で失敗します。

# sudo /usr/lib/hadoop/libexec/init-hdfs.sh

終わったら次のコマンドでHDFS上のディレクトリを確認してください。

# sudo -u hdfs hadoop fs -ls -R /

YARNを起動します。

# sudo service hadoop-yarn-resourcemanager start
starting resourcemanager, logging to /var/log/hadoop-yarn/yarn-yarn-resourcemanager-vm-cluster.out
Started Hadoop resourcemanager:                            [  OK  ]
# sudo service hadoop-yarn-nodemanager start
starting nodemanager, logging to /var/log/hadoop-yarn/yarn-yarn-nodemanager-vm-cluster.out
Started Hadoop nodemanager:                                [  OK  ]
# sudo service hadoop-mapreduce-historyserver start
starting historyserver, logging to /var/log/hadoop-mapreduce/mapred-mapred-historyserver-vm-cluster.out
...
Started Hadoop historyserver:                              [  OK  ]

起動できたら以下のWeb管理画面にアクセスしてみます。

WordCountの実行

HDFSとYARNのインストールが終わったので、MapReduceのサンプルプログラムを実行します。

ディレクトリを作成してテストデータを用意してください。

# sudo su - hdfs
# echo "hoge fuga bar foo hoge fuga" > wordcount.txt
# hadoop fs -mkdir -p /user/hdfs/input
# hadoop fs -put wordcount.txt /user/hdfs/input
# hadoop fs -cat /user/hdfs/input/wordcount.txt
hoge fuga bar foo hoge fuga

WordCoundのサンプルプログラムは既に用意されてるので次のコマンドで実行します。

# hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/hdfs/input/wordcount.txt /user/hdfs/output

以下のようにログが流れたら成功です。

15/06/04 01:38:25 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/06/04 01:38:27 INFO input.FileInputFormat: Total input paths to process : 1
15/06/04 01:38:27 INFO mapreduce.JobSubmitter: number of splits:1
15/06/04 01:38:27 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1433381720702_0001
15/06/04 01:38:28 INFO impl.YarnClientImpl: Submitted application application_1433381720702_0001
15/06/04 01:38:28 INFO mapreduce.Job: The url to track the job: http://vm-cluster:8088/proxy/application_1433381720702_0001/
15/06/04 01:38:28 INFO mapreduce.Job: Running job: job_1433381720702_0001
15/06/04 01:38:38 INFO mapreduce.Job: Job job_1433381720702_0001 running in uber mode : false
15/06/04 01:38:38 INFO mapreduce.Job:  map 0% reduce 0%
15/06/04 01:38:45 INFO mapreduce.Job:  map 100% reduce 0%
15/06/04 01:38:59 INFO mapreduce.Job:  map 100% reduce 100%
15/06/04 01:39:00 INFO mapreduce.Job: Job job_1433381720702_0001 completed successfully
...

出力されたファイルを確認してみましょう。単語毎にカウントされました。

$ hadoop fs -ls -R /user/hdfs/output
-rw-r--r--   1 hdfs supergroup          0 2015-06-04 01:38 /user/hdfs/output/_SUCCESS
-rw-r--r--   1 hdfs supergroup         26 2015-06-04 01:38 /user/hdfs/output/part-r-00000
$ hadoop fs -cat /user/hdfs/output/part-r-00000
bar 1
foo 1
fuga    2
hoge    2

Vagrantで自動構築

以上の内容でVagrantスクリプトを書きました。VagrantVirtualBoxがすでにインストールされてるなら次のコマンドだけで擬似分散モードの仮想マシンが作成できます。詳細は README を参考にしてみて下さい。 tasukujp/hadoop-pseudo-distributed · GitHub

$ git clone git@github.com:tasukujp/hadoop-pseudo-distributed.git
$ cd hadoop-pseudo-distributed
$ vagrant up

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の話だったことに気づきました?