LoginSignup
5
6

More than 5 years have passed since last update.

Macのローカル環境でhadoopを1から勉強する

Posted at

とりあえずローカルのmac上で試しにhadoopを動かしてみたいということで、
virtualboxをインストールして、vagrantでcentosを入れて疑似分散環境を作ってみました。

homebrewをインストール

virtualboxやvagrantをコマンドラインからインストールするためこいつを入れます。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

virtualboxのインストール

brew cask search /^virtualbox$/
brew cask install virtualbox

信じられないかもしれませんがこれで、アプリケーションフォルダにvirtualboxがインストールされます。

さくっとこのままvagrantを使っていきます

vagrantのインストール

brew cask search vagrant
brew cask install vagrant
これでvagarantがインストールされました。

vagrantを使ってcentosを立ててみる

立てたいOSのBOXを落としてくる

BOXというのは構築するサーバのOSイメージみたいなやつと思えばいいと思います。

ここからお好みのOSのURLをゲッチュする。
http://www.vagrantbox.es/
今回は僕はcentos6系のを選びました。

上でコピーしたOSのURLを下記コマンドの一番最後の引数に指定
vagrant box add <name> <boxのURL>
といった具合

vagrant box add centos6 https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
↑でcentos6のboxがDLできる。

DLが終わったら、
vagrant box list
で確認してみましょう。
<name>で指定した名前のBOXが表示されるはずです。

落としてきたBOXをもとにVMを起動させる

mkdir centosVM
cd centosVM
vagrant init centos6
と打ちます。
すると、
Vagrantfile
というものが出来上がります。
ちょこっと書き換えます。
vi Vagrantfile
で開き。
#config.vm.network "forwarded_port", guest: 80, host: 80
という行があると思うので、
コメントアウトを外して、
config.vm.network "forwarded_port", guest: 50070, host: 50070
と書き換えます。
何をしているかというと、
vagrantサーバ上でHDFSを起動させた後、ブラウザから管理画面をみるための設定です。
こうしておくことで、
Macのブラウザから、
localhost:50070
と打つことで、
vagrant上の50070ポートのプロセスにアクセスすることができるのです。便利。
もちろんvagrantのサーバにプライベートIPをつけることも可能ですがこれで事足ります。

Vagrantfileを編集し終わったら、
vagrant up
でVMが立ち上がります。

SSHで接続してhadoopとして必要なものをインストールしていく

vagrant ssh
で立ち上げたVMに接続することができます。
※vagrant upを叩いたときに、127.0.0.1:2222で上がったよってログがでるので、
ssh vagrant@127.0.0.1 -p 2222
といった形でも接続可能です。
パスワードは「vagrant」です

wgetのインストール

素の状態だとwgetが入っていないので入れます。
sudo su -
でrootになり。
yum install wget
で簡単に入ります

JDKのインストール

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
長いコマンドですがこれで引っ張ってこれます。
rootのまま作業しましょう。
yum -y localinstall jdk-8u45-linux-x64.rpm
でインストールされます。
java -version
でバージョン情報が表示されるのを確認できればOK

CDHをインストール

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
でCDH5が入ります。

疑似分散環境の設定

yum -y install hadoop-conf-pseudo
詳しいことはわかりませんがこれが必要なそうです。(これからわかっていくのです)

ローカルからSSHする際に邪魔になりそうなのでfirewallを切っておきます。
service iptables stop
chkconfig iptables off

HDFSのフォーマット

sudo -u hdfs hdfs namenode -format
注意点はhdfsユーザで実行するところです。
※CDHのパッケージをインストールすることで自動的にhdfsユーザ、mapredユーザは作られています。

上記コマンドを打つとどわーーっとでてきます。

最終的に、

17/04/11 09:57:01 INFO util.ExitUtil: Exiting with status 0
17/04/11 09:57:01 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/

的なメッセージがでればOKかと。

サービス起動

service hadoop-hdfs-namenode start
service hadoop-hdfs-datanode start
namenodeとdatanodeのプロセスを起動させます。

この状態でMacのブラウザから、
localhost:50070
にアクセスするとHDFSの管理画面が閲覧できるかと思います。

HDFSに必要なディレクトリの作成

スクリプトが用意されています。
sudo /usr/lib/hadoop/libexec/init-hdfs.sh
これを実行しないとYARNがコケるそうです。よくわかっていません。

sudo -u hdfs hadoop fs -ls -R /
で、作成されたディレクトリなどを確認できます。

sudo service hadoop-yarn-resourcemanager start
sudo service hadoop-yarn-nodemanager start
sudo service hadoop-mapreduce-historyserver start

これでYARNが起動しました。
ResourceManager - http://192.168.33.100:8088/
NodeManager - http://192.168.33.100:8042/
JobHistory - http://192.168.33.100:19888/
にアクセスすると、webから管理画面が見えるそうです。
※VagrantFileに↑ポートへのフォワード設定が必要です。

サンプルプログラムの実行

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

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

実行結果の確認
hadoop fs -ls -R /user/hdfs/output
hadoop fs -cat /user/hdfs/output/part-r-00000

これで一通りhadoopを動かす環境が整いました

疑似分散環境という形ですが、以上でhadoop環境の構築から実行までできたと思います。
ここからhiveだとかを投げて見たりしていきたいです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6