Chefを使ってCDHを設定してみた(MRv1編)


前回Yarnの設定まで行い、いざ実行。といきたいとこだったが結論からいうとうまくいかなかった。。。(-_-;)

 

何がうまく行かなかったかというと実行はできたんだけどHistory とかRecouseManagerにジョブがでてこなかった。なんでだろうといろいろ試行錯誤したが結局よくわからず。

ってことでYarnではなくMRv1でやってみることに。結果うまくいったのでもうこれでいいかなと思ってる。自分にはまだYarnは早すぎたようだ。

 

とりあえずうまく行った設定を下記に載せておく。

また例の如くInstalling CDH4Deploying MapReduce v1 (MRv1) on a Clusterを参考にレシピは作成している。

やってることはほとんどYARNの設定まで行ったことと同じ感じ。

 

recipe/cdh4.rb


#
# Cookbook Name:: cdh
# Recipe:: cdh
#

template "cloudera.list" do
path "/etc/apt/sources.list.d/cloudera.list"
source "cloudera.list.erb"
owner "root"
group "root"
mode 00744
end

bash "apt-get-update" do
code "apt-get update"
end

bash "add-cdh-repository" do
code "curl -s http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh/archive.key | apt-key add -"
end

package 'hadoop-0.20-mapreduce-jobtracker' do
options "-f --force-yes"
action :install
end

package 'hadoop-hdfs-namenode' do
options "-f --force-yes"
action :install
end

package 'hadoop-0.20-mapreduce-tasktracker' do
options "-f --force-yes"
action :install
end

package 'hadoop-hdfs-datanode' do
options "-f --force-yes"
action :install
end

package 'hadoop-client' do
options "-f --force-yes"
action :install
end
#Copying the Hadoop Configuration
bash "Copying the Hadoop Configuration" do
not_if { File.exists?("/etc/hadoop/conf.my_cluster")}
code <<-EOS
sudo cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.my_cluster
sudo update-alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
sudo update-alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
chown -R root:hadoop /etc/hadoop/conf.my_cluster
EOS
end

#設定ファイル(HDFS)
template "core-site.xml" do
path "/etc/hadoop/conf.my_cluster/core-site.xml"
source "core-site.xml.erb"
owner "root"
group "hadoop"
mode 00644
end

template "hdfs-site.xml" do
path "/etc/hadoop/conf.my_cluster/hdfs-site.xml"
source "hdfs-site.xml.erb"
owner "root"
group "hadoop"
mode 00644
end

#hdfsデータ格納用フォルダ作成
directory "/data" do
owner "hdfs"
group "hadoop"
mode 00774
action :create
end

directory "/data/1" do
owner "hdfs"
group "hadoop"
mode 00774
action :create
end

directory "/data/1/dfs" do
owner "hdfs"
group "hadoop"
mode 00744
action :create
end

directory "/data/1/dfs/nn" do
owner "hdfs"
group "hadoop"
mode 00744
action :create
end

directory "/data/1/dfs/dn" do
owner "hdfs"
group "hadoop"
mode 00744
action :create
end
#最初の一回しか実行できません。
#2回目以降は手動でコマンドを実行してください
bash "node format" do
not_if { File.exists?("/usr/namenodeinstalled")}
code <<-EOS
sudo -u hdfs hadoop namenode -format
touch /usr/namenodeinstalled
EOS
end

#Service起動
service "hadoop-hdfs-namenode" do
action :restart
end

service "hadoop-hdfs-datanode" do
action :restart
end

#設定ファイル(MRv1)
template "mapred-site.xml" do
path "/etc/hadoop/conf.my_cluster/mapred-site.xml"
source "mapred-site.xml.erb"
owner "root"
group "hadoop"
mode 00644
end

#MapReduceデータ格納用フォルダ作成
directory "/data/1/mapred" do
owner "mapred"
group "hadoop"
mode 00755
action :create
end

directory "/data/1/mapred/local" do
owner "mapred"
group "hadoop"
mode 00755
action :create
end

#hdfs上にtmpディレクトリ作成
bash "create tmp directory on hdfs" do
code <<-EOS
sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
EOS
not_if "sudo -u hdfs hadoop fs -test -d /tmp"
end

#hdfs上に/varディレクトリ作成
bash "create var directory on hdfs" do
code <<-EOS
sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
sudo -u hdfs hadoop fs -chmod -R 1777 /var/lib/hadoop-hdfs/cache/mapred
EOS
not_if "sudo -u hdfs hadoop fs -test -d /var/lib/hadoop-hdfs/cache/mapred/mapred/staging"
end

bash "Create and Configure the mapred.system.dir Directory in HDFS" do
code <<-EOS
sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system
EOS
not_if "sudo -u hdfs hadoop fs -test -d /tmp/mapred/system"
end

&nbsp;

#Service起動
service "hadoop-0.20-mapreduce-tasktracker" do
action :restart
end

service "hadoop-0.20-mapreduce-jobtracker" do
action :restart
end

 

template/default/cloudera_list.erb


deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4 contrib
deb-src http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4 contrib

 

template/default/core-site.xml.erb


<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Site specific YARN configuration properties -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoopvm:9000</value>
</property>
</configuration>

 

template/default/hdfs-site.xml.erb


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/1/dfs/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/1/dfs/dn</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

 

template/default/mapred-site.xml.erb


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoopvm:8021</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/data/1/mapred/local/</value>
</property>
</configuration>

 

サンプル動かした結果、下記のようにJobがでてきた。Yarnのほうが見た目がかっこよかったが、まあ何はともあれ動いたのでよしとしよ

スクリーンショット 2014-05-05 18.00.58

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

AWS
Docker
ECS+ALBの動的ポートマッピングでダウンタイムのないデプロイを試してみた

はじめに 少し前に個人で作成しているWebサービスのインフラにDockerを使い始めました。 複数台 …

スクリーンショット 2016-01-09 20.02.08
Ruby on Rails
Capistrano3を利用してBitbucketプライベートリポジトリにあるRailsアプリをデプロイしてみた

Railsアプリを配置する際、毎回手作業で頑張って配置してきたが、そろそろ自動デプロイを・・・ とい …

MarketTreeViewのイメージ
Ruby on Rails
[Eve Online 3rd party app] Market Tree Viewの実装 [EOPES制作記]

Eve Online 3rd party app のEOPES を作り始めてから約3ヶ月が経ちました …