IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop 集群安装的敲黑板重点 -> 正文阅读

[大数据]Hadoop 集群安装的敲黑板重点

目录

一.了解Hadoop的角色

二.5种安装模式

三.安装的配置文件关键点

四.安装过程的问题:

? ? ? 1.在启动集群的过程中,发现某些进程无法启动,或者是进程运行一段时间后挂掉,我们可以从哪些方面入手?

(1)查看日志。

?(2)如果日志文件不报错情况下 ?证明集群没有问题 那需要尝试重新启动进程

? ? ? ?2.格式化问题

? ? ? ? ?(1)在集群安装的时候成功的格式化只能有一次。

? ? ? ? ?(2)不能重复格式化的原因具体分析 。

? ? ? ? ?(3)如果不小心重复格式化了应该怎么办?

? ? ? 3.时间同步问题

? ? ? 4.配置过程中的环境变量

五.启动步骤

第一:启动zookeeper

第二:启动HDFS

第三:启动YARN


一.了解Hadoop的角色

? ? ? ?

二.5种安装模式

? ? ? ? ?CSDN有很多博客写了每种模式的安装步骤,这里就不再赘述了,这里主要讲下各种模式的区别和联系,并且在生产中一般是怎么选择。

单机模式伪分布式完全分布式高可用(ha --high avalible)联邦模式(federation)
安装模式单机安装包直接解压单机安装包直接解压,需配置相关配置文件需多台机器进行安装和配置需多台机器进行安装和配置需多台机器进行安装和配置
运行模式不存在分布式文件系统,没有守护进程,所有文件的存取都在本地存在分布式文件系统,有守护进程,但是所有进程都只在一台机器上存在所有的分布式文件系统的 ,所有的进程运行在不同的节点的,运行在多个节点之上的 ? 多个节点共同组成的一个集群存在所有的分布式文件系统的 ,所有的进程运行在不同的节点的,运行在多个节点之上的 ? 多个节点共同组成的一个集群存在所有的分布式文件系统的 ,所有的进程运行在不同的节点的,运行在多个节点之上的 ? 多个节点共同组成的一个集群
集群结构单机

单机

(1)namenode 1个

(2)datanode 1个

集群:一主多从一助理

(1)namenode 1个

(2)secondarynamenode 1个(namenode的助理:负责冷备份:只负责对namenode的数据进行备份,如果namenode发生故障,不会接替工作)

(3)datanode 多个

集群:多主多从,一般是两个主节点,多个从节点

1)namenode 2个:

其中一个为active namenode对外提供服务的,另外一个standby namenode处于热备份状态(时刻准备接替为active namenode)

这种模式下多个namenode之间的数据肯定是实时同步的 ,存储的数据是一致的,如果active namenode宕机的时候 ,standby namenode才可以接替

(2)多个datanode

集群:一时间同时对外提供服务的namenode有多个 ,有多个active namenode

(1)多个active namenode,每个namenode 只负责一部分数据存储,注意这里,不要理解为,每个active namenode负责几个datanode,而是分别记录数据分块后,每块数据放在哪个datanode

(2)多个datanode

缺陷只适合学习测试只适合学习测试因为namenode只有一个,然后发生单点故障,当namenode宕机的时候,会造成集群整体不可用, 数据不可访问,数据丢失等问题虽然这种模式有两个namenode ,同一时间对外提供服务的只有一个active namenode, 如果集群中的datanode的节点个数很多的时候 ?会造成namenode的压力过大,比如namenode记录着数据存在哪个datanode,如果数据多,那么namenode记录这一行行的小账本也会非常大,这对于单个active namenode压力是很大的。

虽然有多个active namenode,但也会存在如果单个active namenode宕机的话,会导致该namenode管理的数据丢失不可用

场景生产中不会使用 ,个人学习或者代码调试生产中不会使用 ,个人学习或者代码调试极少的企业(小型的公司),一般为 测试集群实际生产中集群规模 中小规模都可以用,大规模也可以,但是不要太大规模一般在实际生产种,超大规模的集群采用联邦模式+高可用模式结合,结合了联邦的多个active node 减轻压力,也结合了高可用的standby namenode,时刻接替宕机的active node的优点

三.安装的配置文件关键点

