WHCSRL 技术网

集群安装搭建赛题解析

 系列文章目录

“红亚杯”-大数据环境搭建与数据采集技能线上专题赛赛题

构建数据仓库赛题解析

目录

集群安装搭建赛题解析

前言

在此鸣谢

资料链接

VMware虚拟机练习配置

训练时一定要多拍快照防止出错!!!

配置本地YUM源

基础环境配置(20 / 20分)

主机名

防火墙

IP映射

时区同步

NTP同步

定时任务

远程登录ssh

Java环境配置

 Zookeeper集群环境搭建(20 / 20分)

zookeeper基础配置

zoo.cfg配置文件

zookeeper相关文件夹创建

myid修改

启动zookeeper服务

zookeeper状态查询

Hadoop完全分布式集群搭建(30 / 30分)

hadoop基础配置

hadoop-env.sh

core-site.xml

hdfs-site.xml

yarn-env.sh

yarn-site.xml

 mapred-site.xml

节点文件设置

namenode格式化

启动hadoop集群


集群安装搭建赛题解析

前言

根据“红亚杯”-大数据环境搭建与数据采集技能线上专题赛以及鈴音.博主文章结合整理,附上资料链接。

在此鸣谢

鈴音.

资料链接

链接:https://pan.baidu.com/s/1ytGL3cLGQxGltl5bHrSBQQ 
提取码:yikm 

VMware虚拟机练习配置

创建三台虚拟机

配置如下

可以选择最小化安装

(最小化安装如果要使用vim和ifconfig命令需要进行安装)

  1. yum -y install vim*
  2. yum -y install net-tools.x86_64

 开启ens33

 配置静态ip

修改网络服务设置

vim /etc/sysconfig/network-scripts/ifcfg-ens33

 

 在此基础上修改

 :wq保存退出

重启网卡

service network restart

 

查看网络状态

ifconfig

 克隆出两台机器,并修改ip地址

192.168.111.4,192.168.111.5

用远程工具进行连接,博主用的是finalshell强烈安利

 下载地址:SSH工具 客户端

将准备好的package传入虚拟机中,链接在文章最前面!

 准备就绪,开搞开搞!

训练时一定要多拍快照防止出错!!!

配置本地YUM源

Centos自带的YUM源更新太慢,可以使用更改本地源的方法来安装软件。

我们通常使用 yum install 命令来在线安装 linux系统的软件, 这种方式可以自动处理依赖性关系,并且一次安装所有依赖的软体包。 

yum的配置文件在 /etc/yum.repos.d 目录下, 其中有多个配置文件,每一个配置文件中都可以配置一个或多个 repository。

yum仓库就是使用yum命令下载软件的镜像地址。国内的仓库可以使用阿里源、163、清华大学等

 配置本地源:通过比赛平台提供源文件下载路径,将本地源文件下载到/etc/yum.repos.d/目录下(三台机器都执行)。

  • 发信号给yum进程:pkill -9 yum

  • 进入yum源配置文件:cd /etc/yum.repos.d

  • 删除所有文件:rm -rf  *

  • 下载yum源:wget http://xxxx/bigdata/repofile/bigdata.repo

  • 清除YUM缓存:yum clean all

基础环境配置(20 / 20分)

1.修改主机名,便于识别节点;
2.工具包已保存在环境中;
3.修改hosts文件,添加集群节点映射,按照给出的节点IP和对应的主机名进行设置;
4.要求各节点时区修改为中国时区( 中国标准时间CST+8)
5.安装ntp服务,要求主节点master为本地时钟源,从节点设置定时任务同步本地时间;
6.集群中数据传输需要节点之间免密访问,要求设置主节点之间到从节点的免密访问;
7.Hadoop技术基于Java语言,要求本地源下载对应安装包进行安装配置,注意安装路径要求,无需更改文件名,注意添加环境变量。

考核条件如下:

主机名

1. 修改主机名(分别为master、slave1、slave2,临时生效即可,无需重启环境)(1.00 / 1分)

操作环境: master、slave1、slave2

  1. hostnamectl set-hostname master
  2. bash

防火墙

2. 判断是否关闭防火墙(1.00 / 1分)

