Spring学习 - 自定义动态数据源 git进阶经验- git提交 log 的模板配置 Spring学习 - 自定义Spring 的 bean扫描器 Spring源码学习 - Scanner的工作原理 Spring源码学习 - bean的名称的生成方式 java源码学习之 Boolean 和 Byte 深入分析 Volatile 的实现原理 java各版本新特性 java源码学习之Short java源码学习之Integer 常见 MQ 的比较 - Kafka、RocketMQ、RabbitMQ的优劣势比较 Docker技术入门与实战 - 使用 dockerfile定制镜像 I love log 读书笔记 flink 入门程序-wordcount flink 配置项介绍 在 Mac 上搭建 Flink 的开发环境 lambda 架构问题的阅读笔记 IDEA常用插件 Mybatis源码分析(1) - Mybatis关键类 Mybatis源码分析(1) - Mybatis包目录简介 tair 1:tair学习 dataflow论文阅读笔记 Polysh的安装使用 SnappyData排序函数比较 Squirrel-sql客户端连接SnappyData手册 在虚拟机里显示Hello World spark学习博客推荐 SnappyData学习博客和官网文章 Docker常用命令 MyBatis支持的OGNL语法 mysql性能优化 mysql性能优化-优化Sql语句 mac上命令行操作 explain输出格式 从文件中读取zk配置——ZooKeeper编程技能(1) git进阶经验-从项目中删除移除的目录 Mongodb 学习之shell命令操作(3) mysql命令 git进阶经验-从多模块项目中分理子模块 从零学hadoop-搭建基础(单点)的Hdfs环境 ZooKeeper集群操作脚本 Vue安装使用 2 初学JVM之问答式记住类加载机制 2 初学JVM之问答式记住虚拟机性能监控与故障处理工具 2 初学JVM之问答式记住垃圾收集器 log4j2 按天生成日志文件 1 初学JVM之问答式记住java自动内存管理 MapReduce学习心得之MapReduce初识 log4j2 日志发送到kafka配置实战 log4j2 日志配置实战 Mongodb 学习之shell命令操作(二) Mongodb 学习之linux版本安装(一) Dubbo的初级使用 ServiceLoader内部实现分析 ServiceLoader 初级应用 log4j日志发送邮件配置实战 红黑树笔记 IDEA首次使用之前的配置 java源码学习之Enum java源码学习之String 自定义Spring tag标签 编写一键发布脚本 记一次Spring Scheduler莫名不执行的一次堆栈分析 kafka的基本操作 nginx 5:Nginx内部变量 nginx 4:Nginx日志管理 提高hadoop配置效率的shell脚本 Hive编程指南之一 Hive的安装 Ambari服务器安装 Ambari服务器管理集群 HBase分布式安装 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 搭建JStorm集群 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 配置vmware中的虚拟机使用宿主机的共享网络 YARN架构简述 HDFS 架构 Spring的统一异常处理机制 Tomcat 配置服务 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 nginx 3:Nginx反向代理 mybatis操作主体流程 1.正则表达式学习-基础篇 log4j日志配置详解 mysql的时间函数 nginx 2:Nginx模块配置理论及实战 HashMap相关解析和测试文章 工作一年后的面试 用私有构造器或枚举类型强化Singleton属性 java中比较重要的图 mybatis处理枚举类 mybatis集成进spring Spring比较重要的几个截图 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 markdown在jekyll中支持的一些操作 Spring项目中配置sl4j和log4j的日志配置 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 Spring的profile机制介绍 mybatis-generator反向生成 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 (转)浅析 Decorator 模式,兼谈 CDI Decorator 注解 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 Http 协议相应状态码大全及常用状态码 IDEA快捷键 JDBC Type与Java Type redis 12:redis 操作集合 mybatis-generator错误集合 redis 11:redis 错误集合 nginx 1:nginx的安装 redis 10:redis cluster命令操作 redis 9:redis实例集群安装 java设计模式 hadoop集群学习笔记(1) Apache Shiro 简介 vim编辑神器的进阶命令 Eclipse配置 Eclipse快捷键 Linux 测试题 Linux脚本学习(1) Linux启动简要过程 Centos7上安装Mysql hadoop集群学习笔记(1) (转)分布式发布订阅消息系统 Kafka 架构设计 maven 命令 Kafka集群安装 Kafka初步使用 redis 8:redis server 和 scripting命令操作 redis 7:redis transaction 和 connection命令操作 redis 6:redis hash 命令操作 redis 5:redis sorted_set 命令操作 搭建本地Jekyll+Markdown+Github的开发环境 Spring源码阅读笔记(2) redis 4:redis set命令操作 Spring添加任务调度配置 redis 3:Redis list命令操作 redis 2:redis 一般命令操作 redis 1:redis单机安装笔记 redis 0:redis配置属性描述 Spring源码阅读笔记(1) spark 错误集锦 spark集群安装 Linux 基本命令操作 Hadoop错误信息处理 Hadoop代码拾忆 从零开始搭建spring-springmvc-mybatis-mysql和dubbo项目 java知识点札记 java排错 Google Java Style 中文版 git进阶经验 github使用经验 MongoDB用户角色授权与AUTH启用 MongoDB 命令 MongoDB 特定规范 Spring MVC实现跳转的几种方式 史上最全最强SpringMVC详细示例实战教程 Spring 零星笔记 js中(function(){…})()立即执行函数写法理解 如何解决跨域问题 创建ajax简单过程 前端定位 设置MYSQL允许通过IP访问 mybatis异常 :元素内容必须由格式正确的字符数据或标记组成 如何为 WordPress 绑定多个域名的方法s WordPress工作原理之程序文件执行顺序(传说中的架构源码分析) Spring源码导入Eclipse中 基于PHPnow搭建Eclipse开发环境 解决wordpress首页文章内容截断处理的几种方法 ZooKeeper理论知识 ZooKeeper集群安装配置 Git常用命令速查表 Linux 4:磁盘与文件系统管理 Linux 3:文件与目录管理 Linux 2:文件权限与目录配置 Markdown输入LaTeX数学公式
从零学hadoop-搭建基础(单点)的Hdfs环境 MapReduce学习心得之MapReduce初识 Ambari服务器安装 Ambari服务器管理集群 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 YARN架构简述 HDFS 架构 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 hadoop集群学习笔记(1) hadoop集群学习笔记(1) Hadoop错误信息处理 Hadoop代码拾忆