? ? ? ? 很多博客都有详细的完全分布式和高可用的安装步骤,我这里不再赘述,我这边着重讲一下关键的配置信息。(这里待补充)

? ? ? ? 1.core-site.xml? 公共的配置文件

? ? ? ? 2.hdfs-site.xml?

? ? ? ? 3.yarn-site.xml

详细的配置可以上官网看:https://hadoop.apache.org/docs/stable/

????????

?

????????点开相应的default文件的话,每一个属性配置都有详细的解释,以及有默认值的也会带上默认值,如果要修改默认值的话,只要在相应的site文件进行修改。

? ? ? ?Hadoop在加载配置文件的时候,一般会先加载default文件,再加载site文件。比如默认块存储大小在hdfs-default.xml等于134217728bytes=128M(134217728/1024/1024)

?

?如果你想改变这个块的大小,可以在hdfs-site.xml修改:

<property>
?<name>dfs.blocksize</name>
?<value>你想要大小数值</value>
</property>

四.安装过程的问题:

? ? ? ? 1.在启动集群的过程中,发现某些进程无法启动,或者是进程运行一段时间后挂掉,我们可以从哪些方面入手?

(1)查看日志。

????????因为底层是由Java实现,所以报错格式和方法定位跟Java的一样,从日志定位问题,解决问题。这里要知道Hadoop的log日志的安装目录,以及log的名称因为底层是由Java实现,所以报错格式和方法定位跟Java的一样,从日志定位问题,解决问题。这里要知道Hadoop的log日志的安装目录,以及log的名称

????????一般Hadoop的日志是放在$HADOOP_HOME/logs 下,或者在启动的时候,也会写日志在哪个目录下。

日志名称构成:
?? ??? ??? ??? ??? ?进程的归属模块---用户名---进程名字---主机名.log
?? ??? ??? ??? ??? ?注意:在哪一个节点启动的相关进程 ? 日志文件就在哪一个节点上

?一个例子:日志报错:启动yarn失败,因为zookeeper没有启动,所以失败了

?(2)如果日志文件不报错情况下 ?证明集群没有问题 那需要尝试重新启动进程

? ? ? ? 第一种:停掉所有进程,全部重启,这是暴力解法,不建议

? ? ? ? 第二种:单独启动没有启动的进程(hadoop shell 命令可以到sbin目录下看)

? ? ? ? ? ? ? ? hdfs:

????????????????????????hadoop-daemon.sh ? 单独启动 ?某一个节点上的某一个hdfs进程的
?? ??? ??? ??? ??? ??? ?hadoop-daemons.sh ? 启动多个节点上的某一个hdfs进程 ?

? ? ? ? ? ? ? ? yarn:

?????????????????????????yarn-daemon.sh ? 单独启动 ?yarn的相关进程的

??????????????????????????yarn-daemons.sh ? 启动多个节点上的某一个yarn进程

? ? ? ? ? ? ? ? 在命令后面直接加 start/stop/restart 加进程名称:如

????????????????????????hadoop-daemon.sh start namenode
?? ??? ??? ??? ??? ??? ?hadoop-daemon.sh start datanode

? ? ? ? ? ? ? ? 比如解决zookeeper问题后,我单独重启yarn进程,

? ? ? ? ?2.格式化问题

? ? ? ? ?(1)在集群安装的时候成功的格式化只能有一次。

????????????????重复格式化,会导致进程无法正常启动:

????????????????导致的原因为namenode下的clusterID与datanode的clusterID不一致,因为?datanode和namenode相互通信的根基就是他们的clusterID是一样的,程序才会认为是同一个集群,才能正常启动。

? ? ? ? ?(2)不能重复格式化的原因具体分析 。

????????????????集群安装过程中,在namenode的数据存储目录下会生成一个version 文件夹,(一般在hdfs-site.xml指定),一般有一个current文件夹和in_use.lock锁文件,其中在current文件下有两个重要信息:

a.放着存储的是namenode的数据信息,描述datanode上的数据,像这种描述数据的数称为:元数据,一般是描述哪个文件块放在哪个datanode上。(这个后面章节会具体讲)

b.version存放集群信息(包括上述的clusterID):


??

文件名namenodedatanode
current下的VERSION文件

