Hadoop3.2 +Spark3.0全分布式安装

Hadoop3.2 +Spark3.0全分布式安装

目前Apache官网已经推出了最新版的Haoop3.2和最新版的Spark3.0,比原来增加了很多新特性。Hadoop的安装主要是为Spark提供HDFS的支持和yarn的调度。那么我们将在本文介绍全分布式的Hadoop和Spark的安装方法,供大家参考。
安装系统:Ubuntu 16.04
主节点(Master)数量:1
从节点(Slave)数量:2

一、前期准备

1.设置用户

在三台机器上新建Hadoop用户并设置sudo权限:

$ su
输入密码
$useradd -m hadoop -s /bin/bash
$passwd hadoop
设置密码
$adduser hadoop sudo   # 为用户hadoop增加管理员权限

这样做的目的主要是为了避免使用root用户,从安全考虑。

2.安装Java和Scala并设置相应的环境变量

Hadoop3.0之后的版本只支持Java8以后的版本。下载完jdk解压之后放置于’/usr/lib/jvm’下面(目录可以更改),下载完之后在‘/etc/profile’中配置相关的环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
export SCALA_HOME=/usr/share/scala-2.11

设置完之后,source /etc/profile使得环境变量生效。
很多人在之前已经安装了系统自带的openjdk,但是并没有设置JAVA_HOME等相应的环境变量,这时候我们需要自己去找到对应的安装目录,步骤如下:

首先,切换到 /usr/bin 目录
然后 ll java ,找到Java的软连接路径: lrwxrwxrwx 1 root root 22 9月  25 11:23 java -> /etc/alternatives/java*
找到路径之后,然后继续查看软连接指向的值: ll  /etc/alternatives/java
得到如下:lrwxrwxrwx 1 root root 46 9月  25 11:23 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java*
那么目录中的 /usr/lib/jvm/java-8-openjdk-amd64 就是我们需要引入的 JAVA_HOME 了

同理,我们按照上述方法可以找到scala的安装目录。

3.配置hosts并设置集群机器之间的免密登录。

由于Hadoop和Spark的各个节点之间存在着频繁的文件拷贝,所以我们需要设置机器之间的免密登录,如果不设置就相当于集群之间的机器无法相互通信,自然无法安装成功!因此我们需要配置主节点到从节点的免密登录和从节点到主节点的免密登录。步骤如下:

修改hosts
sudo vi /etc/hosts
#设置每个机器的名称和地址:我的设置如下
192.168.1.19    Masterhadoop
192.168.1.32    Slave1hadoop
192.168.1.79    Slave2hadoop
设置机器之间免密登录

ubuntu默认安装了ssh,直接使用即可。如果没有安装的话,需要提前安装一下。
我们在各个节点下的目录下新建一个‘.ssh’文件夹来存放我们的秘钥。
然后主节点下运行运行:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ##运行之后直接回车就好
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ##将某个秘钥添加为可信,接收到这个host的请求后不再需要输入密码

然后我们将生成的id_rsa.pub使用scp命令拷贝到两个从节点的/tmp(随便一个目录均可)目录下,在/tmp目录下,运行cat id_rsa.pub >> ~/.ssh/authorized_keys,这样我们从主节点登录到从节点就免密了,类似的可以设置从节点到主节点的免密。
设置完免密登陆之后在各个机器上登录一下试试,确保设置正确。

二、Hadoop3.2全分布式环境搭建

做完上述的工作之后,基本的环境配置就已经做好了。这时候我们需要从官网中下载对应的安装包(不带src的安装包),拉取之后我们将其解压到目录/user/local目录下,并且将该目录重命名为hadoop。同时,我们还需要将hadoop目录设置为hadoop用户所有:sudo chown -R hadoop:hadoop hadoop

1. 设置相应的数据目录

这些数据目录是可以自己设置的,只需要在后续的配置中对对应的目录指定就可以,下面使我的配置。
/usr/local/hadoop下新建文件夹/tmp来做我们的临时目录。

sudo mkdir -p /data/hadoop/hdfs/nn    #namenode目录
sudo mkdir -p /data/hadoop/hdfs/dn    #datanode目录
sudo mkdir -p /data/hadoop/yarn/nm    #nodemanager目录
sudo chown -R hadoop:hadoop /data