操作环境: master、slave1、slave2

  1. systemctl status firewalld
  2. systemctl stop firewalld

 

 永久关闭防火墙和selinux

  1. systemctl disable firewalld
  2. vim /etc/sysconfig/selinux

 

 

IP映射

3. hosts文件添加映射(内网IP)(1.00 / 1分)

操作环境: master、slave1、slave2

vim /etc/hosts

 

 ping一下测试

时区同步

4. 时区更改(中国时区)(1.00 / 1分)

操作环境: master、slave1、slave2

 tzselect 

 依次输入5911

tzselect只是帮我们把选择的时区显示出来,并不会实际生效,也就是说它仅仅告诉我们怎么样去设置环境变量TZ。

如果要永久更改时区,按照tzselect命令提示的信息,在.profile或者/etc/profile中设置正确的TZ环境变量并生效。

设置TZ环境变量:TZ='Asia/Shanghai'; “export TZ

输入:

echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile

 查看时间:

date

 

NTP同步

NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。 NTP服务器就是利用NTP协议提供时间同步服务的。

ntp软件(支持ntp协议) CentOS6自带CentOS7需要安装的。图中,可以看到有一个服务器作为时钟源,其他主机去同步服务器上的时间。

 

5. 确认NTP服务(1.00 / 1分)

操作环境: master、slave1、slave2

下载ntp服务:

 yum -y install ntp

 

6. 屏蔽默认server,设置master为本地时钟源,服务器层级设为10(1.00 / 1分)

操作环境: master

 vim /etc/ntp.conf 

 在最后一行加入

  1. server 127.127.1.0
  2. fudge 127.127.1.0 stratum 10

7. 主节点开启NTP服务(1.00 / 1分)

操作环境: master

/bin/systemctl restart ntpd.service

slaves手动同步时间(slave1,slave2上 ):

ntpdate master

定时任务

crontab是用来定期执行程序的命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

8. 从节点在早十-晚五时间段内每隔半个小时同步一次主节点时间(24小时制、用户root任务调度crontab)(1.00 / 1分)

操作环境: slave1、slave2

写一个定时任务:crontab -e

键入 i ,进入编辑模式

输入内容:

*/30 10-17 * * * usr/sbin/ntpdate master

查看定时任务列表:crontab -l

远程登录ssh

RSA 即可作为数字签名,也可以作为加密算法(未被完全攻破、暴力破解)。

DSA 只能用于数字签名,而无法用于加密(某些扩展可以支持加密);

RSA 与 DSA 都是非对称加密算法,相同密钥长度RSA算法和DSA算法安全性相当。

RSA or DSA, this is a question!

Master节点要把自身的公钥拷贝到自身的authorized_keys中。

目的:将 .ssh/id_rsa.pub放到其他机器上的authorized_keys中。

注意:如果是非root用户,需要修改文件权限 chmod 600 ~/.ssh/authorized_keys

ssh-keygen

 一直回车即可

什么是authorized_keys : authorized_keys是linux操作系统下,专门用来存放公钥的地方,只要公钥放到了服务器的正确位置,并且拥有正确的权限,你才可以通过你的私钥,免密登录linux服务器。

将.ssh/id_rsa. pub中的公钥存到authorized_keys 中:

  1. cd .ssh
  2. ls
  3. cat id_rsa.pub  >> authorized_keys
  4. ssh-copy-id localhost

9. 实现主机自身localhost免密访问(内回环)(2.00 / 2分)

操作环境: master

ssh localhost

10. 主节点生成公钥文件(数字签名RSA,用户root,主机名master)(1.00 / 1分)

操作环境: master

11. 实现master对slave1的免密登陆(2.00 / 2分)

操作环境: master

  1. scp -r .ssh root@slave1:~/
  2. ssh slave1
  3. exit

 

 12. 实现master到slave2的免密访问(2.00 / 2分)

操作环境: master

  1. scp -r .ssh root@slave2:~/
  2. ssh slave2
  3. exit

Java环境配置

13. 将jdk安装包解压到/usr/java目录(安装包存放于/usr/package/,解压后路径不做修改,默认为/usr/java/jdk1.8.0_171,其他安装同理)(2.00 / 2分)

操作环境: master、slave1、slave2

  1. mkdir -p /usr/java
  2. tar -zxvf /usr/package/jdk-8u171-linux-x64.tar.gz -C /usr/java/

 