namespaceID=674676332? //namenode id
clusterID=CID-96192fff-4812-4281-8ece-43d8a936b7a7//集群的 ? ?集群版本ID ?集群的唯一标识?datanode和namenode相互通信的根基
cTime=0
storageType=NAME_NODE
blockpoolID=BP-159057106-192.168.2.101-1543318187864
layoutVersion=-63

(格式化的时候生成的,每次格式化namenode都会生成新的clusterID,而datanode不会,如果多次格式,会导致namenode 下的clusterID与datanode的clusterID不一致,导致集群启动失败。)

storageID=DS-b06a2397-81cc-4469-9545-0c0ce8a97087 //datanode id
clusterID=CID-96192fff-4812-4281-8ece-43d8a936b7a7?//集群的 ? ?集群版本ID ?集群的唯一标识?datanode和namenode相互通信的根基
cTime=0
datanodeUuid=bcf2b954-2661-4e1a-beb3-279cab52c5ca
storageType=DATA_NODE
layoutVersion=-56

? ?(datanode启动的时候生成的)

in_use.lock锁文件,保证该机器上同一个集群只有一个namenode进程锁文件,保证该机器上同一个集群只有一个datanode进程

? ? ? ? ?(3)如果不小心重复格式化了应该怎么办?

? ? ? ? ? ? ? ? 如果真的遇到这个问题,那可以将所有的节点的 datanode的数据和namenode的数据全部删除 ?在重新格式化,但在生产中要谨慎使用 ,容易造成数据丢失。

? ? ? ? ? ? ? ? 有的伙伴会问,那我把datanode的clusterID改成namenode的clusterID,可以不?暂时的处理是可以的,但不建议,因为随意改clusterID可能会造成集群其他问题。

? ? ? ? ? ? ? ? 这个也提醒我们,任何一个系统或者数据库格式化都是一件非常严肃的事情,一定要认真对待,尤其是生产环境。

? ? ? 3.时间同步问题:

在集群中,datanode和namenode之间需要通信的 ,所以多台机器的时间要保持同步,不同步的话,可能会导致集群无法正常运行,例如zookeepeer的正常启动就需要时间保持一致。

????????实现:
?? ??? ??? ??? ?1)手动
?? ??? ??? ??? ??? ?date -s 时间
?? ??? ??? ??? ?2)时间同步服务器进行实现(可以百度,很多重,可以任意选一种)
?? ??? ??? ??? ??? ?1)手动搭建(不建议,很麻烦)
?? ??? ??? ??? ??? ?2)用公网的
?? ??? ??? ??? ??? ?ntpdate 时间同步服务器的公网ip
?? ??? ??? ??? ??? ?sudo ntpdate ntp1.aliyun.com

????????4.配置过程中的环境变量

????????实际生成中,并不是所有用户都有权限对/etc/profile进行修改,所以以下的环境变量区别可以了解下,如果无权对/etc/profile进行修改,可以在自己用户下进行环境变量配置,改完之后,记得source一下。

/etc/profile~/.bashrc~/.bash_profile
类型系统环境变量用户环境变量用户环境变量
权限所有的用户都可以只针对当前用户只针对当前用户
加载顺序123
生效顺序最后次优优先
例子

/etc/profile ? ?export hadoop=/home

~/.bashrc ? export hadoop=/home01

~/.bash_profile ?export hadoop=/home02

加载的话,会先加载/etc/profile,接着~/.bashrc,最后~/.bash_profile,最后生效的是~/.bash_profile ?export hadoop=/home02,因为后加载的会把前加载的值覆盖

五.启动步骤

第一:启动zookeeper


zkServer.sh stop
zkServer.sh start
zkServer.sh status

第二:启动HDFS

总:
start-dfs.sh
stop-dfs.sh

单个:
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start zkfc
hadoop-daemon.sh start journalnode
hadoop-daemon.sh start secondarynamenode
hdfs haadmin -transitionToActive --forcemanual nn1
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
hdfs dfsadmin -safemode get

第三:启动YARN

总:
start-yarn.sh
stop-yarn.sh

单个:
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn rmadmin -transitionToActive --forcemanual rm1

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:48:52  更:2021-08-16 11:49:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:13:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码