在centos7上搭建hadoop、spark集群

1.安装jdk:

在oracle官网上下载jdk(最后市1.8以上),然后安装jdk(在linux上安装就是解压缩,一般在官网上下载的都是.tar后缀的文件),最后配置/etc/profile

下载jdk链接https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

安装jdk:tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module

配置/etc/profile

添加jdk的安装路径到profile文件最后,如下:

#JAVA_HOME

export JAVA_HOME=/opt/module/jkd1.8.0_281

export PATH=$PATH:$JAVA_HOME/bin

 

2.安装hadoop:

下载hadoophttps://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz

安装hadoop:tar -zxvf hadoop-2.10.1.tar.gz -C /opt/module

配置/etc/profile,如下:

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-2.10.1

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbi

最后$source /etc/profile

3.集群部署规划

  master  slave1 slave2
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

 

4.配置hadoop集群:

配置文件都在hadoop安装目录下的etc/Hadoop下。

核心配置文件

配置core-site.xml,编写如下配置:

<!-- 指定HDFS中NameNode的地址 -->

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://master:9000</value>

</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->

<property>

  <name>hadoop.tmp.dir</name>

  <value>/opt/module/hadoop-2.10.1/data/tmp</value>

</property>

 

HDFS配置文件

配置hadoop-env.sh

#配置jdk的安装路径
export JAVA_HOME=/opt/module/jdk1.8.0_144

 

配置hdfs-site.xml

<!-- 指定Hadoop辅助名称节点主机配置 -->

<property>

  <name>dfs.namenode.secondary.http-address</name>

  <value>slave2:50090</value>

</property>

 

YARN配置文件

配置yarn-env.sh

#配置jdk的安装路径
export JAVA_HOME=/opt/module/jdk1.8.0_144

 

配置yarn-site.xml

<!-- Reducer获取数据的方式 -->

<property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

<!-- 指定ResourceManager的地址 -->

<property>

  <name>yarn.resourcemanager.hostname</name>

  <value>slave1</value>

</property>

<property>

  <name>yarn.nodemanager.pmem-check-enabled</name>

  <value>false</value>

</property>

<property>

  <name>yarn.nodemanager.vmem-check-enabled</name>

  <value>false</value>

</property>


 

 MapReduce配置文件

配置mapred-env.sh

#配置jdk的安装路径
export JAVA_HOME=/opt/module/jdk1.8.0_144

 

配置mapred-site.xml

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

在该文件中添加如下配置

<!-- 指定MR运行在Yarn上 -->

<property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

</property>

 

配置slaves(这个文件不允许有空行和多余的空格)

master

slave1

slave2

 

5.用rsync在集群上分发配置好的Hadoop配置文件

xsync /opt/module/hadoop-2.10.1(xsync是我配置的升级版rsync,只需要在用户的home目录下建一个bin文件夹,再添加一个包含以下脚本的文件即可,我把这文件命名为xsync)

#!/bin/bash
#1
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi
#2
p1=$1
fname=`basename $p1`
echo fname=$fname
#3
pdir=`cd -P $(dirname $p1);pwd`
echo pdir=$pdir
#4
user=`whoami`
#5
for((host=1;host<3;host++));do
    echo -----------------slave$host-------------------------
    rsync -rvl $pdir/$fname $user@slave@host:$pdir
done

 6.配置SSH无密登录配置(每台都要配)

在当前用户的家目录下生成密钥对

ssh-keygen -t rsa

拷贝公钥到其他主机

ssh-copy-id slave1

ssh-copy-id slave2

ssh-copy-id master

群起HDFS和yarn(启动的脚本都在安装目录下的sbin文件夹下)

sbin/start-dfs.sh(在master启动NameNode)

sbin/start.yarn.sh(在slave1启动RecourceManager)

7.配置集群时间同步

(1)时间服务器的配置(master)

 a.检查ntp是否安装

rpm -qa | grep ntp

(结果)

ntp-4.2.6p5-10.e16.centos.x86_64

fontpackages-filesystem-1.41-1.1.e16.noarch

ntpdate-4.2.6p5-10.e16.centos.x86_64

b.修改ntp配置文件

vim /etc/ntp.conf

修改一(授权192.168.100.0-192.168.100.255网段上的所有机器可以从这台机器上查询和同步时间)

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 为

restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap

修改二(集群在局域网中,不使用其他互联网上的时间)

server0.centospool.ntp.org iburst

server1.centospool.ntp.org iburst

server2.centospool.ntp.org iburst

server3.centospool.ntp.org iburst为

#server0.centospool.ntp.org iburst

#server1.centospool.ntp.org iburst

#server2.centospool.ntp.org iburst

#server3.centospool.ntp.org iburst

添加三(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为机器的其他节点提供时间同步)

server 127.127.1.0

fudge 127.127.1.0 stratum 10

c.修改/etc/sysconfig/ntpd文件

让硬件时间与系统时间一起同步

SYNC_HWCLOCK=yes

d.重启ntpd服务

service ntpd restart

f.设置ntpd服务开机启动

service enable ntpd

(2)其他机器的配置

在其他机器配置10分钟与时间服务器同步一次

crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate master

 

8.spark集群的配置(yarn模式)

下载sparkhttps://downloads.apache.org/spark/spark-3.0.2/spark-3.0.2-bin-hadoop2.7.tgz

安装hadoop:tar -zxvf spark-3.0.2-bin-hadoop2.7.tgz -C /opt/module

进入安装目录下的conf

配置spark.env.sh(在文件末尾添加即可)

export JAVA_HOME=/opt/module/jdk1.8.0_281
YARN_CONF_DIR=/opt/module/hadoop-2.10.1/etc/hadoop

export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://master:50070/directory
-Dspark.history.retainedApplications=30"

配置spark.defaults.conf(在文件末尾添加即可)

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:50070/directory

spark.yarn.historyServer.address=master:18080
spark.history.ui.port=18080

 

posted @ 2021-04-23 10:48  15python  阅读(268)  评论(0编辑  收藏  举报