您的位置:首页 > 运维架构

Hadoop2.2 + spark1.0 在ubuntu 上搭建分布式集群

2014-06-16 22:18 411 查看
环境介绍:

两台服务器上的虚拟机,只能用命令行使用。虚拟机的系统环境完全一样ubuntu12.04.2 (GNU/Linux 3.2.0-57-generic x86_64) 以及需要用的  jdk1.7.0_09.

spark的集群可以在Amazon EC2, Apache mesos, Hadoop yarn以及spark自己的Standalone Mode。

由于我第一次接触集群,Hadoop算是比较老牌了,群众基础也比较大,所以先试着搭建hadoop 环境。

本来虚拟机上初始化有Hadoop的,但是spark的网站上提到MLlib时都是基于2版本以上的,以防万一,还是重新搭建新版本好了。

***********************************************************************************************************************************

首先从本机上ssh登陆到服务器上

$ ssh username@address
//输入密码->password
//输入虚拟机的IP
//输入虚拟机登陆账户的密码


ok登陆成功。

因为要经过一层服务器,所以不能使用ssh免密登陆,不知道有没有办法解决。

***********************************************************************************************************************************

此外,为了为以后的集群做准备,也修改一下hostname,并用ssh实现无密码登陆。

$ sudo hostname master
$ sudo vim /etc/hostname
# 修改hostname为master


使用exit退出,重新连接就生效了。使用同样的方法修改slave的hostname为slave1...

修改了hostname后可能会在sudo时遇到异常提示,这是因为host解析错误。

$ vim /etc/hosts
#第一行改为
127.0.0.1 localhost master
#也可以把master的ip地址写入,之后搭建集群时还需要写入slave的ip
下面实现无密码登陆,生成公钥私钥,并将公钥追加到认证里面。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


**********************************************************************************************************************************
安装jdk,设置JAVA_HOME环境变量

***********************************************************************************************************************************

下面搭建hadoop2.2

官方文档的地址

http://hadoop.apache.org/docs/r2.2.0/
镜像地址
http://www.apache.org/dyn/closer.cgi/hadoop/common/


首先是两台虚拟机中的master。

在目录/home/cloud内

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz[/code] 
解压当前用户目录下,并改个简单的名字

$ tar zxf hadoop-2.2.0.tar.gz -C ~/
$ mv hadoop-2.2.0 hadoop


**************************************************************************************************************************************

我直接下载了release版本,但后来配置好之后发现其中hadoop/lib里的库文件是32位的,不能使用。还需要下载源码重新编译,我觉得重新编译还是蛮麻烦的,我把自己编译好的库文件放在了github.com/DarryO/trans/lib内了,需要的话直接下载替换好了。

下面是编译的过程,不多说。

依赖文件

$ sudo apt-get install g++ autoconf automake libtool make cmake zlib1g-dev pkg-config libssl-dev sudo maven


还有protobuf,我安装时是被墙了...

在源码目录下编译,出现一些错误也没关系,我们要的是/lib的内容
mvn package -Pdist,native -DskipTests -Dtar


****************************************************************************************************************************************

修改环境变量

$ vim ~/.bashrc
#我是根据网上的博客写的,看到了两个版本,是不同版本的hadoop用到的环境变量,都是可以的,以防万一,都写了。
#HADOOP VARIABLES START
#JAVA_HOME也一定要先做好的
HADOOP_HOME
export HADOOP_PREFIX=$HOME/hadoop
export HADOOP_INSTALL=$HOME/hadoop
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
source ~/.bashrc


***********************************************************************************************************

修改配置文件

hadoop/etc/hadoop下的

1. hadoop-env.sh

添加export JAVA_HOME地址

2. core-site.xml

设置

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<!-- 设置namenode的地址-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cloud/hadoop/local/hadoop/tmp/hadoop-${user.name}</value>
<!--临时文件-->
</property>
</configuration>


3. hdsf-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/cloud/hadoop/local/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/cloud/hadoop/local/hadoop/hdfs/datanode</value>
</property>
</configuration>


4. yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>


5. mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
</configuration>


*********************************************************************************************************************

ok接下来在hadoop/etc/hadoop下创建masters,slaves

在masters里写入master的hostname,在slaves内写入slave的hostname,此时应该在/etc/hosts里面已将把他们的hostname解析好了的。

把hadoop相关的文件传到slave上面,所有配置相同。

***********************************************************************************************************************

hadoop namenode -format
./bin/start-all.sh

例子

$ cd $HADOOP_PREFIX
$ hdfs dfs -put ./etc/hadoop/ input
$ hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount input output
$ hdfs dfs -lsr output
$ hdfs dfs -cat output/part-r-00000


ok

搭好hadoop之后,spark就简
4000
单了,release版本直接使用,配置好master,slave就可以,scala版本对应
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop spark ubuntu