基于Ubuntu虚拟机的Spark简单集群搭建(一)

基本介绍

作为一个Big Data领域的小白,最近自己尝试搭建了一个简易的spark集群。因此打算写篇博客记录一下整个过程。但是担心把所有部分放在一篇文章中可能导致文章过长,因此打算写成两篇。在这篇文章中,我会详细地介绍spark集群搭建的第一部分,hadoop集群的搭建。

0.环境介绍

虽说是一个集群,但是我总共只使用了两台ubuntu虚拟机,其中一个作为节点,另一个作为节点。如果你想尝试使用更多的机器来搭建集群,也同样可以参考我的搭建过程,因为本质上差别不大。OK,下面我们正式进入hadoop集群的搭建过程。

1.通信确认

因为我们要搭建集群,那么首先就要确保集群中的机器可以进行正常通信,可以使用ping命令来测试是否能够与集群中的其他机器建立通信,以我的两台虚拟机为例(IP分别为192.168.56.9 & 192.168.56.11

$ ping 192.168.56.11
$ ping 192.168.56.9

如果产生以下结果,表示可以进行通信。

 

2.修改主机名

为了更加方便确认集群中的各台机器(尤其是你的集群内机器数量很多时), 最好修改一下各台机器的主机名hostname。比如将主节点命名为master,将从节点命名为slave

具体可以通过如下方式修改

$ sudo vim /etc/hostname

比如我的原始主机名叫做virtualbox-frank,将其修改为master。保存退出,重启机器,就会发现主机名已经成功修改。

同理对于从节点机器,将其修改为slave。

在下文的描述中,我会直接使用master来代表主节点,slave来代表从节点。

3.添加集群机器信息 

接下来需要在集群中的每台机器上都配置相同的机器信息。通过打开 /etc/hosts 文件

$ sudo vim /etc/hosts

添加(或修改)如下配置。

127.0.0.1      localhost
192.168.56.9   master
192.168.56.11  slave

集群中每台机器的ip以及hostname,因为我只有一台master和一个slave,因此配置如上。如果你有多台工作机器,你需要将所有机器的信息都写上(slave1,slave2,slave3,...)。 

4.设置ssh免密登录

我们需要让每台机器都能实现ssh的免密登录。通过如下命令进行确认。

$ ssh localhost

执行上述命令,如果不需要输入密码即可登录,则测试通过。不然的话就需要使用ssh-keygen命令来生成公私钥对,并将公钥存入~/.ssh/authorized_keys文件中。如果对ssh生成公私钥对的具体方法不清楚的朋友,可以阅读我的这篇博客

5.Master主机免密登录Slave集群

本质上就是实现从本地(Master)通过ssh免密登录所有远程机器(Slave)。命令如下

首先在master机器上,输入如下指令,将master的id_rsa.pub传递给slave机器。(假设上述生成公私钥对时使用的加密方式为rsa) 

$ scp ~/.ssh/id_rsa.pub frank@slave:/home/frank/  #将frank改为你的用户名

然后切换到slave机器,输入如下指令,即将刚刚传到到根目录下的master主机的公钥信息添加到slave机器的authorized_keys文件中。

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

然后就可以在master机器上远程免密登录slave机器了。

如果你的多台机器的用户名相同,比如我的话,两台虚拟机的用户名都是frank,那么你在测试远程登录的时候,可以不写用户名,即直接使用如下命令即可成功登录。

$ ssh slave #ssh frank@slave 或者 ssh frank@192.168.56.11

不然的话你就需要加上用户名。或者你也可以在master的~/.ssh下添加一个config文件,然后写入如下内容。

Host master
    user hujiahao #你的master机器的用户名
Host slave
    user frank #你的slave机器的用户名

然后再执行上述命令,同样也可以完成在不输入slave用户名情况下,快速连接slave机器。

6.JDK安装

因为hadoop是基于java编写的,我们在安装hadoop之前,还需要先首先安装JDK。在ubuntu下,使用以下命令在master和slave上分别安装jdk。

$ sudo apt-get install default-jdk

打开.bashrc文件并添加如下语句。

export JAVA_HOME=/usr/lib/jvm/default-java

最后让环境变量生效。

$ source ~/.bashrc

7.安装Hadoop

接下来我们需要在集群的机器上安装hadoop。这里需要注意的是,因为我们需要对安装的hadoop进行集群的配置,为了避免不必要的重复,我们选择现在master机器上完成hadoop的安装以及配置,再将配置好的hadoop传送给slave节点即可。

这里,我选择使用的是hadoop2.7.3的版本。这里是下载地址。下载完成后将其解压到/usr/local目录下。

$ sudo tar -zxf ~/下载/hadoop-2.7.3.tar.gz -C /usr/local 

然后进入该目录,修改文件夹的名字。

$ cd /usr/local/
$ sudo mv ./hadoop-2.7.3/ ./hadoop 

修改文件权限。

$ sudo chown -R frank ./hadoop #将frank换成你的用户名

进行环境变量的配置,打开~/.bashrc文件,添加下面内容。

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

最后让环境变量生效。

$ source ~/.bashrc

8.hadoop文件配置

因为我们需要搭建的hadoop集群模式,因此需要对应地修改配置文件。具体的路径是

/hadoop/etc/hadoop/

包含的文件如下

 首先我们需要修改的就是slaves文件,将所有的slave节点的主机名添加到该文件中,一行一个,我的话,就很简单,因为只有一个slave节点。

slave

接下来修改core-site.xml文件,以下是我的配置。 

然后是hdfs-site.xml文件,以下是我的配置。

这里注意一下,dfs.replication 一般设为 3,但因为我只有一个 Slave 节点,所以 dfs.replication 的值还是设为1。

然后还需要修改mapred-site.xml文件。但是这个文件本身是没有的,需要先复制mapred-site.xml.template,然后将其重命名后打开,添加以下配置。

最后需要修改的是yarn-site.xml 

到此为止,我们就完成了集群的基本配置。接下来我们就可以将完成配置的hadoop拷贝到slave节点上了。命令如下

$ cd /usr/local
$ tar -zcf ~/hadoop.master.tar.gz ./hadoop

 如果你在运行集群模式前还运行了其他模式到hadoop,记得在压缩前将临时文件和日志清空。

$ rm -rf ./hadoop/tmp
$ rm -rf ./hadoop/logs/*

然后回到我们的根目录下,将压缩包传送到各个slave节点,因为我只有一个slave,因此执行如下。

$ scp ./hadoop.master.tar.gz slave:/home/frank

然后进入到我们的slave机器上,就会发现打包好的hadoop已经存在于我们的根目录下了。我们同样将其解压到/usr/local下

$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R frank /usr/local/hadoop #将frank换成你的用户名

9.测试hadoop集群

接下来,我们来启动hadoop集群,执行如下命令。

$ cd /usr/local/hadoop
$ bin/hdfs namenode -format
$ sbin/start-all.sh

启动后我们使用jps命令来分别查看一下master和slave节点的情况。

首先是master节点。

然后是slave节点。

如图所示表示启动成功,任何一个node的缺失都意味着你的hadoop存在问题,你可以通过查看日志/hadoop/logs/来查看具体的错误原因。

最后我们关闭hadoop。

$ sbin/stop-all.sh

 p.s.如果存在启动后datanode或者namenode缺失的情况,一种方法是先关闭进程,然后删除tmp文件夹(即core-site.xml中定义的临时文件存放路径),然后重新进行上面的格式化,最后再次启动。

ok,以上就是如何基于ubuntu构建简单hadoop集群的流程,下一篇文章我会介绍如何基于构建的hadoop集群来构建spark集群,感谢大家的阅读。

参考

Hadoop 2.7分布式集群环境搭建

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值