华为云Hadoop与Spark集群环境搭建
Posted E.W.H.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为云Hadoop与Spark集群环境搭建相关的知识,希望对你有一定的参考价值。
华为云Hadoop与Spark集群环境搭建流程
所使用安装包及对应版本:
- JDK 8
- Hadoop 2.7.1
- Spark 3.2.0
Hadoop 2.7.1环境搭建
1、购买华为云服务器
在华为云平台购买3台centos弹性云服务器,一台作为master,另外两台作为slave。它们在同一内网中,相互之间是能ping通的。
2、修改服务器相关配置
1. CloudShell远程登录master主机,使用如下命令修改主机名为master:
# hostname master
再进入/etc/hostname文件,修改文件内容为master,重新建立会话连接,就能看到主机名已经被修改为master。
同理,修改另外两台服务器主机名分别为slave01,slave02。
2. 分别进入三台主机的/etc/hosts文件,修改配置为
127.0.0.1 localhost
192.168.0.90 master
192.168.0.137 slave01
192.168.0.48 slave02
这样,不需要输入IP地址,只需输入相应主机名就能ping通对应主机。
3、配置ssh免密登录
在master主机上输入如下命令并输入对应密码即可登录slave01主机:
# ssh slave01
但在Hadoop集群环境中不可能每次都要master输入slave的密码,所以需要配置ssh免密登录。华为云弹性云服务器默认配置了ssh服务,可通过如下命令查看ssh服务状态,出现sshd进程则表示服务已经启动。
# ps -e | grep ssh
在master主机上输入如下命令,遇到选项全部回车或者yes即可。注:这里需要输入一次slave01和slave02的密码。
# cd /root/.ssh
# ssh-keygen -t rsa
# ssh-copy-id -i /root/.ssh/id_rsa.pub master
# ssh-copy-id -i /root/.ssh/id_rsa.pub slave01
# ssh-copy-id -i /root/.ssh/id_rsa.pub slave01
配置完成后,若通过命令ssh slave01和ssh slave02能直接登录slave01和slave02主机,则免密登录配置完成。
4、JDK安装
在Hadoop官网上看到不同版本的Hadoop支持的jdk版本: Hadoop对应jdk版本
可以看到Hadoop 2.0支持Java 7和Java 8(更高的版本会报错),这里提供本文使用的JDK8网盘链接。
链接:https://pan.baidu.com/s/1vZzs0E_3aSxRuUqoPW8C6g
提取码:vwk5
在master主机的/usr/local目录下新建java文件夹,将下载好的JDK8安装包上传到java文件夹中。并使用如下命令进行压缩包的解压:
# cd /usr/local/java
# tar -zxvf jdk-8u202-linux-x64.tar.gz
效果如图:
使用如下命令打开/etc/profile配置文件:
# vim /etc/profile
在文件末行添加如下java环境变量:
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export CLASSPATH=:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
输入如下命令使配置文件生效:
# source /etc/profile
可输入命令java或javac来查看JDK是否安装成功。
在主机slave01和slave02上使用同样的方法进行JDK的安装,或者使用如下文件拷贝命令将master整个java目录拷贝给slave01和slave02:
# scp -r /usr/local/java/ root@slave01:/usr/local/java/
# scp -r /usr/local/java/ root@slave02:/usr/local/java/
注:slave01与slave02的java环境变量也要记得配。
5、Hadoop集群搭建
1、环境配置
本文搭建的Hadoop平台版本为2.7.1,这里附上百度网盘链接。
链接:https://pan.baidu.com/s/1HwmgNu502HmYBcZRhbUjgg
提取码:9t4d
在master主机的/usr/local目录下新建hadoop文件夹,将下载好的hadoop压缩包上传到该文件夹中,使用如下命令进行解压:
# cd /usr/local/hadoop
# tar -zxvf hadoop-2.7.1.tar.gz
修改配置文件/etc/profile,添加如下配置:
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
输入命令使配置文件生效:
# source /etc/profile
2、修改相关文件
修改master主机中Hadoop的如下配置文件,这些配置文件都位于/usr/local/hadoop/hadoop-2.7.1/etc/hadoop目录下。
- 修改slaves文件,这里让master节点主机仅作为NameNode节点使用。
slave01
slave02
- 修改hadoop-env.sh export JAVA_HOME项:
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
注:这里需要显示申明JAVA_HOME,不然会在运行的时候出现找不到java路径的错误。
- 修改core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.7.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
- 修改hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.7.1/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.7.1/hdfs/data</value>
</property>
</configuration>
- 修改mapred-site.xml:
将mapred-site.xml.template文件内容复制到mapred-site.xml,再修改mapred-site.xml文件。相关命令和修改内容如下:
# cd /usr/local/hadoop/hadoop-2.7.1/etc/hadoop
# cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改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.hostname</name>
<value>master</value>
</property>
</configuration>
3、slave节点配置Hadoop
通过如下命令将master主机的hadoop目录拷贝给slave01和slave02。
# scp -r /usr/local/hadoop/ root@slave01:/usr/local/hadoop/
# scp -r /usr/local/hadoop/ root@slave02:/usr/local/hadoop/
再配置/etc/profile文件中Hadoop相关环境变量即可。
4、启动Hadoop集群
在master主机中输入如下命令即可启动Hadoop集群:
# cd /usr/local/hadoop/hadoop-2.7.1
# bin/hdfs namenode -format
# sbin/start-all.sh
在master主机中输入命令jps即可看到如下进程信息。
在slave01中输入命令jps即可看到如下进程信息。
注:关闭Hadoop集群命令如下,尽量保证服务有开就有停,可以避免很多问题出现。
# sbin/stop-all.sh
5、查看Hadoop管理页面
浏览器输入http://master公网IP:50070即可访问到如下Hadoop管理页面。
注:若打不开Hadoop管理页面,可能是HDFS中NameNode的默认端口50070没有开放。在华为云服务器安全组中添加如下规则即可。
Spark 3.2.0集群环境搭建
1、Spark安装
Spark分布式集群的安装环境,需要事先配置好Hadoop的分布式集群环境。可以去Apache官网下载与Hadoop匹配的Spark版本。
这里附上本文使用的Spark 3.2.0网盘链接。
链接:https://pan.baidu.com/s/1R40ZXixzRyPT04uGhBgKfw
提取码:35fl
这里同样先搭建master主机的Spark环境,再通过文件拷贝搭建slave01与slave02环境。在master主机的/usr/local目录下新建spark文件夹,将下载好的Spark压缩包上传到该文件夹中,使用如下命令进行解压,并修改文件夹名称为spark-3.2.0:
# cd /usr/local/spark
# tar -zxvf spark-3.2.0-bin-hadoop2.7.tgz
# mv spark-3.2.0-bin-hadoop2.7 spark-3.2.0
打开/etc/profile文件,添加如下配置:
export SPARK_HOME=/usr/local/spark/spark-3.2.0
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
并使用如下命令使配置生效:
# source /etc/profile
2、Spark文件配置
在master主机上进行如下操作:
- 配置workers文件:
将workers.template 拷贝到workers
# cd /usr/local/spark/spark-3.2.0/conf
# cp workers.template workers
workers文件设置Worker节点,把默认内容localhost替换成如下内容:
slave01
slave02
- 配置spark-env.sh文件:
将 spark-env.sh.template 拷贝到 spark-env.sh
#cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,添加如下内容:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-2.7.1/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.1/etc/hadoop
export SPARK_MASTER_IP=192.168.0.90
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
注:
① SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址。
② 最后一行的JAVA_HOME一定要申明,不然会出现slave节点找不到JAVA_HOME的错误。
配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上。在Master主机上执行如下命令:
# scp -r /usr/local/spark/ root@slave01:/usr/local/spark/
# scp -r /usr/local/spark/ root@slave02:/usr/local/spark/
注:别忘了配置slave01与slave02的/etc/profile文件。
3、启动Spark集群
1、启动Hadoop集群
启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:
# cd /usr/local/hadoop/hadoop-2.7.1
# sbin/start-all.sh
2、启动Spark集群
- 启动Master节点
在Master节点主机上运行如下命令:
# cd /usr/local/spark/spark-3.2.0
# sbin/start-master.sh
在Master节点上运行jps命令,可以看到多了个Master进程:
- 启动所有Slave节点
在Master节点主机上运行如下命令:
# sbin/start-slaves.sh
分别在slave01、slave02节点上运行jps命令,可以看到多了个Worker进程
3、在浏览器上查看Spark独立集群管理器的集群信息
打开浏览器,访问http://master公网IP:8080,如下图:
注:若无法访问,可能是安全组8080端口未开放,安全组中开放8080端口即可。
4、关闭Spark集群
1、关闭master节点
# sbin/stop-master.sh
2、关闭Worker节点
# sbin/stop-slaves.sh
3、关闭Hadoop集群
# cd /usr/local/hadoop/hadoop-2.7.1
# sbin/stop-all.sh
参考文档:
http://dblab.xmu.edu.cn/blog/1177-2/
http://dblab.xmu.edu.cn/blog/1187-2/
以上是关于华为云Hadoop与Spark集群环境搭建的主要内容,如果未能解决你的问题,请参考以下文章