hadoop集群学习笔记(1)

创建时间:2016年05月17日
摘要:

hadoop1.x 中HDFS

缺点 :

  1. 当nameNode无法在内存中加载全部元数据时,集群的寿命就到头了;
  2. 权限设计不够彻底
  3. 性能瓶颈(集群的吞吐量受限于单个NameNode的吞吐量)
  4. 仅由一个NameNode,无法隔离各个程序
  5. 集群的可用性(当NameNode宕机后,集群不可用)
  6. NameNode和BlockManager耦合性太高

改进:

  1. 为了水平扩展NameNode,federation使用多个NameNode/NameSpace。使用两个nameNode,组成HDFS的federation(联邦),两个NameNode的元数据是不一样的。一个NameNode节点内存被占满后,存放在另一个NameNode中
  2. nameNode的元数据同时存储在多个节点上。相互独立且不需要相互协调,各自分工管理自己的区域。

集群中每个DateNode要向所有的NameNode注册,并周期性向NameNode发送心跳和块报告,执行来自所有NameNode的命令

  1. 使用secondaryNameNode恢复NameNode,但会丢失未存入edit中的数据
  2. NameNode将核心的元数据信息存放在journalNode 节点集群上,也从这里读数据。两个NameNode读写分离; 写数据的NameNode为active状态,读数据的NameNode为standby状态。

HDFS在HA中,两个NameNode需要使用相同的namespace,自动切换需要使用ZooKeeper集群

为什么纵向扩展(增大内存)目前的NameNode不可行?

  1. 启动慢,50G的heap就启动30分钟至2小时
  2. 在垃圾回收时,出现错误整个集群宕机
  3. 对大的JVM Heap调试困难

Block pool 属于单个命名空间上的一组块

datanode是物理概念,Block Pool是逻辑概念

namespace volume

  • NameNode上的namespace和其对应的BlockPool一起成为namespace volume

  • 是管理的基本单位。

  • 以namespace volume作为删除和升级的基本单位

采用联盟的好处

  • 简单鲁棒性设计

  • 良好的向后扩展性

hadoop 1.x MapReduce

  • 主节点:JobTracker,一个
  • 从节点:TaskTracker,多个

JobTracker工作:管理用户提交作业和分配资源,作业实时性要求不高

缺点:

  1. 对于实时性和批处理作业,需要搭建不同的集群环境;
  2. MapReduce职责过多,需要分解

yarn处理资源分配和运行任务,可以解决storm、spark、MapReduce共享资源,存在CPU,内存,网络带宽的,硬盘的竞争问题

hadoop2.x yarn

yarn节点: ResourceManager,只有一个 NodeManager,可有多个

Yarn的RM接收到我们客户提交的 MapReduce程序后,交给某个NodeManger,启动某个进程MRAppMaster[MRAppMaster分配任务],MRAppMaster会通过RM获得被分配任务节点位置,然后将任务分配给指定节点

namenode 格式化(集群格式化)

hdfs namenode -format -clusterId hadoop-cluster-jingzz

不同节点上格式化NameNode必须有相同的clusterId:hadoop-cluster-jingzz

成功格式化后显示一些配置信息

