masters用来启动secondarynamenode

本文深入探讨了在Hadoop集群中将SecondaryNameNode配置到DataNode而非Namenode的原因及操作步骤。通过分析hadoop/bin目录下shell脚本,解释了启动不同服务的过程,并指出配置文件对服务启动的影响。强调了masters和slaves文件在自动化启动服务中的作用,以及如何手动管理服务而不依赖这些文件。
部署运行你感兴趣的模型镜像
http://blog.youkuaiyun.com/dajuezhao/article/details/5987580 写道
2、secondarynamenode一般来说不应该和namenode在一起,所以,我把它配置到了datanode上。配置到datanode上,一般来说需要改以下配置文件。conf/master、conf/hdfs-site.xml和conf/core-site.xml这3个配置文件,修改部分如下:
master:一般的安装手册都是说写上namenode机器的IP或是名称。这里要说明一下,这个master不决定哪个是namenode,而决定的是secondarynamenode(决定谁是namenode的关键配置是core-site.xml中的fs.default.name这个参数)。

《SecondaryNamenode应用摘记 http://blog.youkuaiyun.com/dajuezhao/article/details/5987580》

 

今天看hadoop/bin目录下的shell时,发现start-dfs.sh中:

 

"$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode $nameStartOpt
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start datanode $dataStartOpt
"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode

 

也就是,使用start-dfs.sh时,是启动该机器的namenode服务,masters指定的secondarynamenode服务!

正如最上面引用的一样!

 

 

其实masters和slaves文件中定义的内容,就是用于shell来启动对应机器的服务的!!

如果你自己管理他们,压根不需要这些文件!

 

$ find . -type f | while read file;do  if cat $file | grep -E "masters|slaves" | grep -v "^#" ; then echo "=== $file"; echo "" ; fi;  done
....
    export HOSTLIST="${HADOOP_CONF_DIR}/slaves"
=== ./slaves.sh

 

"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode
=== ./start-dfs.sh

 

"$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters stop secondarynamenode
=== ./stop-dfs.sh

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

# 题目重述 根据提供的终端日志信息,在启动 Hadoop 集群后,通过 `jps` 命令发现缺少 `SecondaryNameNode` 进程。问题是:如何修改配置以确保 `SecondaryNameNode` 正常启动? --- # 详解 从日志中可以看到: 1. 执行了 `sbin/start-all.sh` 脚本(已弃用),并提示应使用 `start-dfs.sh` 和 `start-yarn.sh`。 2. 日志显示: ``` Starting secondary namenodes [0.0.0.0] 0.0.0.0: starting secondarynamenode, ... ``` 表明系统尝试在 `0.0.0.0` 上启动 `SecondaryNameNode`。 3. 但执行 `jps` 后未显示 `SecondaryNameNode` 进程,说明其未能成功启动。 ### 可能原因及解决方法: #### ✅ 1. **检查 `masters` 文件配置** Hadoop 使用 `etc/hadoop/masters` 文件指定 `SecondaryNameNode` 的主机名。 - 编辑文件:`vim etc/hadoop/masters` - 应包含主节点或指定节点的主机名,例如: ``` master ``` - 若为空或 IP 不匹配会导致无法启动。 #### ✅ 2. **确认 `hdfs-site.xml` 中的配置** 确保 `etc/hadoop/hdfs-site.xml` 包含以下配置: ```xml <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> ``` 这指定了 `SecondaryNameNode` 的地址和端口。 #### ✅ 3. **检查主机名解析(SSH 和 hosts)** 确保主机名 `master` 在本地可解析: - 检查 `/etc/hosts` 是否有: ``` 192.168.2.2 master ``` - 测试 SSH 免密登录: ```bash ssh master ``` 若无法连接,则 `SecondaryNameNode` 无法远程启动。 #### ✅ 4. **手动启动 SecondaryNameNode 并查看日志** 运行: ```bash sbin/hadoop-daemon.sh start secondarynamenode ``` 然后查看日志: ```bash tail -f logs/hadoop-*-secondarynamenode-*.log ``` 从中排查具体错误(如权限、端口占用等)。 #### ✅ 5. **避免使用已弃用脚本** 改用推荐方式启动: ```bash sbin/start-dfs.sh sbin/start-yarn.sh ``` --- # 知识点 1. **Hadoop 配置文件作用** `masters` 文件定义 SecondaryNameNode 节点位置,用于定期合并 fsimage 和 edits。 2. **HDFS 架构组件通信机制** NameNode 与 SecondaryNameNode 需通过主机名正确通信,依赖 DNS 或 hosts 解析。 3. **日志驱动的问题排查方法** 查看 Hadoop 日志文件(位于 logs/ 目录)是定位服务启动失败的关键手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值