14. /etc/profile中配置JAVA系统环境变量($JAVA_HOME)(1.00 / 1分)

操作环境: master、slave1、slave2

vim /etc/profile

 在其中加入:

  1. #java
  2. export JAVA_HOME=/usr/java/jdk1.8.0_171
  3. export PATH:$PATH:$JAVA_HOME/bin

 生效环境变量

source /etc/profile

15. 验证jdk是否安装成功(2.00 / 2分)

操作环境: master、slave1、slave2

  1. scp -r /usr/java/ root@slave1:/usr/
  2. scp -r /usr/java/ root@slave2:/usr/
  3. scp -r /etc/profile root@slave1:/etc/
  4. scp -r /etc/profile root@slave2:/etc/
  5. java -version

 

 Zookeeper集群环境搭建(20 / 20分)

Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

网站架构逐渐从集中式转变成分布式,提供更强的计算、存储能力,避免单点故障等问题。

举例说明:当有一项任务分配到某个团队之后,团队内部的成员开始各司其职,然后把工作结果统一汇总给团队主管,由团队主管再整理团队的工作成果汇报给公司。

人遇到问题可以沟通,机器如何沟通?如何保证分布式系统中保证数据的一致性和可用性?

zookeeper就是各个服务或节点之间进行协调的服务或中间人,同步数据,同步信息

 

1.配置文件参考:

  1. tickTime=2000
  2. initLimit=10
  3. syncLimit=5
  4. clientPort=????
  5. # 配置数据存储路径
  6. ????
  7. # 配置日志文件路径
  8. ????
  9. # 配置集群列表
  10. server.1=????
  11. server.2=????
  12. server.3=????

2.Zookeeper一共有三个端口供使用:

2181:对clinet端提供服务
2888:集群内机器通讯使用(Leader监听此端口)
3888:选举leader

3.配置集群时,端口使用如下:

使用server.A=B:C:D
A:表示一个数字,这个数字表示第几个服务器,对应myid文件中的序号
B:服务器地址,也就是ip地址
C:本台服务器与集群中的leader服务器交换信息端口
D:如果leader挂了就需要这个端口重新选举

考核条件如下:

zookeeper基础配置

1. 将zoo安装包解压到指定路径/usr/zookeeper(安装包存放于/usr/package/)(1.00 / 1分)

操作环境: master、slave1、slave2

  1. mkdir -p /usr/zookeeper
  2. tar -zxvf /usr/package/zookeeper-3.4.10.tar.gz -C /usr/zookeeper/

2. 配置zookeeper系统环境变量($ZOOKEEPER_HOME)(1.00 / 1分)

操作环境: master、slave1、slave2

vim /etc/profile

在其中加入:

  1. #zookeeper
  2. export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
  3. export PATH=$PATH:$ZOOKEEPER_HOME/bin

 

 生效环境变量

source /etc/profile

zoo.cfg配置文件

3. 修改配置文件zoo.cfg(1.00 / 1分)

 操作环境: master、slave1、slave2

  1. cd /usr/zookeeper/zookeeper-3.4.10/conf
  2. ll
  3. mv zoo_sample.cfg zoo.cfg

 

4. 设置数据存储路径(dataDir)为/usr/zookeeper/zookeeper-3.4.10/zkda(1.00 / 1分)

操作环境: master、slave2、slave1

5. 设置日志文件路径(dataLogDir)为/usr/zookeeper/zookeeper-3.4.10/zkdatalog(1.00 / 1分)

操作环境: master、slave1、slave2

6. 设置集群列表(master为1号服务器,slave1为2号,slave2为3号)(2.00 / 2分)

操作环境: master、slave1、slave2

vim zoo.cfg

 进行如下修改:

修改dataDir=/tmp/zookeeper

dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata

在文末插入:

  1. dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
  2. server.1=master:2888:3888
  3. server.2=slave1:2888:3888
  4. server.3=slave2:2888:3888

 

zookeeper相关文件夹创建

7. 创建所需数据存储文件夹(2.00 / 2分)

操作环境: master、slave1、slave2

8. 创建所需日志存储文件夹(2.00 / 2分)

