文章目录

  • 问题一:Zookeeper节点数量为什么建议是奇数个?
  • 问题二:HA机制的Hadoop集群中Journal Node 作用
  • 问题三:两个datanode节点互相排斥怎么解决(集群无法识别新加入的Datanode)?
  • 问题四:如何修改Zookeeper日志 zookeeper.out输出路径
  • 问题五:HDFS block丢失过多进入安全模式(safe mode)的解决方法
  • 问题六:datanode数据存放位置研究

问题一:Zookeeper节点数量为什么建议是奇数个?

原因是:“Zookeeper集群,当有一半以上的节点数在工作中的时候,集群才对外服务”。

怎么理解上面这句话呢,用实验数据说话:
实验一:

设置节点数量为偶数 4, 启动 2 个节点。观察结果:集群不对外服务启动 3 个节点。观察结果:集群开始对外服务
实验二:

设置节点数量为奇数个 5启动3个节点。观察结果:集群开始对外服务

总结:
Zookeeper的算法逻辑里面,“一半以上的节点”,是不包括等于一半的。所以无论设置集群总数量为 2n+1 个节点 或者 2n 个节点,最少都需要依赖 n+1 个节点,分别可以容纳 n 个 或 n-1 个节点挂掉(也就是说就算挂n个节点ZK系统照样运行)。 (相比之下,设置为 2n+1, 可以比设置为 2n 多挂掉一个节点)。所以这里说的是建议奇数个而不是一定是奇数个节点

问题二:HA机制的Hadoop集群中Journal Node 作用

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。
集群启动时,可以同时启动2个NameNode。这些NameNode只有一个是active的,另一个属于standby状态。active状态意味着提供服务,standby状态意味着处于休眠状态,只进行数据同步,时刻准备着提供服务,如图所示:

在一个典型的HA集群中,每个NameNode是一台独立的服务器。在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换。

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信(JournalNodes依赖于Zookeeper来实现两个NameNode之间数据的同步功能)。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了,如图所示

为了确保快速切换,standby状态的NameNode有必要知道集群中所有数据块的位置。为了做到这点,所有的datanodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。

对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,JNs必须确保同一时刻只有一个NameNode可以向自己写数据。

JournalNode服务器:运行的JournalNode进程非常轻量,可以部署在其他的服务器上。注意:必须允许至少3个节点。当然可以运行更多,但是必须是奇数个,如3、5、7、9个等等。当运行N个节点时,系统可以容忍至少(N-1)/2(N至少为3)个节点失败而不影响正常运行

在HA集群中,standby状态的NameNode可以完成checkpoint操作,因此没必要配置Secondary NameNode、CheckpointNode、BackupNode。如果真的配置了,还会报错。

问题三:两个datanode节点互相排斥怎么解决(集群无法识别新加入的Datanode)?

之前有两个datanode节点,这里新添加了一个datanode节点,但是在集群中却未表现出来。
到对应的管理界面只看到两个存活的节点
Live Nodes 为 2,
Dead Nodes 为 0
然后我切换到Datanodes界面查看:
发现mini2和mini3存活, 我就刷新了几下, 发现变成了mini3和mini4存活了, 我一直刷呀刷,发现有mini2就没有mini4,有mini4就没有mini2, mini2与mini4互相排斥,
然后我上传了一个文件,结果mini2挂掉了 , 经过排查发现是我的
/root/apps/hadoop/tmp/dfs/data/current目录下了VERSION文件里:


mini2和mini4的 datanodeUuid是一样的(在虚拟机中玩集群添加节点的时候直接克隆虚拟机,虽然将新增的节点配置好后,但是由于对应datanode的配置信息(如版本信息)依旧是别的的节点的配置信息,所以才会出现这种情况,这时候只需要将之前节点生成的datanode的配置信息删除,让该节点重新生成配置信息即可),原来是datanode的Uuid冲突了。
解决方法:
把mini4的VERSION文件删除,重启datanode即可
停止: hadoop-daemon.sh stop datanode
启动: hadoop-daemon.sh start datanode

问题四:如何修改Zookeeper日志 zookeeper.out输出路径

如果不做修改,默认zookeeper的日志输出信息都打印到了zookeeper.out文件中,这样输出路径和大小没法控制,因为日志文件没有轮转。所以需要修改日志输出方式。
具体操作如下:
1、修改$ZOOKEEPER_HOME/bin目录下的zkEnv.sh文件,ZOO_LOG_DIR指定想要输出到哪个目录,ZOO_LOG4J_PROP,指定INFO,ROLLINGFILE的日志APPENDER.

2、修改$ZOOKEEPER_HOME/conf/log4j.properties文件的:
zookeeper.root.logger的值与前一个文件的ZOO_LOG4J_PROP 保持一致,该日志配置是以日志文件大小轮转的,如果想要按照天轮转,可以修改为DaliyRollingFileAppender

问题五:HDFS block丢失过多进入安全模式(safe mode)的解决方法

因磁盘空间不足,内存不足,系统掉电等其他原因导致dataNode datablock丢失。
解决办法(Solution)*

安装HDFS客户端,并执行如下命令:

步骤 1     执行命令退出安全模式:hadoop dfsadmin -safemode leave步骤 2     执行健康检查,删除损坏掉的block。  hdfs fsck  /  -delete

注意: 这种方式会出现数据丢失,损坏的block会被删掉。

问题六:datanode数据存放位置研究

Datanode中数据实际存放位置:

自定义路径+dfs/data/current/BP-190247797-192.168.10.220-1460040893538/current/finalized

