hadoop2.7.7+spark集群搭建

hadoop+spark集群搭建

1、版本介绍

本次配置使用的版本是 VMware 16+hadoop 2.7.7+java 8u191+ubuntu 20.04.1+spark-3.0.1-bin-hadoop2.7+scala 2.12.12

master:ip地址 192.168.14.129(master、namenode)

slave1: ip地址 192.168.14.130(worker、datanode)

slave2: ip地址 192.168.14.131(worker、datanode)

参考链接:

http://dblab.xmu.edu.cn/blog/1177-2/

https://blog.csdn.net/qq_38038143/article/details/83050840

https://blog.csdn.net/u010171031/article/details/53484138

本文记录了尝试过程,**首先搭建的是hadoop的伪分布式,后面改成了集群。**如果一开始hadoop就想搭集群,则可参考链接1、3。如果你只想搭伪分布式,做到第四步就好啦~

2、安装java

放在目录/home/hadoop/java下

#解压jdk
sudo tar -zxvf jdk-8u191-linux-x64.tar.gz

#修改环境变量:
sudo vi ~/.bashsrc
在文件末尾追加一下内容:
#set oracle jdk environment
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_191  ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#使环境变量马上生效:
source ~/.bashrc

#查看Java版本,检查是否安装成功:
java -version

3、Hadoop配置

在目录/home/hadoop/hadoop下

3.1、解压文件

tar -zvxf hadoop-2.7.7.tar.gz

3.2、配置环境变量

#打开配置文件
vim ~/.bashrc

#追加内容
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.7.7
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

#使环境变量马上生效:
source ~/.bashrc

#查看hadoop版本,检查是否安装成功:
hadoop version

4.Hadoop伪分布

4.1 配置IP映射:

修改文件:sudo vim /etc/hosts
在文件中添加:(master 为主机名,根据自身linux设置)

127.0.0.1  master

重启网路:

service networking restart

4.2 免密登录:

安装ssh:

sudo  apt-get install  openssh-server

生成 ~/.ssh目录:

ssh  master
# 输入密码登录后,执行exit退出
exit

执行命令,生成公钥、密钥:

ssh-keygen -t rsa    #一直回车
cat  ~/.ssh/id_rsa.pub  >>  ~/.ssh/authorized_keys

再次执行登录命令:

ssh  master

若不再使用命令即可登录,即免密登录成功。
免密登录成功

4.3 修改Hadoop配置文件:

注:以下配置文件中的master是根据4.1 IP映射配置的127.0.0.1,将下列所有的master根据4.1中写的主机名修正。

4.3.1 core-site.xml
<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop-2.7.7/tmp</value>
                <description>注释</description>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
        </property>
</configuration>
4.3.2 hdfs-site.xml
<configuration>

        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop-2.7.7/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop-2.7.7/dfs/data</value>
        </property>
</configuration>

4.3.3 mapred-site.xml

由于配置文件只存在mapred-site.xml.template,所以先复制mapred-site.xml:

cp  mapred-site.xml.template  mapred-site.xml

在mapted-site.xml中添加:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobtracker.address</name>
                <value>hadoop1:9001</value>
        </property>
</configuration>

4.3.4 yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>hadoop1:8099</value>
        </property>

</configuration>

4.4 启动Hadoop

4.4.1 创建目录:
cd /home/hadoop/hadoop/hadoop-2.7.7
mkdir -p  dfs/{name,data}  tmp

4.4.2 格式化
hdfs namenode -format

结果:

格式化结果

出现 0 则成功,1则失败。
注:若失败,检查上述配置是否错误,修正后,需要删除 dfs、tmp目录,然后新建dfs、tmp目录,再执行格式化命令。

4.4.3 启动HDFS
start-dfs.sh

浏览器可访问:localhost:50070

4.4.4 启动Yarn

start-yarn.sh

浏览器访问:master:8099/cluster。伪分布式搭建成功。

5、Hadoop集群

以第四步操作的虚拟机作为master

5.1 修改/etc/hosts文件,IP映射

配置如下:

127.0.0.1 localhost
192.168.14.129 master
192.168.14.130 slave1
192.168.14.131 slave2

5.2 修改配置文件

在hadoop安装目录下修改

5.2.1 修改etc/hadoop/slaves文件,添加
slave1
slave2

如图所示

slaves配置

5.2.2 修改hdfs-site.xml,内容如下
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop-2.7.7/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop-2.7.7/dfs/data</value>
        </property>
        <property>
                <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
                <value>false</value>
        </property>
</configuration>

5.3 复制虚拟机

关闭master虚拟机,然后vmware->虚拟机->管理->克隆(克隆出两台独立的虚拟机slave1、slave2)

5.4配置slave节点

为了更好的区分主机,修改其显示的主机名,执行如下命令

sudo vim /etc/hostname

slave1的/etc/hostname改成如下配置:

slave1

slave2的/etc/hostname改成如下配置:

slave2

然后重启虚拟机,配置即生效。

5.5 配置ssh无密码登录本机和访问集群机器

三台主机电脑分别运行如下命令,测试能否连接到本地localhost

ssh localhost

