一:搭建hadoop常见问题
查看集群启动日志
存放集群的日志信息位置在hadoop-2.7.6安装目录下的logs
,比如我的在:/home/hadoop/apps/hadoop-2.7.6/logs
日志文件名字含义:
hadoop(进程归属)-hadoop(用户名)-datanode(进程名)-hadoop01(节点).log
start-dfs.sh获取start-yarn.sh启动的时候某一个进程启动不了?
解决办法一:
先检查日志文件有没有报错 日志文件报错,排除错误 重新启动 。
解决办法二:
如果日志文件没有报错,查看是否配置好了免密登录。
解决办法三:
先把集群全部停了,再重启。分别执行:stop-dfs.sh,start-dfs.sh
解决办法四:
检查hdfs的相关进程看看哪个没有启动,再单独启动。
单独启动的命令:
hadoop-daemon.sh start hdfs的进程
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
哪个节点上缺 在哪一个节点上执行
yarn的相关命令,单独启动的命令:
yarn-daemon.sh start yarn的相关命令
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
格式化的问题
hdfs的格式化在做什么事情:创建namenode的数据存储目录,生成最初的元数据。在这个元数据中有一个重要的信息:VERSION—-记录的是集群当前的版本号, 每次格式化一次都会生成一个全新的。
成功的格式化只能进行一次 。如果不成功,则需要找到原因,直到成功。如果成功格式化之后启动了集群后又进行格式化,namenode的集群id信息会发生改变,datanode记录的集群id还是原来的,这时候就会造成datanode、namenode启动不了。
时间同步问题
机器不能联网:
手动进行同步:date -s “”
能联网的时候:可以用外部的时间服务器或者自己搭建时间服务器来同步时间
ntpdate “时间同步器的网址”
目的:是为了和北京时间保持一致吗?不是
是为了集群中各个节点之间的时间保持一致 。
环境变量的配置有问题:
/etc/profile------系统环境变量
~/.bashrc-------用户环境变量----针对当前用户的
~/.bash_profile-----用户环境变量----针对当前用户的
加载顺序:
系统的环境变量》》》》~/.bash_profile》》》~/.bashrc
生效顺序:
最后加载的最终生效
二:集群安装中的5种模式
单机模式
解压就可以。不存在分布式文件系统,所有文件存取都是本地模式,数据来源于本地存储。
生产上基本不用,只在本地测试时使用。
伪分布式
安装在一个节点上,是存在分布式文件系统的,只是所有的进程运行在一台机器上。同样存在主从结构,也是分布式。
生产中不会用,个人学习的时候会用。
完全分布式
存在主从结构,运行在多个节点上。存在一个主节点,多个从节点。是一种多从的结构。
在生产中用得少,在集群的节点数比较少的时候才用。
缺陷:一个主节点,一个冷备份节点
主节点的压力比较大,如果有一天namenode宕机了,集群就不能正常访问,集群处于瘫痪状态。会存在主节点的单点故障。
高可用:
多个主节点,多个从节点。目前使用最广泛的集群模式。
多个主节点中同一时间只有一个主节点对外提供服务,我们称之为active namenode,其他主节点处于热备份状态 standby namenode,时刻监控active主节点的状态,当active namenode宕机的时候 standny namenode立即进行切换,切换为active namenode,standby namenode必须实时和active namenode的元数据保持一致。
这种集群模式依赖于zookeeper,虽然有多个主节点,但是同一时间只有一个是active的,集群中真正服务的主节点仍然是一台机器的能力。举个例子,如果我的集群非常大,10000台从节点机器,每台datanode的存储数据的元数据信息都需要存储在namenode中,namenode的压力会很大,namenode存储的东西过多,进行数据访问的时候效率过低。
我们需要帮namenode分担压力,同一时间是否可以有多个主节点对外提供服务?
联邦模式
适用于超大集群。
同一时间会有多个namenode共同服务,多个namenode之间相互协作的时候依赖于块池id,来区分哪个数据归属哪一个namenode管理。多个namenode共同管理集群中的所有datanod,分工明确的 。 每个namenode只负责管理datanode上自己块池的数据
块池:联邦模式中标志数据块的管理权限的。格式例如:blockpoolID=BP-54673466-192.168.40.201-1531445892504。这个指的是当前的namenode所管理的块池的名字
hadoop四个模块
common
hdfs
mapreduce
yarn
|
|