サナギわさわさ.json

サナギさんとキルミーベイベーとプログラミングが好きです

CentOS+CDH5でSparkの擬似分散環境を作る

日本シリーズが終わってしまったのでSparkをやります。今年中に何とかSparkを実用できるところまで持って行きたいです。

参考サイト

環境

  • CentOS6.6
  • CDH 5

Scalaのインストール

Javaのインストールは省略します。

wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz
tar xvf scala-2.11.7.tgz 
mv scala-2.11.7 /usr/local/share/scala

/etc/profileに以下の3行を追加

SCALA_HOME=/usr/local/share/scala
PATH=$SCALA_HOME/bin:$PATH
export PATH SCALA_HOME

環境変数が正しく設定できていることを確認

$ source /etc/profile
$ scala -version #Versionが正しく出ればOK
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL

CDH5及びSparkのインストール

リポジトリインストール

wget http://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-5-0.x86_64.rpm
rpm -i cloudera-cdh-5-0.x86_64.rpm
rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

擬似分散モードでのインストール

yum install hadoop-conf-pseudo

HDFSの権限設定及びフォーマット

chown hdfs:hdfs /var/lib/hadoop-hdfs
sudo -u hdfs hdfs namenode -format

HDFS系サービスの起動

service hadoop-hdfs-datanode start
service hadoop-hdfs-namenode start
service hadoop-hdfs-secondarynamenode start

関連ディレクトリ作成と権限設定

sudo -u hdfs hadoop fs -ls -R /
sudo -u hdfs hadoop fs -mkdir -p /tmp/hadoop-yarn/staging/history/done_intermediate
sudo -u hdfs hadoop fs -chown -R mapred:mapred /tmp/hadoop-yarn/staging
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
sudo -u hdfs hadoop fs -mkdir -p /var/log/hadoop-yarn
sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn
sudo -u hdfs hadoop fs -ls -R /

YARN系サービスの起動

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

Sparkのインストール

Hiveのインストールはspark-shell起動時にエラーが出ない場合は必要ありません。

yum install spark-core spark-master spark-worker spark-history-server spark-python
yum install hive

Sparkの起動

service spark-master start
service spark-worker start

Sparkシェルの起動とサンプル実行

spark-shell
> val textFile = sc.textFile("file:///usr/lib/spark/LICENSE")
> textFile.count()
res0: Long = 859
> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
> linesWithSpark.count()
res1: Long = 3

終わり

今回はここまでです。次回は対話環境ではなく外部プログラムの実行を行います。