基于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
    评论
### 回答1: 基于UbuntuSpark集群部署与测试需要以下步骤: 1. 安装Java和Scala:Spark需要Java和Scala的支持,因此需要先安装这两个软件包。 2. 下载Spark:从Spark官网下载最新版本的Spark。 3. 安装Spark:将Spark解压到一个目录中,并设置环境变量。 4. 配置Spark集群:在Spark的conf目录下,创建一个名为spark-env.sh的文件,并设置SPARK_MASTER_IP和SPARK_WORKER_CORES等参数。 5. 启动Spark集群:在Spark的sbin目录下,运行start-master.sh和start-slaves.sh脚本,启动Spark集群。 6. 测试Spark集群:使用Spark自带的示例程序,如WordCount,测试Spark集群的性能和可靠性。 7. 部署应用程序:将自己的应用程序打包成jar包,并使用spark-submit命令提交到Spark集群中运行。 以上是基于UbuntuSpark集群部署与测试的基本步骤,需要注意的是,Spark集群的配置和调优需要根据具体的应用场景进行调整。 ### 回答2: Spark是一个开源的、快速而通用的集群计算系统,主要用于大数据处理。部署Spark集群需要选择操作系统,目前较为流行的是选择Ubuntu作为操作系统。下面介绍基于UbuntuSpark集群部署与测试。 1. 安装Ubuntu操作系统 首先需在每个节点上安装Ubuntu系统。推荐使用Ubuntu Server版本,该版本缺省不安装图形界面和大部分的应用程序,更适合用于服务器操作。 2. 安装Java环境 Spark是基于Java编写的,因此每个节点上都必须安装Java环境。可以选择安装OpenJDK或Oracle JDK。建议选择较新的Java版本,可以提高Spark的性能。 3. 下载SparkSpark官网(http://spark.apache.org/)下载最新版本的Spark并解压。 4. 配置Spark 首先在每个节点上创建一个Spark用户,并为其分配一个唯一的用户ID。接下来,需要在Spark的默认配置文件中配置相关参数,例如Worker数量、内存大小、Hadoop配置等。 5. 部署Spark集群 可以使用多种方式来部署Spark集群,例如手动部署、使用Puppet、Chef等自动化配置工具。手动部署需要在每个节点上逐个安装Spark并手动配置,而自动化配置工具则可以自动在多个节点上安装并配置Spark,省时省力。 6. 测试Spark集群 在Spark集群部署完成后,可以使用Spark自带的示例程序进行测试。可以先在一个节点上运行示例程序,确保程序能够正常运行。 以上就是基于UbuntuSpark集群部署与测试的介绍。没有经验的用户可以尝试使用自动化配置工具来部署Spark集群,使部署过程更加轻松。通过合理的配置,Spark集群可以高效地处理海量数据,为用户提供更为便捷、高效的大数据处理体验。 ### 回答3: Ubuntu是一款开源的操作系统,在大数据领域,Ubuntu常被用作Spark集群的部署环境。Spark是一个快速的分布式计算框架,具有高性能和多功能性的设计。在这里,我将为大家介绍基于UbuntuSpark集群部署与测试的步骤。 1. 部署Spark Cluster 首先,我们需要在Ubuntu系统上安装Java、Scala和Spark。为了简化部署过程,我们可以使用类似Ansible的自动化工具进行安装和配置。 另一种常用的部署方法是手动安装。我们需要下载相关二进制文件,将它们解压缩到合适的目录,并设置环境变量。这里有一些基本的指令: $ sudo apt-get install default-jre $ sudo apt-get install scala $ wget http://mirror.bit.edu.cn/apache/spark/spark-3.0.0/spark-3.0.0-bin-hadoop2.7.tgz $ tar -xvzf spark-3.0.0-bin-hadoop2.7.tgz $ sudo mv spark-3.0.0-bin-hadoop2.7 /usr/local/spark $ echo "export PATH=$PATH:/usr/local/spark/bin" >> ~/.bashrc $ source ~/.bashrc 2.配置环境变量 在Ubuntu上运行Spark,需要设置以下环境变量: SPARK_HOME:为Spark的安装路径。 JAVA_HOME:为Java的安装路径。 PATH:为Spark二进制文件的可执行路径。 另外,我们需要为每个节点分配IP地址。例如,我们可以在/etc/hosts中添加以下信息: 192.168.1.100 node1 192.168.1.101 node2 192.168.1.102 node3 3.测试Spark Cluster 在Spark集群上进行测试,可以通过启动Spark Shell进行交互式分析。我们可以在Ubuntu命令行中输入: $ spark-shell 这将启动Spark Shell,并显示Spark版本和其他信息。如果成功启动,我们可以使用以下命令测试Spark集群: val arrays = Array(1, 2, 3, 4, 5) val rdd = sc.parallelize(arrays) #创建RDD rdd.collect() #输出RDD中的数据 如果一切正常,Spark Shell将输出包含1、2、3、4、5的表格数据。这说明我们已成功连接到Spark集群并运行RDD分析。 综上所述,基于UbuntuSpark集群是一种快速、简单和高效的方式,用于大数据分析和处理。在正确配置环境变量和启动集群后,我们可以通过Spark Shell测试RDD分析,并开始构建自己的大型分布式计算应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值