操作环境: master、slave1、slave2

  1. cd /usr/zookeeper/zookeeper-3.4.10/
  2. mkdir zkdata zkdatalog
  3. ll

myid修改

9. 数据存储路径下创建myid,写入对应的标识主机服务器序号(2.00 / 2分)

操作环境: master、slave1、slave2

master主机中,设置服务器id为1

slave1设置为2,slave2设置为3

  1. cd zkdata
  2. vim myid

 

 

  1. scp -r /etc/profile root@slave1:/etc/
  2. scp -r /etc/profile root@slave2:/etc/
  3. scp -r /usr/zookeeper/ root@slave1:/usr/
  4. scp -r /usr/zookeeper/ root@slave2:/usr/

 

  1. source /etc/profile
  2. vim /usr/zookeeper/zookeeper-3.4.10/zkdata/myid

 

 

启动zookeeper服务

10. 启动zookeeper服务(2.00 / 2分)

操作环境: master、slave1、slave2

  1. cd /usr/zookeeper/zookeeper-3.4.10/
  2. bin/zkServer.sh start

 

zookeeper状态查询

11. 查看zoo集群状态(5.00 / 5分)

操作环境: master、slave1、slave2

bin/zkServer.sh status

 

 

Hadoop完全分布式集群搭建(30 / 30分)

Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。

  • HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
  • MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
配置文件配置对象主要内容
hadoop-env.shhadoop运行环境用来定义Hadoop运行环境相关的配置信息;
core-site.xml集群全局参数定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;
hdfs-site.xmlHDFS参数定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;
mapred-site.xmlMapReduce参数包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等;
yarn-site.xml集群资源管理系统参数配置ResourceManager ,nodeManager的通信端口,web监控端口等;

Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),

  • String:指示hadoop在classpath中查找该资源;
  • Path:指示hadoop在本地文件系统中查找该资源。
  1. <configuration>
  2. <property>
  3. <name>fs.default.name</name>
  4. <value>????</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>????</value>
  9. </property>
  10. </configuration>

考核条件如下:

hadoop基础配置

1. 将Hadoop安装包解压到指定路径/usr/hadoop(安装包存放于/usr/package/)(1 / 1分)

操作环境: master、slave1、slave2

  1. mkdir -p /usr/hadoop
  2. tar -zxvf /usr/package/hadoop-2.7.3.tar.gz -C /usr/hadoop/

2. 配置Hadoop环境变量,注意生效($HADOOP_HOME)(2 / 2分)

操作环境: master、slave1、slave2

vim /etc/profile

 在其中加入:

  1. #hadoop
  2. export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
  3. export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
  4. export PATH=$PATH:$HADOOP_HOME/bin

 生效环境变量

source /etc/profile

hadoop-env.sh

3. 配置Hadoop运行环境JAVA_HOME(1 / 1分)

操作环境: master、slave1、slave2

  1. cd /usr/hadoop/hadoop-2.7.3/etc/hadoop/
  2. ll
  3. vim hadoop-env.sh

 在28行加入:

export JAVA_HOME=/usr/java/jdk1.8.0_171

 

core-site.xml

4. 设置全局参数,指定NN的IP为master(映射名),端口为9000(1 / 1分)

操作环境: master、slave1、slave2

5. 指定存放临时数据的目录为hadoop安装目录下/hdfs/tmp(绝对路径,下同)(2 / 2分)

操作环境: master、slave1、slave2

编辑core-site.xml

vim core-site.xml

 添加以下内容:

  1. <property>
  2. <name>fs.default.name</name>
  3. <value>hdfs://master:9000</value>
  4. </property>
  5. <property>
  6. <name>hadoop.tmp.dir</name>
  7. <value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
  8. <description>A base for other temporary directories.</description>
  9. </property>
  10. <property>
  11. <name>io.file.buffer.size</name>
  12. <value>131072</value>
  13. </property>
  14. <property>
  15. <name>fs.checkpoint.period</name>
  16. <value>60</value>
  17. </property>
  18. <property>
  19. <name>fs.checkpoint.size</name>
  20. <value>67108864</value>
  21. </property>

 

hdfs-site.xml

6. 设置HDFS参数,指定备份文本数量为2(2 / 2分)

操作环境: master、slave1、slave2

