cdh4.6.0到cdh5.2.0 upgrade和rollback问题小结 推荐 原创 菜菜光 2014-11-19 23:22:36 博主文章分类:hadoop ©著作权 文章标签 cdh4.6.0 upgrade rol 文章分类 Yarn 大数据 ©著作权归作者所有:来自51CTO博客作者菜菜光的原创作品,请联系作者获取转载授权,否则将追究法律责任 upgrade小结:1.dfsadmin -upgradeProgress status 在cdh5.2.0中没有,在4.6.0有(见源码org.apache.hadoop.hdfs.tools.DFSAdmin)升级的时候不能通过这个看到升级状态rollingUpgrade这个参数在4.6.0中不存在,在5.2.0中有,可以用于滚动升级2.在cdh5.2.0中执行upgrade,nn中调用的命令是hadoop-daemon.sh start namenode -upgrade最终调用org.apache.hadoop.hdfs.server.namenode.NameNode类,并传入upgrade参数3.yarn的设置有些变动,下面两个参数会影响nm是否启动正常 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce.shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>修改为: <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>4.impala1.1.1和cdh5.2.0有兼容性问题cdh5.x开始使用PB做通信,需要升级impala到2.0.0(impala的可用性/稳定性/性能需要测试)rollback小结:1.rollback要在4.6.0版本上运行在4.6.0上运行rollback,finalize,upgrade时,都会判断时否为ha模式,如果没有关闭ha的配置会报如下错误:14/11/19 15:25:47 FATAL namenode.NameNode: Exception in namenode join org.apache.hadoop.HadoopIllegalArgumentException: Invalid startup option. Cannot perform DFS upgrade with HA enabled. at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1130) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1241)namenode类main方法中通过createNameNode方法创建一个NameNode的实例 public static void main(String argv[]) throws Exception { if (DFSUtil.parseHelpArgument(argv, NameNode.USAGE, System.out, true)) { System.exit(0); } try { StringUtils.startupShutdownMessage(NameNode.class, argv, LOG); NameNode namenode = createNameNode(argv, null); if (namenode != null) namenode.join(); } catch (Throwable e) { LOG.fatal("Exception in namenode join", e); terminate(1, e); } }而在createNameNode方法中会通过下面的代码检测是否为ha的配置,而在5.2.0是没有这个限制的。 if (HAUtil.isHAEnabled(conf, DFSUtil.getNamenodeNameServiceId(conf)) && (startOpt == StartupOption.UPGRADE || startOpt == StartupOption.ROLLBACK || startOpt == StartupOption.FINALIZE)) { throw new HadoopIllegalArgumentException("Invalid startup option. " + "Cannot perform DFS upgrade with HA enabled."); }这里会涉及到两个判断方法:1)org.apache.hadoop.hdfs.HAUti类的isHAEnabled方法: public static boolean isHAEnabled(Configuration conf, String nsId) { Map<String, Map<String, InetSocketAddress>> addresses = DFSUtil.getHaNnRpcAddresses(conf); if (addresses == null) return false; Map<String, InetSocketAddress> nnMap = addresses.get(nsId); return nnMap != null && nnMap.size() > 1; }这里会依次调用org.apache.hadoop.hdfs.DFSUtil类的getHaNnRpcAddresses/getAddresses/getNameServiceIds/getAddressesForNameserviceId/getNameNodeIds方法,解析dfs.nameservices/dfs.ha.namenodes.xxxx/dfs.namenode.rpc-address.xxxx的设置来获取每个nameserviceid到对应的nn rpc地址的对应关系(Map<String, Map<String, InetSocketAddress>>)并判断map value的size(如果dfs.ha.namenodes.x设置超过1个就算ha),这里只要把配置改成下面即可 <property> <name>dfs.ha.namenodes.bipcluster</name> <value>nn1</value> </property>2)如果设置了jn会报如下错误:14/11/19 16:47:32 FATAL namenode.NameNode: Exception in namenode join java.io.IOException: Invalid configuration: a shared edits dir must not be specified if HA is not enabled. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:576) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:513) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:403) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:445) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:621) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:606) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1177) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1241) 14/11/19 16:47:32 INFO util.ExitUtil: Exiting with status 1错误在FSNamesystem类的构造方法中: final boolean persistBlocks = conf.getBoolean(DFS_PERSIST_BLOCKS_KEY, DFS_PERSIST_BLOCKS_DEFAULT); //默认是false // block allocation has to be persisted in HA using a shared edits directory // so that the standby has up-to-date namespace information String nameserviceId = DFSUtil.getNamenodeNameServiceId(conf); this.haEnabled = HAUtil.isHAEnabled(conf, nameserviceId); this.persistBlocks = persistBlocks || (haEnabled && HAUtil.usesSharedEditsDir(conf)); // Sanity check the HA-related config. if (nameserviceId != null) { LOG.info("Determined nameservice ID: " + nameserviceId); //Determined nameservice ID: bipcluster } LOG.info("HA Enabled: " + haEnabled); //HA Enabled: false if (!haEnabled && HAUtil.usesSharedEditsDir(conf)) { //异常由这里抛出 LOG.warn("Configured NNs:\n" + DFSUtil.nnAddressesAsString(conf)); //Configured NNs: Nameservice <bipcluster>: NN ID nn1 => xxxx:8020 throw new IOException("Invalid configuration: a shared edits dir " + "must not be specified if HA is not enabled."); }HAUtil.usesSharedEditsDir方法: public static boolean usesSharedEditsDir(Configuration conf) { return null != conf.get(DFS_NAMENODE_SHARED_EDITS_DIR_KEY); }判断jn的edit dir设置,如果设置了dfs.namenode.shared.edits.dir就会抛出异常去掉下面的设置即可:<property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://xxxxx/bipcluster</value> </property>2.rollback的时候要先把ha的配置更改为非ha的配置,然后进行rollbackrollback之后,再重做ha重做ha的步骤简单如下:1).关闭整个集群(非ha的),更改配置为ha的配置,备份原来的standby nn和jn的数据目录2).删除旧的jn数据,并单独启动jn./hadoop-daemon.sh start journalnode3).在active nn上运行hdfs namenode -initializeSharedEditsnamenode通过initializeSharedEdits命令来初始化journalnode,把edits文件共享到journalnode上4).运行active nn./hadoop-daemon.sh start namenode5).在standby的nn上运行hadoop-daemon.sh start namenode -bootstrapStandby hadoop-daemon.sh start namenode同步元数据并启动standby namenode6).启动所有的dn./hadoop-daemons.sh start datanode7).nn transitionToActivehdfs haadmin -transitionToActive nn1 hdfs haadmin -getServiceState nn13.start-dfs.sh 这个脚本有bug,在传入-rollback时,只能dn可以rollback,nn不能rollbackdiff ../../hadoop-2.5.0-cdh5.2.0/sbin/start-dfs.sh start-dfs.sh 50c50 < nameStartOpt="$nameStartOpt $@" --- > nameStartOpt="$nameStartOpts $@"也可以直接通过sh -x ./hadoop-daemon.sh start namenode -rollback 命令rollback nn,注意dn还是要rollback的4.如果rollback或upgrade失败,可以通过之前的备份元数据进行覆盖恢复 赞 收藏 评论 分享 举报 上一篇:hadoop常用服务管理命令 下一篇:zabbix 自定义LLD 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Apache Dolphinscheduler3版本编译zk3.4支持CDH的ZK 背景:默认是使用zk-3.8的配置,所以会出现CDH的zk不兼容问题。使用zk-3.4配置即可适配3.4.x解决办法1、#切换到项目源码的根路径中执行mvn clean package -T 1C -Prelease '-Dmaven.test.skip=true' '-Dcheckstyle.skip=true' '-Dmaven.javadoc.skip=true' '-Dzk-3.4'上述命 maven javad 测试用例 MySQL 升级:使用 mysql_upgrade 注意事项(再见 mysql_upgrade) 在数据库管理的世界里,随着技术的不断进步和业务的不断发展,数据库的版本升级成为了一个不可避免的过程。MySQL 作为业界领先的开源关系型数据库管理系统,其版本迭代与功能优化同样不容忽视。而在这个过程中,升级工具就显得尤为重要,比如 mysql_upgrade。但是,mysql_upgrade 已经成为过去式,且来往下看。mysql_upgrade 介绍mysql_upgrade 是 M MySQL [低代码平台] 开发小结:帆软▪简道云VS金蝶▪云之家 云平台▪架构概述云平台架构基本包括以下几个关键组件:前端用户界面:提供一个可视化的、拖拽式的界面,让用户无需编码即可设计应用程序。后端服务:执行业务逻辑、数据处理和集成服务。数据存储和管理:用于存储用户数据和应用数据的数据库系统。API和集成层:使平台能够与外部系统和数据源集成,通常包括 REST API 和其他集成工具。应用部署和运行环境:用于托管和运行用户创建的应用程序。安全性和合规性组件:保 数据分析 企业管理 低代码开发 云之家 简道云 hadoop cdh4.6.0编译方法 最近因为要改hadoop的一些代码,需要重新编译,测试环境是用cdh4.6.0做debug,简单记录下hadoop的编译方法:1)编译环境需要下面几个包yum install lzo-devel zlib-devel gcc autoconf automake libtool ncurses-devel op cdh4.6.0编译 cdh4.6.0升级测试1 线上使用了cdh4.2.0,这个版本有几个比较严重的bug,jt 内存泄露和distribute cache阻塞的bug.(MAPREDUCE-2479和MAPREDUCE-5508)相关patch:https://github.com/y-lan/hadoop-cdh4/blob/master/cloudera/patches/1351-MR1-MAPREDUCE-2479.-Move-dist cdh4.6.0 distribute cache(3) cdh4.6.0 purge实现 这里主要说下在task初始化时的distribute purge相关的类:TrackerDistributedCacheManager4.6.0的distribute purge行为由4个参数控制。local.cache.size #默认10737418240mapreduce.tasktracker.cache.local.numberdirectories #默认10000mapreduc distribute cache 4.6 CDH5.2.0集群优化配置 HDFS dfs.block.size HDFS中的数据block大小,默认是64M,对于较大集群,可以设置为128或264M dfs.datanode.socket.write.timeout/dfs.socket.timeout 增加dfs.datanode.socket.write.timeout和dfs.socket.timeout两个属性的设置(默认300 Hadoop CDH 集群优化 cdh4.6.0升级测试2-distribute cache bug fix distribute cache purge阻塞task的bug测试。cdh4.2.0:测试方法:local.cache.size=650因为cachedir size和count是存在内存中的HashMap中的,把local.cache.size值设置的足够小,在每次job运行时都会触发delete distribute cache的操作。又因为是private的,是同步删除,会造成task阻塞 cdh4.2.0 distribute Upgrade Cloudera Manager and CDH to 5.2.1 Upgrade Cloudera Manager to 5.2.11. Stop the Cloudera Management Service2. Stop the Hive service and all services such as Impala and Hue that use the Hive metastore.3. Backup MySQL Databases (mysqldu cdh Upgrade Cloudera Manager and CDH 5.2.1 to 5.3.0 Upgrade Cloudera Manager 5.2.1 to 5.3.01. Stop the Cloudera Management Service2. Stop the Hive service and all services such as Impala and Hue that use the Hive metastore.3. Backup MySQL Databases (m cloudera 【CDH篇】---CDH从初识到搭建到应用 一、前述CDH(Cloudera's Distribution, including Apache Hadoop)是Hadoop众多分支中的一种,由Cloudera维护 cloudera h5 hive redis集成到cdh ## Redis集成到CDH### 介绍Redis是一个开源的内存数据库,它提供了高性能、高可靠性和可扩展性的数据存储解决方案。它被广泛用于缓存、会话管理、消息队列等场景。Cloudera Distribution of Hadoop (CDH) 是一个基于 Apache Hadoop 的大数据平台,它提供了各种组件和工具来处理和分析大规模数据。CDH可以集成多种数据存储和处理引擎,包 Redis redis 缓存 cdh和ceph CDH和Ceph是当前IT行业中备受关注的两个热门关键词。CDH是Cloudera公司推出的一个基于Hadoop生态系统的开源大数据平台,而Ceph则是一种开源的分布式存储系统。两者有着不同的功能和应用领域,但在大数据处理和存储方面都扮演着重要的角色。首先来看CDH,作为一款基于Hadoop的大数据处理平台,它包括了Hadoop、Hive、HBase、Spark、Impala等多个开源组件,提 大数据处理 分布式存储 数据 cdh和hadoop # 如何安装和使用CDH和Hadoop## 1. 引言CDH(Cloudera Distribution including Apache Hadoop)是一个开源的、面向企业级的Hadoop发行版,提供了一套完整的Hadoop生态系统。Hadoop是一个可扩展的分布式计算框架,用于处理大规模的数据集。在本文中,我将向你介绍如何安装和使用CDH和Hadoop。首先,我将列出整个过程的步骤 Hadoop hdfs bash cdh架构问题 cdh集群部署 环境说明配置环境准备3台机器,四台机器环境是 CentOS 6.9,IP和主机名配置如下:192.168.100.101 node01192.168.100.102 node02192.168.100.103 node03前置配置ssh免密登录,JDK环境,防火墙配置,SELINUX关闭Hadoop配置及安装①文件下载&&解压下载:http://archive.cloudera cdh架构问题 hadoop linux 大数据 java cdh hive 问题 cdh配置hive on spark HIVE ON SPARK配置CDH6.3.2的HIVE版本为:2.1.1+cdh6.3.2HIVE默认引擎 hive.execution.engine Driver配置spark.driver配置名称说明建议spark.driver.memory用于Driver进程的内存YARN可分配总内存的10%spark.driver.memoryOverhead集群模式下每个Driver进程的 cdh hive 问题 hive 大数据 spark 动态分配 cdh和hadoop cdh和hadoop常用版本 Hadoop 三大发行版本: Apache、Cloudera、HortonworksApache版本最原始(最基础)的版本,对于入门学习最好。Cloudera在大型互联网企业中用的较多。Hortonworks文档较好。1)Cloudera Hadoop(1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。(2 hadoop2.9发行时间 Hadoop Apache 大数据 cdh hadoop对应 cdh和hadoop区别 前奏1:首先介绍Cloudera的CDH和Apache的Hadoop的区别Cloudera的CDH和Apache的Hadoop的区别 目前而言,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简 cdh hadoop对应 Hadoop hadoop Apache cdh6 hadoop版本 cdh和hadoop 1、CDH介绍它是Cloudera公司提供的一种大数据平台解决方案。CDH的全称是Cloudera’s Distribution including Apache Hadoop,它是一个开放源代码的大数据平台,基于Apache Hadoop和其他相关的开源技术构建,包括HDFS、MapReduce、HBase、ZooKeeper、Hue、Oozie、Flume、Sqoop等等。CDH提供了一个完整 cdh6 hadoop版本 大数据 分布式 Hadoop hadoop hbase原生和cdh的区别 cdh hbase 目录添加集群 集群添加hdfs、yarn、zookeeper服务服务启动异常1.cdh namenode 节点启动失败(无法打开文件) 2.jobHistory server 角色进程退出3.Canary无法创建父目录yarn HA在安装完 hdfs 之后,要启动 journalnode 服务 启用 hdfs ha错误示范,没有预先安装 journalnod hbase原生和cdh的区别 cm使用 cdh安装服务 hdfs hive