hadoop不能互相访问和linux防火墙守护进程
前言——作为装过几次集群的菜鸟,对于hadoop集群的安装还是比较有心得的:只要配置文件够好,集群配置就非常容易,否则也容易出现莫名其妙的问题!总结了一份3台机器搭建较完好的集群的一份配置文件。
在我将集群配置文件,防火墙(自以为)、集群时间、Java环境变量等等都搞定的情况下,竟然还是出了问题。
现象是访问不了yarn的web端口。
因为我在机器上搭过好几次集群,可能存在版本不一样的情况,所以我先用bin/hadoop version查看了hadoop各个节点对应的hadoop版本,发现一样(在其它场景中,我犯过这样的错误);
jps查看Java进程是首要的测试手段,但是没发现明显异常;
然后经典操作:看日志,英语能对大佬来说可能是锦上添花,但对菜鸟来说就是落井下石,不过在logs目录下隐隐发现一个问题,yarn所在机器的logs日志没有其它2个几个节点的日志,再看里面文件里面内容并没有明显的报错信息。
然后看日志、调网络搞了一晚上最终发现了一个十分明显的问题,在非yarn机器上的机器日志里面显示一直尝试与yarn进程进行连接却一直失败,由此使用网络工具确定了是yarn所在节点自身的问题,使用curl -I查看虚拟机互相访问的情况(没有装浏览器),也是发现yarn主机能自己访问8088端口,但集群里面其它节点却访问不了改节点的8088端口,netstat -ntpl查看网络端口情况发现一切正常。耗了一段时间后,错误信息已经比较明显是yarn主机的网络问题。
是不是防火墙问题?但是在最开始就已经使用systemctl disable firewall关了linux(centos7)的防火墙,并且用systemctl status firewall查看了几遍的防火墙并且一直都显示没有这个模块。
灵机一动,根据最近学习的linux知识,linux的服务守护进程daemon基本都是以d结尾的,然而这里使用却是firewall,少了个d。但是就醍醐一般的使用systemctl status firewalld查看yarn主机的防火墙状态,结果果然是active,一抹绿色优点扎眼。
systemctl disable firewalld关闭防火墙自启动,systemctl stop firewalld关闭防火墙,然后删除集群的data和logs信息,重新bin/hadoop namenode -format格式化namenode,重启集群,再jps看集群状态,windows浏览器访问yarn的8088端口,终于一切正常了。
1这次出错集群的访问状态很多地方都有较明显的问题,但是因为没经验所以get不到重点,所以空耗了许久。防火墙问题主要还是linux操作不规范和不熟悉,结果导致了一直以为自己执行正确的代码关闭了防火墙,最开始手熟使用firewalld,执行正确,结果反而让自己觉得firewall(错觉)也是正确的,机器尚且可能硬件出错,更何况人呢。执行复杂操作时(集群统一执行某操作)自动化脚本时第一选择,当然脚本因为权限、环境变量等问题也有可能发生问题,不过也还有测试自动化脚本。
本次错误应该是在三台机器关闭防火墙,第一次成功了,但第二、三次却失败了,但因为对linux操作不熟悉,以为是成功了。这种疲劳错误,应该多使用脚本避免人的疲劳误差。
总结:以上记载个人犯错过程,以下对hadoop及linux做一些总结:
1、hadoop集群出错,首要检测手段jps查看Java的进程,注意是否有异常,如果有应该多加关注。缺点:对于某些问题Java进程不会及时体现出来,所以这个操作应该要经常使用,在大规模集群里面肯定要使用自动化脚本进行相应管理,在大数据方面有进阶的zookeeper框架可以管理整个集群。
2、根据jps结果、bug的具体现象分析,bug是哪个类型的,如网络问题、配置问题、硬件问题(HA解决)等。
3、配置问题:查看集群的所有配置是否一致,hadoop框架本身的版本、hadoop及linux网络的配置文件、集群时间、namenode与datanode生成的版本信息是否一致、data与logs文件是否有隐藏的一些问题等。
4、网络问题:
4.1、windows主机网络是否与虚拟机网络相连,可以使用ping命令,这个比较基础,但也不得不查。
4.2、对于服务器(没有浏览器)web端口进行访问,可以使用curl -I测试8088端口;ping命令不能测试端口,可以使用端口对应的工具(比如ssh登陆对应22号),或者使用专业的端口扫描工具进行测试。
4.3、关闭防火墙,centos7 systemctl disable firewalld关闭防火墙,centos7使用systemctl工具进行管理,其它linux版本应该使用对应的管理工具关闭防火墙。
4.4、使用netstat -nptl查看linux系统的端口信息,ip:端口,监听ip上面的端口;0.0.0.0ipv4,::::ipv6,监听本机所有ip的端口;需要开放的端口注意不要监听127.0.0.1,监听了loopback本地环回地址,则只能本地访问。
5、硬件问题:集群HA可以用secondarynamenode复制元数据实现大部分(会丢失数据);主备模式则可以根据安全需求增加集群的安全性,代价是数据冗余大。
hadoop不能互相访问和linux防火墙守护进程的更多相关文章
- 深入理解Linux操作系统守护进程的意义
Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程 ...
- 【Linux】- 守护进程的启动方法
转自:Linux 守护进程的启动方法 Linux中"守护进程"(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问 ...
- python实现Linux启动守护进程
python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...
- linux 创建守护进程的相关知识
linux 创建守护进程的相关知识 http://www.114390.com/article/46410.htm linux 创建守护进程的相关知识,这篇文章主要介绍了linux 创建守护进程的相关 ...
- linux C守护进程编写
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件.守护进程是一种很有用的进程. Linux的大多数服 ...
- asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)
原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 -- ...
- linux日志守护进程 syslog
几乎所有的网络设备都可以通过syslog协议,将日志信息以UDP的形式传送给远端服务器,远端接收日志服务器必须通过syslogd监听UDP端口514,并根据 syslog.conf 配置文件张的配置处 ...
- hadoop地址配置、内存配置、守护进程设置、环境设置
1.1 hadoop配置 hadoop配置文件在安装包的etc/hadoop目录下,但是为了方便升级,配置不被覆盖一般放在其他地方,并用环境变量HADOOP_CONF_DIR指定目录. 1.1.1 ...
- Linux Supervisor 守护进程基本配置
supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...
随机推荐
- 最受欢迎的 15 大 Python 库(2017)
核心库 1. NumPy (提交数: 15980, 贡献者数: 522) 当开始处理Python中的科学任务,Python的SciPy Stack肯定可以提供帮助,它是专门为Python中科学计算而设 ...
- volatile的特性代码验证
一 . 可见性(visibility) volatile关键字修饰的变量,如果值发生了改变,其他线程会立刻获取到,从而避免了出现脏读的情况. public class TestVolatile { p ...
- Salesforce学习笔记之Actions and Recommendations(续)
上次对这个Actions and Recommendations进行了初步研究,因为一些问题没有得到很好的解决,又花了很多时间,终于得到了一个比较好的解决方案.小结一下. 1. 生成Actions a ...
- 深入理解 Java 内存模型 JMM 与 volatile
Java 内存模型(Java Memory Model,简称 JMM)是一种抽象的概念,并不真实存在,它描述的是一组规范或者规则,通过这种规范定义了程序中各个变量(包括实例字段.静态字段和构成数组对象 ...
- Spring MVC中处理中文问题
之前练习过提交表单数据,但是提交的数据包含中文,这一篇练习如何处理中文.在Spring MVC中处理中文问题和Filter处理中文问题是一样的手段 @ 目录 Filter addProduct.jsp ...
- 尾递归(java)
一般递归: 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多 ...
- 非对称加密与HTTPS(转)
序:HTTPS更安全,为什么? 因为HTTP协议本身毫无安全性可言. 当你访问一个纯HTTP的网站(以及与这个网站有任何网络交互)时,你发出去一个请求.在这个请求到达网站服务器的路途上,不管是你家的路 ...
- mac下protobuf配置记录
sudo vi /etc/profile加到文件底部 export PATH=$PATH:$GOBIN:/usr/local/go/bin export GOPATH=/Users/jinfuzhan ...
- Linux环境下安装Redis数据库
1.下载Redis安装包 访问https://redis.io/download,目前最新版本是5.0.5,点击下载 2.安装Redis 2.1通过远程工具把压缩包导入Linux工作盘,我的在home ...
- Spring MVC 的运行流程
1.用户发送请求到DispatcherServlet 2.DispatcherServlet调用处理器映射器(HanderMapping)找到处理器 3.处理器映射器(HanderMapping)返回 ...