在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