在保证了三台主机电脑都能连接到本地localhost后,还需要让master主机免密码登录slave1和slave2主机。在master执行如下命令,将master的id_rsa.pub传送给两台slave主机

scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@slave2:/home/hadoop/

接着在slave01、slave02主机上将master的公钥加入各自的节点上,在slave01和slave02执行如下命令:

#将master公钥加入自己节点
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
#删除该文件
rm ~/id_rsa.pub

因为master主机和slave1、slave2主机的用户名一样,那么在master主机上直接执行如下测试命令,即可让master主机免密码登录slave1、slave2主机。

ssh slave1

登录成功如图:

slave登录成功

5.6.启动集群

在master和slave1、slave2节点下执行步骤1、2(hadoop安装目录)

  1. 删除已有的 dfs tmp目录和logs日志。
rm -rf  dfs  tmp  logs/*

​ 2.新建 dfs tmp目录:

mkdir -p  dfs/{name,data}  tmp

格式化master节点(只需要格式化master,注:每次只能格式化一次,若还需第二次格式化则先删除,后创建dfs 和 tmp目录):

hdfs namenode -format

如果输出的status code为0说明格式化完成,若为1的话说明出现错误
然后启动集群

start-all.sh

可能需要等待一段时间,启动完成后会在可以通过jps命令查看
在master节点上会出现

DataNode
RecourceManager
Jps
NodeManager
NameNode
SecondaryNameNode

slave节点上会出现

DataNode
Jps
NodeManager

6 安装scala

6.1 下载

sclca的官方下载地址:http://www.scala-lang.org/download/

6.2 安装

直接把压缩文件解压缩到/home/hadoop目录下

sudo tar -xvf scala-2.12.12.tgz -C /hoom/hadoop

修改目录的名字为scala

sudo mv scala-2.12.12 scala

6.3 配置

然后我们需要在/etc/profile中添加SCALA_HOME属性

sudo vim /etc/profile

在最后添加

export SCALA_HOME=/home/hadoop/scala
export PATH=${SCALA_HOME}/bin:$PATH

重新载入配置source /etc/profile后输入scala能进入scala控制台说明配置成功

7 安装spark

7.1 下载

官网下载地址:http://spark.apache.org/downloads.html

7.2 安装

直接把压缩文件解压缩到/home/hadoop目录下

sudo tar -xvf spark-3.0.1-bin-hadoop2.7.tar -C /hoom/hadoop

修改目录的名字为spark

sudo mv spark-3.0.1-bin-hadoop2.7 spark

修改权限

sudo chmod a+w -R spark

修改用户和用户组

sudo chown hadoop:hadoop -R hadoop

7.3 配置

首先在系统路径中添加安装路径,打开/etc/profile

sudo vim /etc/profile

在最下面添加

export SPARK_HOME=/home/hadoop/spark
export PATH=${SPARK_HOME}/bin:$PATH

通过source /etc/profile更新系统配置

然后配置spark的集群环境

编辑/home/hadoop/spark/conf/spark-env.sh

vim /home/hadoop/spark/conf/spark-env.sh

添加上

export SCALA_HOME=/home/hadoop/scala
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_191
export SPARK_MASTER_IP=192.168.14.129
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-2.7.7/etc/hadoop

在/home/spark/spark/conf/slaves中添加节点的信息

slave1
slave2

8 slave安装scala和spark

将master节点的spark和scala目录打包发给slave1、slave2(最好放在和master上对应目录),然后在slave1、slave2下如步骤6、7中配置环境变量。

传文件如图:

传scala

slave机器中解压到当前目录就好,然后进行相应的环境变量配置。

9 启动hadoop&spark集群

要启动spark的集群需要先启动hadoop的集群,由于hadoop和spark的启动命令都是start-all.sh
所以如果直接使用start-all.sh会导致系统路径的冲突,所以启动的时候需要用绝对路径来启动(如果事先启动了可用stop-all.sh停止)
启动hadoop

/home/hadoop/hadoop/hadoop-2.7.7/sbin/start-all.sh

启动spark

/home/hadoop/spark/sbin/start-all.sh

如果启动成功,使用jps命令查看

master节点会出现

DataNode
RecourceManager
Jps
NodeManager
NameNode
SecondaryNameNode
Master

slave节点会出现

DataNode
Jps
NodeManager
Worker

9 集群测试

尝试在spark集群中跑个简单的测试程序,进入目录/home/hadoop/spark,输入以下命令:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 /home/hadoop/spark/examples/jars/spark-examples_2.12-3.0.1.jar 100

打开集群管理页面查看应用运行情况,如下图所示:

master://8080

spark成功

10 踩坑总结

10.1 步骤9中启动集群

描述:

原本想着在hadoop的安装目录和spark的安装目录下分别执行sbin/start-all.sh可以区分出路径

但在spark下执行启动的是hadoop

结论:

启动spark需要绝对路径,hadoop不需要

10.2 slave1: ssh: connect to host slave1 port 22: No route to host

描述:

在一次挂起虚拟机在运行后,运行ssh slave1即报这个错。

在slave1的终端输入ifconfig显示inet127.0.0.1

解决:

重启机器就好了(hhh不明觉厉)

总算装完了!果然ddl是第一生产力

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值