文章目录
Linux环境安装
具体步骤参考博客。
虚拟机环境准备
虚拟机克隆
在前一步骤中准备好安装了CentOS 7 的虚拟机,克隆一个虚拟机出来,过程如下图:
修改虚拟机IP
-
克隆完成后,启动
bigdata-101
虚拟机,使用root
用户登录,修改虚拟机的IP
地址-
编辑
/etc/sysconfig/network-scripts/ifcfg-ens33
文件,修改成如下内容:vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改内容如下 TYPE=Ethernet BOOTPROTO=static # 设置静态IP NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.101 # 自定义IP地址 PREFIX=24 GATEWAY=192.168.1.2 DNS1=192.168.1.2
-
- 设置虚拟机虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8->更改配置:
将子网IP按下图调整,最后点击 NAT 设置:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210222181122128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTIwNzUzODM=,size_16,color_FFFFFF,t_70)
- 设置VMnet8 属性,保证默认网关、首先DNS服务器和Linux环境配置一致
修改主机名
-
查看当前主机名
hostname
-
执行
vim /etc/sysconfig/network
,输入以下内容:HOSTNAME=bigdata101
-
执行
vim /etc/hosts
,加入以下内容:192.168.1.101 bigdata101 192.168.1.102 bigdata102 192.168.1.103 bigdata103
创建普通用户
-
创建一个普通用户用于日常操作,用户名为
bigdata
,为方便学习记忆,密码也可设置为bigdata
:# 添加用户 useradd bigdata # 设置密码 passwd bigdata
-
给新添加的
hadoop
用户配置 root 权限:# 添加写入模式 chmod u+w /etc/sudoers # 在 root ALL=(ALL) ALL 下添加一行内容 bigdata ALL=(ALL) NOPASSWD: ALL # 重新将文件设置为只读 chmod u-w /etc/sudoers
重启虚拟机
-
为使配置生效,重启虚拟机:
reboot
-
使用
bigdata
用户登录: -
验证虚拟机IP及主机名:
# 查看当前主机IP ifconfig # 查看主机名 hostname
使用Xshell远程访问
在 VMware 上直接操作 Linux 用户体验不友好,故使用 Xshell
来远程访问虚拟机。
- 修改Windows 主机映射文件(Win10 系统文件路径:C:\Windows\System32\drivers\etc)hosts,添加如下内容:
192.168.1.101 bigdata101
192.168.1.102 bigdata102
192.168.1.103 bigdata103
- 使用
Xshell
新建会话,输入相关内容:
集群搭建
安装 JDK
-
在
bigdata101
虚拟机上创建目录,并调整目录所属用户及组sudo mkdir /opt/module /opt/software
-
使用
Xftp
上传JDK
安装包并解压
cd /opt/software tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
-
配置环境变量,验证是否安装成功
sudo touch /etc/profile.d/my_env.sh sudo vi /etc/profile.d/my_env.sh # 在my_env.sh输入以下内容后,保存退出 export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin
如图所示,打印出
Java
版本信息后即表明安装成功。
安装 Hadoop
-
将
hadoop
安装包上传至/opt/software
目录 ; -
解压安装
cd /opt/software tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
-
配置环境变量
sudo vim /etc/profile.d/my_env.sh # 输入以下内容并保存退出 #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
-
刷新环境变量,验证是否安装成功
source /etc/profile.d/my_env.sh hadoop version
关闭防火墙
-
查看防火墙状态
systemctl status firewalld.service
-
关闭防火墙
sudo systemctl stop firewalld.service
-
永久关闭防火墙
sudo systemctl disable firewalld.service
其它节点虚拟机克隆
-
以
bigdata-101
为模板,克隆两个虚拟机,命名为bigdata-102
,bigdata-103
(克隆前需要将bigdata-101
进行关机操作) -
修改对应节点虚拟机IP及主机名
bigdata-102 IP 修改为:192.168.1.102,主机名修改为:bigdata102
bigdata-103 IP 修改为:192.168.1.103,主机名修改为:bigdata103
-
启动三台虚拟机
配置 SSH 无密钥登录
-
生成公钥和私钥
# 执行后连敲三下空格 ssh-keygen -t rsa
-
分发公钥
ssh-copy-id bigdata101 ssh-copy-id bigdata102 ssh-copy-id bigdata103
-
切换到其它虚拟机分别执行生成公钥和私钥、分发公钥操作
-
切换
root
用户,对三台虚拟机分别执行生成公钥和私钥、分发公钥操作 -
验证 SSH 无密钥登录
ssh bigdata101 ssh bigdata102 ssh bigdata103
编写文件集群分发脚本
-
在三台虚拟机上分别安装
rsync
服务sudo yum install -y rsync
-
创建
/home/bigdata/bin
目录cd mkdir bin
-
创建集群分发脚本
cd /home/bigdata/bin touch xsync vi 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 in bigdata101 bigdata102 bigdata103 do echo ------------------- $host -------------- rsync -av $pdir/$fname $user@$host:$pdir done
-
给脚本添加执行权限
chmod u+x xsync
修改Hadoop配置为集群配置
-
HDFS 相关文件配置
-
配置 core-site.xml
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata101:9000</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
注意:/opt/module/hadoop-2.7.2/data/tmp 需提前创建。
-
配置 hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
-
配置 hdfs-site.xml
<!-- 配置文件副本数 --> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.http.address</name> <value>bigdata101:50070</value> </property> <!-- 指定Hadoop辅助名称节点主机配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>bigdata103:50090</value> </property>
-
-
YARN 文件配置
-
配置yarn-site.xml
<!-- Reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata102</value> </property> <!-- 日志聚集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留时间设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
-
配置 yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
-
-
MapReduce 文件配置
-
配置mapred-site.xml
<!-- 指定MR运行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>bigdata101:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>bigdata101:19888</value> </property>
-
配置mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
-
-
slaves 文件配置
vi slaves # 添加以下内容 bigdata101 bigdata102 bigdata103
-
将文件分发到其它节点
xsync /opt/module/hadoop-2.7.2/
集群时间同步
-
使用
bigdata101
为时间服务,其它虚拟机时间跟它保持同步,切换root
用户,在三台虚拟机上安装ntp
服务su yum install -y ntp rpm -qa | grep ntp
-
修改
ntp
配置文件vi /etc/ntp.conf # 添加内容:授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 修改内容:集群在局域网中,不使用其他互联网上的时间 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst # 添加内容:当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步 server 127.127.1.0 fudge 127.127.1.0 stratum 10
-
修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd # 添加以下内容:让硬件时间与系统时间一起同步 SYNC_HWCLOCK=yes
-
重新启动
ntpd
服务并设置开机启动# 启动服务 service ntpd start # 查看服务状态 service ntpd status # 设置开机启动 chkconfig ntpd on
-
其它机器配置(必须使用
root
用户)-
在其他机器配置10分钟与时间服务器同步一次
crontab -e # 编写定时任务如下 */10 * * * * /usr/sbin/ntpdate bigdata101
-