spark安装_Ubuntu16.04 多节点集群的 Spark 及 Hadoop HDFS 安装、配置及运行(二)

2368bdf3b0dadb98b43bed6443f4db16.png

0x00 前言

本文是Spark + HDFS 系统的第二篇文章,第一篇介绍了Spark 以及Hadoop 的安装,在本文章(二)中会介绍如何在多节点的集群上进行设置以及部署。

*文章中部分名词在解释概念时因方便读者理解并没有采用 Spark/HDFS 的专用名词,采用了便能意会的词汇如 master/slave 等。

0x01 前置工作

Spark 和 HDFS 的部署十分简单,但是我们需要做一些设置。

Hostname

首先我们要对每个机器加入整个集群的 Hostname 列表设置,方便我们可以在 Spark 和 Hadoop 中分辨出各个机器。

首先透过设置 Hosts 文件

$ sudo vim /etc/hosts

下列例子中因笔者有多台机器,所以把 hostname 设置为 worker1~worker9,读者可以按照自己的网域进行设置。

127.0.0.1       localhost
10.0.0.1        worker1
10.0.0.2        worker2
10.0.0.3        worker3
10.0.0.4        worker4
10.0.0.5        worker5
10.0.0.6        worker6
10.0.0.7        worker7
10.0.0.8        worker8
10.0.0.9        worker9

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

SSH key

因为我们要对多个节点进行管理,而这些节点之间的通讯都离不开 ssh,在我们进行 ssh 时,有些人因为各位原因会选择每次输入密码,但在程序之间进行沟通的时候,我们不能采取这种 interactive 的方法,我们需要提前让这些机器"认识彼此" 以及"验证对方"。

我们以 worker1 作为例子,首先需要在机器上进行 ssh key 的生成

$ ssh-keygen -t rsa

然后把你刚刚生成的 key 放到别人的 "认可列表" 当中(也可包括自己)

$ ssh 10.0.0.1 mkdir -p .ssh && 
ssh 10.0.0.2 mkdir -p .ssh && 
ssh 10.0.0.3 mkdir -p .ssh && 
ssh 10.0.0.4 mkdir -p .ssh && 
ssh 10.0.0.5 mkdir -p .ssh && 
ssh 10.0.0.6 mkdir -p .ssh && 
ssh 10.0.0.7 mkdir -p .ssh && 
ssh 10.0.0.8 mkdir -p .ssh && 
ssh 10.0.0.9 mkdir -p .ssh

$ cat .ssh/id_rsa.pub | ssh 10.0.0.1 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.2 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.3 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.4 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.5 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.6 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.7 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.8 'cat >> .ssh/authorized_keys' &&
cat .ssh/id_rsa.pub | ssh 10.0.0.9 'cat >> .ssh/authorized_keys'

这样之后你在 worker1 上 ssh 到其他 worker 上就不需要密码了,满足 其他 worker 对 master 连接进来的许可,若读者想把所以 worker 之间互通,可以在每个 worker 上进行同样的操作。

0x02 Spark 部署

我们确定完这些机器之间的连接是互通的之后,就可以在 master node 上开启 master,在这里我们选用 worker1 充当 master

$ $SPARK_HOME/sbin/start-master.sh

SPARK master 预设采用的是 7077 的端口,而 spark://worker1:7077 就是我们刚刚开起来的 Spark 路径。

把 master 开起来之后, worker2~worker9 可以连接到 spark://worker1:7077 中,如下 (当然亦可以在 Worker1 设定 slaves 统一进行 start-all.sh)

$ $SPARK_HOME/sbin/start-slave.sh spark://worker1:7077

在进行完 master & slave 机器的布署后,我们可以透过 Spark 提供的 web UI 来查看 Spark 端点讯息,这里预设的端口为 8080,在 master 浏览器上输入即可查询

http://10.0.0.1:8080/

之后我们在 worker1 上通过 50070 端口看到类似的介面代表 Spark 运行成功,此之亦能查询 slaves 的节点讯息

106d97414cb3d0632c1618c8b7377997.png

这样就成功的在多节点间简单的部署了 Spark,可以透过提交任务到 master 来来进行多节点的 Spark 的运算。

0x03 HDFS 部署

HDFS 我们需要在 master 和 slaves 先设定好配置文件,主要是设定 core-site.xmlslaves 这两个文件

$ vim $HADOOP_HOME/etc/hadoop/core-site.xml

我们把 master 设定为 worker1 (10.0.0.1),注意这个设定文件必须要在每个 worker (master/slave) 都拥有一份,以指定 hdfs 的路径。

<configuration>
        <property>
          <name>fs.default.name</name>
      <value>hdfs://10.0.0.1:9000</value>
      </property>
</configuration>

然后在 master (worker1) 的 slaves 的文件之中把所用到的 slave 加入(也可加入自己)

$ vim $HADOOP_HOME/etc/hadoop/slaves
worker1
worker2
worker3
worker4
worker5
worker6
worker7
worker8
worker9

在第一次运行 HDFS 之前,我们先要进行 formatting。

$ hdfs namenode -format

之后就可以在 master (worker1) 中开启 HDFS,用 Hadoop 提供的脚本即可部署 HDFS

$ $HADOOP_HOME/sbin/start-dfs.sh

同样地, Hadoop 亦有提供 web UI 可以进行节点讯息的确认, Hadoop 的预设端口为 50070

http://10.0.0.1:50070/

看到以下介面后,即完成 HDFS 的部署

ff9c6f5f54e0d727b95174b08598e0be.png

26e62ea556d5a838b6f65165180c886d.png

在 Spark 以及 Hadoop HDFS 布署完成之后,我们就可以在自己建立的多节点集群中使用 Spark + HDFS 的分布式存储及计算解决方案了。

0x04 总结

在本文(二)中介绍了Spark 以及Hadoop HDFS 的简单部署过程以及方法,在(一)中介绍了安装方法,透过这两篇文章的方法即可部署Spark 和HDFS,适合在私人的集群中进行部署并使用Spark + HDFS 的分布式存储及计算解决场景方案。


本文首發於 laochanlam 个人博客,转载请注明出处。

个人主页 - laochanlam​blog.laochanlam.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值