一、curren

/home/zjsd/hadoopdata/dfs/data/current/BP-190247797-192.168.10.220-1460040893538/current/如图:

dfsUsed:该文件中存放该DataNode容量被占有的大小&&DataNode总容量
Finalized:数据实际所在的位置
VERSION:数据块的版本信息
DataNode空间存储的ID
layoutVersion:软件所处的版本

二、Datanode的版本信息:

参考:https://blog.csdn.net/wbzhang2594/article/details/53893275
参考:https://blog.csdn.net/kiwi_kid/article/details/53514314
参考:
https://blog.csdn.net/csdm_admin/article/details/63253538?utm_source=itdadao&utm_medium=referral
参考:https://blog.csdn.net/wangshuminjava/article/details/79306358
参考:https://blog.csdn.net/czp11210/article/details/76695745
参考:https://blog.csdn.net/xiaoshunzi111/article/details/51239679

玩大数据期间碰到的一些问题总结相关推荐

  1. 传统行业如何“玩”大数据?

    企业的数据分析能力金字塔:传统行业如何"玩"大数据? 写在前面 我写这篇文章的初衷源于两个故事: 故事一:一位在互联网行业做数据库架构多年的同事一起吃饭,问起我现在在说什么,我说自 ...

  2. 不想玩大数据的厨子都不是冒险家

    湘鄂情抛弃餐饮主业,角逐大数据,号称要用互联网思维改造广电,上演了年度商业界最看不懂的转型.关于创始人孟凯,有人说他飞蛾扑火,有人说他病急乱投医,但他的回复是:你说我傻逼,其实不知道我有多牛逼. 湘鄂 ...

  3. 美团也玩大数据杀熟?

    深燃(shenrancaijing)原创 作者 | 魏婕 唐亚华 编辑 | 黎明 12月17日,一篇名为<我被美团会员割了韭菜>的文章刷屏,该文作者基于自己点外卖的经历发现,在美团上的同一 ...

  4. 小白玩大数据日志分析系统经典入门实操篇FileBeat+ElasticSearch+Kibana 实时日志系统搭建从入门到放弃

    大数据实时日志系统搭建 距离全链路跟踪分析系统第二个迭代已经有一小阵子了,由于在项目中主要在写ES查询\Storm Bolt逻辑,都没有去搭建实时日志分析系统,全链路跟踪分析系统采用的开源产品组合为F ...

  5. BATJ原来是这样玩大数据的!

    为什么国内的大数据应用,只有几个互联网巨头取得成就呢?是因为它们拥有最多的用户.流量和数据吗? 去年5月笔者曾撰文阐述百度.阿里和腾讯这三个互联网巨无霸开始挖掘大数据.一年过去,拥有海量数据的公司已在 ...

  6. 要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。

    爬虫,即网络爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化. 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索 ...

  7. 玩大数据,没有这34个工具怎么行!

    1.Shareinstall Shareinstall是一款为移动开发者量身打造的一款APP辅助推广工具!它核心价值在于,帮助Android/iOS开发者通过shareinstall提供的sdk,精确 ...

  8. 玩大数据一定用得到的19款Java开源Web爬虫

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...

  9. 阿SIR玩大数据抓贼变“小意思”

    一键查询.录入报警.自动筛选比对.精确破案,广州荔湾警方搭建起了"社区警务信息平台",库存信息超3880万条,用大数据思维指导警务工作.昨日,荔湾区公安分局局长旋志强在发布会上,通 ...

最新文章

  1. 06- web兼容性测试
  2. Oracle 优化相关
  3. C# html的Table导出到Excel中
  4. display block 无法显示_display:inline-block产生的问题
  5. sql游标 while_用SQL Server中的排名函数替换SQL While循环和游标,以提高查询性能
  6. java 配对问题_Java中的配对类是什么?
  7. NC7WZ14P6X绝对最大额定参数
  8. 从实际游戏制作谈如何提高游戏中的打击感
  9. 十四、中国为什么没有自己的指令集
  10. 统计篇(五)-- 随机变量、样本、统计量
  11. 微信小程序如何创建云开发根目录
  12. 【学习编程】献给迷茫中的你,教你如何快速入门编程,如何从编程小百到 IT 巨佬?零基础自学请收下这份学习指南(经验分享)
  13. html实现ppt的效果,js、css实现ppt的出现效果
  14. 小米笔记本Air 13.3 熄屏 大概率无法唤醒问题(已解决)
  15. shell脚本编程笔记(九)—— 初识流编辑器 sed
  16. 基于TAITherm软件的锂离子电池热失控仿真
  17. 一招完美删除顽固文件或文件夹
  18. Java获取电脑硬件信息做license
  19. maya! board_如何使用maya和zbrush制作次世代女性角色?值得一辈子收藏的干货
  20. 如何解决Coursera看不了视频的问题

热门文章

  1. 如何进行个人知识管理和提高自己能力?
  2. 想要转人工智能,程序员该如何学习?(学习路线、知识体系)
  3. Guava ImmutableCollection简介
  4. jsp页面c标签循环map , c:foreach 循环map
  5. mysql----innodb统计信息
  6. Extjs 之 initComponent 和 constructor的区别(转)
  7. 关于EMF模型的操作,赶紧记下来
  8. 吉他谱——有多少爱可以重来
  9. 在 Intellij IDEA 里使用 OpenJFX (JavaFX)
  10. 2018年7月份,python上传自己的包库到pypi官网的方法