在Mesos上运行Hadoop,需要对代码进行修改。在Mesos-0.9.0中,带有Hadoop-0.20.205.0,并有patch。我们将在Mesos上,运行Hadoop-0.20.205.0


1、部署环境

master blade6

slaves blade10 blade13


2、安装hadoop

这一步骤需保证服务器联通外网。我们假设Mesos的安装目录是<mesos>,进入<mesos>/hadoop目录下,运行./TUTORIAL.sh,一直回车。

执行之后,在<mesos>目录下找到两个文件<mesos>/protobuf-2.4.1.jar<mesos>/src/mesos-0.9.0.jar,然后执行

cp <mesos>/protobuf-2.4.1.jar<mesos>/hadoop/hadoop-0.20.205.0
cp<mesos>/src/mesos-0.9.0.jar <mesos>/hadoop/hadoop-0.20.205.0


3、修改配置文件

大部分配置文件与hadoop配置相同,可参见《Hadoop部署运行》 http://speakingbaicai.blog.51cto.com/5667326/1221932区别主要在mapred-site.xmlhadoop-env.sh两个文件。

(1) mapred-site.xml

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>blade6:19101</value>
    <!--<value>localhost:54311</value>-->
    <!-- Default Port: 9001. -->
  </property>
  <property>
   <name>mapred.jobtracker.taskScheduler</name>
   <value>org.apache.hadoop.mapred.MesosScheduler</value>
  </property>
  <property>
   <name>mapred.mesos.master</name>
   <value>blade6:5050</value>
  </property>
</configuration>

(2) conf/hadoop-env.sh

exportHADOOP_HOME=/home/wangmin/mesos/mesos-0.9.0/hadoop/hadoop-0.20.205.0/
# Google protobuf (necessary for runningthe MesosScheduler).
exportPROTOBUF_JAR=${HADOOP_HOME}/protobuf-2.4.1.jar
# Mesos.
exportMESOS_JAR=${HADOOP_HOME}/mesos-0.9.0.jar
# Native Mesos library.
exportMESOS_NATIVE_LIBRARY=/home/wangmin/mesos/mesos-0.9.0/src/.libs/libmesos.so
# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
exportJAVA_HOME=/etc/alternatives/java_sdk_1.6.0
# Extra Java CLASSPATH elements.  Optional.
exportHADOOP_CLASSPATH=${HADOOP_HOME}/build/contrib/mesos/classes:${MESOS_JAR}:${PROTOBUF_JAR}
export HADOOP_HOME_WARN_SUPPRESS=TRUE


4、启动Hadoop

(1) 启动hdfs

bin/start-dfs.sh

(2) 启动jobtracker(不需要启动tasktracker)

bin/hadoop jobtracker

之后可以像使用hadoop一样,提交作业