Hadoop集群搭建

Hadoop集群

一、基本
1.三台节点(入门级别)
  • 主节点master
  • 从节点slave1/2
2.Hadoop集群增删

四台节点:集群搭建,动态增加,删除节点

3.本地源yum

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

比赛提供:

  1. 搭建所用软件
  2. repo源文件
二、基础环境的配置
1.确保各节点防火墙关闭(主机之间相互访问)

关闭防火墙: systemctl stop firewalld

查看状态:systemctl status firewalld

2.主机名与映射

修改主机名: hostnamectl set-hostnane 立即生效: bash
添加映射:vim letc/hosts

[ root@master ~]#lvi /etc/hosts
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.15.104 master
192.168.15.127 slave1
192.168.15.124 slave2  #输入各节点相应IP
3.时间同步NTP

选择时区 tzselect

[atguigu@hadoop100 yum.repos.d]$ tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 
Please select a country.
 1) Afghanistan		  18) Israel		    35) Palestine
 2) Armenia		  19) Japan		    36) Philippines
 3) Azerbaijan		  20) Jordan		    37) Qatar
 4) Bahrain		  21) Kazakhstan	    38) Russia
 5) Bangladesh		  22) Korea (North)	    39) Saudi Arabia
 6) Bhutan		  23) Korea (South)	    40) Singapore
 7) Brunei		  24) Kuwait		    41) Sri Lanka
 8) Cambodia		  25) Kyrgyzstan	    42) Syria
 9) China		  26) Laos		    43) Taiwan
10) Cyprus		  27) Lebanon		    44) Tajikistan
11) East Timor		  28) Macau		    45) Thailand
12) Georgia		  29) Malaysia		    46) Turkmenistan
13) Hong Kong		  30) Mongolia		    47) United Arab Emirates
14) India		  31) Myanmar (Burma)	    48) Uzbekistan
15) Indonesia		  32) Nepal		    49) Vietnam
16) Iran		  33) Oman		    50) Yemen
17) Iraq		  34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1

The following information has been given:

	China
	Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Local time is now:	Tue Apr 20 22:55:55 CST 2021.
Universal Time is now:	Tue Apr 20 14:55:55 UTC 2021.
Is the above information OK?   #(覆盖时间)
1) Yes
2) No
#? 
1

tzselect命令只告诉你选择的时区的写法,并不会生效。所以现在它还不是东8区北京时间。

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

安装NTP

yum install -y ntp

选择master作为事件源

#文件/etc/ntp.conf
#server 210.72.145.44
#中国国家授时中心的IP
server 127.127.1.0  #local clock
fudge 127.127.1.0 stratum 1

slaves手动同步时间

ntpdate master #同步master时间
4.定时任务

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

在这里插入图片描述

每十分钟同步一次