2. 修改etc/hadoop/workers文件

注意:旧版本以及网上的教程是修改etc/hadoop/slaves文件,但是新版已经移除了这一个文件,取而代之的是workers文件,我按照我的配置将该文件内容替换为:

Masterhadoop
Slave1hadoop
Slave2hadoop

上述设置代表我的集群有三个datanode结点。

3. 修改对应etc/hadoop下面的其他配置文件:

hadoop_env.sh
export JAVA_HOME=${JAVA_HOME}               #设置JAVA_HOME的路径,需要再次指明
export HADOOP_HOME=/usr/local/hadoop
export HDFS_DATANODE_USER=hadoop            #运行对应结点的用户名称,因为涉及到文件夹的权限问题,一定要认真设置。
export HDFS_SECONDARYDATANODE_USER=hadoop
export HDFS_NAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop

注意的是,如果之前没有设置JAVA_HOME的环境变量,此处直接这样引用会出现错误,改用绝对路径即可消除错误。

core-site.xml
<configuration>
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://Masterhadoop:9000</value>
                </property>
                <property>
                       <name>hadoop.tmp.dir</name>
                       <value>file:/usr/local/hadoop/tmp</value>
                       <description>Abase for other temporary directories.</description>
              </property>
</configuration>

上述分别设置了主节点的ip和端口以及临时目录的地址(上面创建的tmp目录)。

hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Masterhadoop:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hadoop/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hadoop/hdfs/dn</value>
    </property>
</configuration>

设置了相应的目录和端口,注意与上面创建的目录相对应。
dfs.replication代表备份数量,一般设为3,此处我们设为2即可。

mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>Masterhadoop:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Masterhadoop:19888</value>
    </property>
</configuration>

yarn-site.xml
<configuration>
                <!-- 指定ResourceManager的地址-->
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>Masterhadoop</value>
                </property>
                <!-- 指定reducer获取数据的方式-->
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
                <property>
                    <name>yarn.nodemanager.local-dirs</name>
                    <value>file:///data/hadoop/yarn/nm</value>
                </property>
</configuration>

4. 从节点设置

我们将hadoop目录拷贝到从节点的对应目录,并且修改为hadoop用户所有。
仿照主节点对应的数据目录设置,设置对应的数据目录(即/data一系列目录),并设置为hadoop用户所有。

5. 设置相应的辅助环境变量,方便使用(Hadoop+Spark)

/etc/profile下面添加一下环境变量,修改后source /etc/profile

export HADOOP_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export PATH="${HADOOP_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH"

后续spark也安装在对应的目录下,干脆一块设置了!

6. 启动集群,并验证正确

sbin目录下,使用./start-all.sh脚本启动集群。
启动后运行hdfs dfsadmin -report查看对应的数据结点是否正确。浏览器输入Materhadoop:8088就可以看到我们Hadoop的主界面了。
如果没有启动成功,请查看logs目录下各个节点的日志,查看错误,一般情况都是由于上述的文件设置不正确导致,请仔细查看。

三、Spark3.0全分布式环境搭建

1.下载对应安装包并安装

从官网下载对应资源包并解压至目录usr/local下面,然后我们更改目录名称为spark,并将其权限设置为hadoop用户所有
sudo chown -R hadoop:hadoop spark

2.配置Spark

spark-env.sh配置

conf文件夹下的spark-env.sh.template重命名为spark-env.sh,并添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export SCALA_HOME=/usr/share/scala-2.11
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_HOST=Masterhadoop
export SPARK_LOCAL_DIRS=/usr/local/spark
export SPARK_DRIVER_MEMORY=16g  #内存
export SPARK_WORKER_CORES=2     #cpus核心数

上面使我的设置,如果机器内存不大的话,可以适当调小。

slaves设置

将slaves文件替换为:

Masterhadoop
Slave1hadoop
Slave2hadoop

代表我的集群有三个结点。

3.复制到其他结点并启动。

我们将spark目录复制到其他节点的同一个目录下,并设置为hadoop用户所有。设置完成后,我们在sbin目录下使用start-all.sh启动集群。
启动成功后,我们在浏览器输入Masterhadoop:8080看到有三个结点,就代表我们安装成功了。
如果发现启动错误,请查看logs目录下的日志,自行检查配置文件!

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiaxing.Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值