7. 设置HDFS参数,指定NN存放元数据信息路径为hadoop目录下/hdfs/name(2 / 2分)

操作环境: master、slave1、slave2

8. 设置HDFS参数,指定DN存放元数据信息路径为hadoop安装目录下/hdfs/data(2 / 2分)

操作环境: slave1、master、slave2

编辑hdfs-site.xml

vim hdfs-site.xml

 添加以下内容:

  1. <property>
  2. <name>dfs.replication</name>
  3. <value>2</value>
  4. </property>
  5. <property>
  6. <name>dfs.namenode.name.dir</name>
  7. <value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
  8. <final>true</final>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
  13. <final>true</final>
  14. </property>
  15. <property>
  16. <name>dfs.namenode.secondary.http-address</name>
  17. <value>master:9001</value>
  18. </property>
  19. <property>
  20. <name>dfs.webhdfs.enabled</name>
  21. <value>true</value>
  22. </property>
  23. <property>
  24. <name>dfs.permissions</name>
  25. <value>false</value>
  26. </property>

 

yarn-env.sh

9. 设置YARN运行环境JAVA_HOME参数(2 / 2分)

操作环境: master、slave1、slave2

 编辑yarn-env.sh

vim yarn-env.sh

 插入以下内容: 

export JAVA_HOME=/usr/java/jdk1.8.0_171

 

yarn-site.xml

10. 设置YARN核心参数,指定ResourceManager进程所在主机为master,端口为18141(2 / 2分)

操作环境: master、slave1、slave2

11. 设置YARN核心参数,指定NodeManager上运行的附属服务为shuffle(2 / 2分)

操作环境: master、slave1、slave2

编辑yarn-site.xml

vim yarn-site.xml

  插入以下内容: 

  1. <property>
  2. <name>yarn.resourcemanager.address</name>
  3. <value>master:18040</value>
  4. </property>
  5. <property>
  6. <name>yarn.resourcemanager.scheduler.address</name> <value>master:18030</value>
  7. </property>
  8. <property>
  9. <name>yarn.resourcemanager.webapp.address</name>
  10. <value>master:18088</value>
  11. </property>
  12. <property>
  13. <name>yarn.resourcemanager.resource-tracker.address</name>
  14. <value>master:18025</value>
  15. </property>
  16. <property>
  17. <name>yarn.resourcemanager.admin.address</name>
  18. <value>master:18141</value>
  19. </property>
  20. <property>
  21. <name>yarn.resourcemanager.aux-services</name>
  22. <value>mapreduce_shuffle</value>
  23. </property>
  24. <property>
  25. <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
  26. <value>org.apache.hadoop.mapred.shuffleHandler</value>
  27. </property>
  28. <property>
  29. <name>yarn.nodemanager.aux-services</name>
  30. <value>mapreduce_shuffle</value>
  31. </property>

 

 mapred-site.xml

12. 设置计算框架参数,指定MR运行在yarn上(2 / 2分)

操作环境: master、slave1、slave2

  1. mv mapred-site.xml.template mapred-site.xml
  2. vim mapred-site.xml

插入以下内容:

  1. <property>
  2. <name>mapreduce.framework.name</name>
  3. <value>yarn</value>
  4. </property>

 

节点文件设置

13. 设置节点文件,要求master为主节点; slave1、slave2为子节点(2 / 2分)

操作环境: master、slave1、slave2

vim slaves

修改为:

  1. slave1
  2. slave2

 

vim master

 插入以下内容:

master

 

namenode格式化

14. 文件系统格式化(2 / 2分)

操作环境: master

  1. scp -r /etc/profile root@slave1:/etc/
  2. scp -r /etc/profile root@slave2:/etc/
  3. scp -r /usr/hadoop/ root@slave1:/usr/
  4. scp -r /usr/hadoop/ root@slave2:/usr/

 在slave1和slave2上生效环境变量

source /etc/profile

在master下进行:

hadoop namenode -format

 

启动hadoop集群

15. 启动Hadoop集群(5 / 5分)

操作环境: master、slave1、slave2

仅在master下执行:

  1. cd /usr/hadoop/hadoop-2.7.3/
  2. sbin/start-all.sh

 jps检查状态:

浏览器中输入:

192.168.111.3:50070

推荐阅读