************************************************************/
16/05/25 07:19:05 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
16/05/25 07:19:05 INFO namenode.NameNode: createNameNode [-format, -clusterId, hadoop-cluster-jingzz]
16/05/25 07:19:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Formatting using clusterid: hadoop-cluster-jingzz
16/05/25 07:19:07 INFO namenode.FSNamesystem: No KeyProvider found.
16/05/25 07:19:07 INFO namenode.FSNamesystem: fsLock is fair:true
16/05/25 07:19:07 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
16/05/25 07:19:07 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
16/05/25 07:19:07 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set to 000:00:00:00.000
16/05/25 07:19:07 INFO blockmanagement.BlockManager: The block deletion will start around 2016 May 25 07:19:07
16/05/25 07:19:07 INFO util.GSet: Computing capacity for map BlocksMap
16/05/25 07:19:07 INFO util.GSet: VM type       = 64-bit
16/05/25 07:19:07 INFO util.GSet: 2.0% max memory 966.7 MB = 19.3 MB
16/05/25 07:19:07 INFO util.GSet: capacity      = 2^21 = 2097152 entries
16/05/25 07:19:07 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
16/05/25 07:19:07 INFO blockmanagement.BlockManager: defaultReplication         = 3
16/05/25 07:19:07 INFO blockmanagement.BlockManager: maxReplication             = 512
16/05/25 07:19:07 INFO blockmanagement.BlockManager: minReplication             = 1
16/05/25 07:19:07 INFO blockmanagement.BlockManager: maxReplicationStreams      = 2
16/05/25 07:19:07 INFO blockmanagement.BlockManager: shouldCheckForEnoughRacks  = false
16/05/25 07:19:07 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000
16/05/25 07:19:07 INFO blockmanagement.BlockManager: encryptDataTransfer        = false
16/05/25 07:19:07 INFO blockmanagement.BlockManager: maxNumBlocksToLog          = 1000
16/05/25 07:19:07 INFO namenode.FSNamesystem: fsOwner             = root (auth:SIMPLE)
16/05/25 07:19:07 INFO namenode.FSNamesystem: supergroup          = supergroup
16/05/25 07:19:07 INFO namenode.FSNamesystem: isPermissionEnabled = false
16/05/25 07:19:07 INFO namenode.FSNamesystem: Determined nameservice ID: ns2
16/05/25 07:19:07 INFO namenode.FSNamesystem: HA Enabled: false
16/05/25 07:19:07 INFO namenode.FSNamesystem: Append Enabled: true
16/05/25 07:19:08 INFO util.GSet: Computing capacity for map INodeMap
16/05/25 07:19:08 INFO util.GSet: VM type       = 64-bit
16/05/25 07:19:08 INFO util.GSet: 1.0% max memory 966.7 MB = 9.7 MB
16/05/25 07:19:08 INFO util.GSet: capacity      = 2^20 = 1048576 entries
16/05/25 07:19:08 INFO namenode.FSDirectory: ACLs enabled? false
16/05/25 07:19:08 INFO namenode.FSDirectory: XAttrs enabled? true
16/05/25 07:19:08 INFO namenode.FSDirectory: Maximum size of an xattr: 16384
16/05/25 07:19:08 INFO namenode.NameNode: Caching file names occuring more than 10 times
16/05/25 07:19:08 INFO util.GSet: Computing capacity for map cachedBlocks
16/05/25 07:19:08 INFO util.GSet: VM type       = 64-bit
16/05/25 07:19:08 INFO util.GSet: 0.25% max memory 966.7 MB = 2.4 MB
16/05/25 07:19:08 INFO util.GSet: capacity      = 2^18 = 262144 entries
16/05/25 07:19:08 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033
16/05/25 07:19:08 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0
16/05/25 07:19:08 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension     = 30000
16/05/25 07:19:08 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
16/05/25 07:19:08 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
16/05/25 07:19:08 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
16/05/25 07:19:08 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
16/05/25 07:19:08 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
16/05/25 07:19:08 INFO util.GSet: Computing capacity for map NameNodeRetryCache
16/05/25 07:19:08 INFO util.GSet: VM type       = 64-bit
16/05/25 07:19:08 INFO util.GSet: 0.029999999329447746% max memory 966.7 MB = 297.0 KB
16/05/25 07:19:08 INFO util.GSet: capacity      = 2^15 = 32768 entries
Re-format filesystem in Storage Directory /root/hadoop/dfs/nn/name ? (Y or N) y
Re-format filesystem in Storage Directory /root/hadoop/dfs/nn/edits ? (Y or N) y
16/05/25 07:19:09 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1177085153-192.168.31.102-1464185949838
16/05/25 07:19:09 INFO common.Storage: Storage directory /root/hadoop/dfs/nn/name has been successfully formatted.
16/05/25 07:19:09 INFO common.Storage: Storage directory /root/hadoop/dfs/nn/edits has been successfully formatted.
16/05/25 07:19:10 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/05/25 07:19:10 INFO util.ExitUtil: Exiting with status 0
16/05/25 07:19:10 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at h2s1/192.168.31.102