写一个定时任务:crontab -e
键入i ,进入编辑模式
输入内容:*/10 * * * * usr/sbin/ntpdate master`
查看定时任务列表:crontab -l
三、ssh
免密登陆
1.输入ssh-keygen,一路默认回车,也可以直接执行
ssh-keygen -t dsa -P " -f ~/.ssh/id_dsa
⒉将生成的公钥文件复制到授权列表
cat ./id_rsa.pub >> authorized_keys
3.将该授权文件authorized_keys文件复制到slaves中的节点
scp ./authorized_keys root@slave1:~/.ssh/


目的:将.ssh/id_rsa.pub放到其他机器上的authorized_keys中。
Master节点要把自身的公钥拷贝到自身的authorized_keys中。
检查免密登录是否设置成功:
ssh slave1
第一次需要输入密码,后续在此访问就不需要输入密码了。

RSA or DSA, this is a question!
RSA与DSA都是非对称加密算法,相同密钥长度RSA算法和DSA算法安全性相当。
DSA只能用于数字签名,而无法用于加密(某些扩展可以支持加密)﹔;RSA 即可作为数字签名,也可以作为加密算法(未被完全攻破、暴力破解)

四、语言环境JAVA
安装JDK
创建工作目录:mkdir -p /usr/java
下载软件:wget http://xxxx/jdk-8u221-linux-x64.tar.gz
解压: tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/javal
环境变量:/etc/profile
#/etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin

#注意生效变量文件
source /etc/profile
五、协调系统-ZK
1.介绍

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

在这里插入图片描述

2、安装 配置
zoo安装

下载解压zoo安装包/usr/zookeeper
环境变量/etc/profile

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
PATH=$PATH:$zOOKEEPER_HOME/bin

source
配置文件:zoo.cfg


tickTime=2000	#心跳间隔
initLimit=10	#最大初始时间限制10倍心跳
syncLimit=5		#请求应答时长5倍心跳
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata #数据目录
clientPort=2181#客户端、服务端连接端口
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog
#日志目录
server.1=master:2888:3888	#集群列表(固定端口)
server.2=slave1:2888:3888
server.3=slave2:2888:3888

注意 :mkdir zkdata zkdatalog

配置的dataDir指定的目录下面,创建一个myid文件。(zkdata/myid)

里面内容为一个数字,用来标识当前主机。
conf/zoo.cfg: server.火中X为什么数字,则myid文件中就输入这个数字。

注意一一对应(master写1)

每个结点上执行启动ZooKeeper服务的脚本。

bin/zkServer.sh start	#启动服务
bin/zkServer.sh status	#查看状态

结果应该是:一个节点是Leader,其余的结点是Follower。
六、HADOOP安装
1.配置
下载解压Hadoop安装包/usr/hadoop


环境变量:
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop-env.sh 用来定义Hadoop运行环境相关的配置信息;

core-site.xml 定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;

hdfs-site.xml 定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;

mapred-site.xml MapReduce参数

yarn-site.xml 集群资源管理系统参数配置

hadoop-env.sh(集群运行环境)
export JAVA_HOME=/usr/java/jdk1.8.0_221

core-site.xml (集群全局参数)

fs.default.name			//配置NN节点地址与端口号
hdfs://master:9000

hadoop.tmp.dir //hadoop临时目录用来存放NN临时文件
/usr/hadoop/hadoop-2.7.7/hdfs/tmp

fs.checkpoint.period
//SNN检查NN日志时间间隔(单位为秒)
3600

hdfs-site.xml

dfs.replication		//指定hdfs保存数据的副本数量

dfs.namenode.name.dir	//指定hdfs中NN的本地存储位置
file:/usr/hadoop/hadoop-2.7.7/hdfs/name

dfs.datanode.data.dir		//指定hdfs中DN的本地存储位置
file:/usr/hadoop/hadoop-2.7.7/hdfs/data

dfs.namenode.secondary.http-address 	//定义HDFS对应的HTTP服务器地址和端口
dfs.webhdfs.enabled		//开启webhdfs,允许文件的访问修改等操作

mapred-site.xml

<property>
	<name>mapreduce.framework.name</name>
	//取值为local、classic、yarn其中之一,选择yarn,使用yarn集群实现资源分配
	<value>yarn</value>
</property>

yarn-site.xml

//RM提供客户端访问的地址及端口
<name>yarn.resourcemanager.address

//RM提供给ApplicationMaster的访问地址,AM通过该地址向RM申请资源、释放资源等<name>yarn.resourcemanager.scheduler.address</name>

//RM对web服务提供地址,用户通过该地址可以在浏览器上查看集群各类信息
<name>yarn.resourcemanager.webapp.address</name>

//RM提供NodeManager地址,通过该地址向RM心跳、领取任务等
<name>yarn.resourcemanager.resource-tracker.address</name>

//RM提供的管理员访问地址,向RM发送管理命令等
<name>yarn.resourcemanager.admin.address</name>

//用户自定义服务,扩展MapReduce的shuffle功能
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>

文件设定

master文件
master

slaves文件

slave1
slave2

2.格式化并启动
Hadoop hadoop namenode -format

start-all.sh
七、添加删除节点
1.添加节点

进行相关配置:
1、基础操作本地源、防火墙、时区、同步时间等;
2、修改hosts文件所有文件添加slave3
3、免密操作master–>slave3
4、安装JDK Hadoop 配置环境变量

修改所有的slaves文件:添加slave3

启动DataNode进程: hadoop-daemon.sh start datanode
启动nodemanage: yarn-deamon.sh start nodemanager

查看集群状态
主节点刷新:hdfs dfsadmin -refreshNodes

均衡block :sbin/start-balancer.sh
查看存活的节点:hdfs dfsadmin -report
2.临时删除节点:
hadoop-daemon.sh stop datanode

hadoop-daemon.sh stop tasktracker
3.删除节点
master主机中hdfs-site.xml配置:
<property>
	<name>dfs.hosts.exclude</name>
	<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value>   #excludes为文件
	<description>拒绝加入集群的节点列表<ldescription>
</property>

<property>
	<name>dfs.hosts</name>
	<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/datanode-allow.list</value>
	<description>允许加入集群的节点列表<ldescription>
</property>
在conf目录下创建一个excludes文件,将需要删除的节点机器名添加到文件中。

vim /usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes

slave2
主节点刷新所有DataNode: hdfs dfsadmin -refreshNodes

查看存活的节点:hdfs dfsadmin -report


可以看到该datanode状态转为Decommission In Progress。(退役)

执行完毕之后显示Decommission Status : Decommiss
删除节点上关闭进程:(slave2)
sbin/hadoop-daemon.sh stop datanode
sbin/yarn-daemion.sh stop nodemanager

数据块重新分布: sbin/start-balancer.sh (数据均衡)

从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名
在所有DataNode上执行hadoop-pull.sh脚本,同步配置。

slave2

主节点刷新所有DataNode: hdfs dfsadmin -refreshNodes

查看存活的节点:hdfs dfsadmin -report


可以看到该datanode状态转为Decommission In Progress。(退役)

执行完毕之后显示Decommission Status : Decommiss

删除节点上关闭进程:(slave2)
sbin/hadoop-daemon.sh stop datanode
sbin/yarn-daemion.sh stop nodemanager

数据块重新分布: sbin/start-balancer.sh (数据均衡)


从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名
在所有DataNode上执行hadoop-pull.sh脚本,同步配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琦琦今天加油了吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值