专栏首页Hadoop实操JournalNode的edits目录没有格式化异常分析

JournalNode的edits目录没有格式化异常分析

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.异常描述


我们有时候通过CM启动NameNode的HA时,反正就是不知道什么原因,失败了,为了不影响集群的使用,又会通过CM把HA先取消掉。然后过了两天,又想作为一个生产系统,还是需要启用HA。于是又通过CM的界面向导想启用NameNode的HA,启用过程中,当3个JournalNode跟最开始启用失败是一样的时候,有时候在启用HA后,两个NameNode没办法正常启动,查看NameNode的日志如下:

12.10.0.51:8485: Journal Storage Directory /home/hadoop/data/dfs/jn/nameservice1 not formatted
        at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:472)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.getLastPromisedEpoch(Journal.java:245)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getJournalState(JournalNodeRpcServer.java:124)
        at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.getJournalState(QJournalProtocolServerSideTranslatorPB.java:118)
        at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25415)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2217)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2213)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2211)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumCall.rethrowException(QuorumCall.java:247)
        at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:142)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.createNewUniqueEpoch(QuorumJournalManager.java:183)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.recoverUnfinalizedSegments(QuorumJournalManager.java:441)

(可左右滑动)

可以看到日志显示JN的edits目录没有格式化。此错误在你给一个HA集群想加入一个新的JournalNode,或者想迁移一个JournalNode时,都可能会出现。

2.异常解决


当你在HDFS服务中新加入一个JournalNode角色时,JournalNode角色需要的数据目录是没有被创建的。但你启用HDFS的HA后,NameNode必须需要JournalNodes都是正常的,并且可以接受edits更新,所以JN如果有问题,会直接导致NN起不来。

无论你是新装JournalNode还是迁移JournalNode角色,JN的edits目录必须格式化。格式化后会有namespace目录,并且目录里会包含正确信息的其他文件。

2.1.新装JournalNode


1.通过Cloudera Manager进入JournalNode服务,确认JN的edits目录配置,比如:

/dfs/jn

(可左右滑动)

2.登录到那台JN,备份一下旧的jn目录(如果存在)。

sudo mv /dfs/jn /dfs/jn.backup

(可左右滑动)

3.通过Cloudera Manager进入NameNode的实例界面,最好是上次那个active的NameNode。

4.执行“初始化共享Edits目录”

注意:你必须停止NameNode服务才能执行这个服务。

5.格式化JN的edits成功后,再重新启动HDFS服务。

2.2.迁移JournalNode服务


1.确认JournalNode的edits目录的位置,参数名叫dfs.journalnode.edits.dir。使用Cloudera Manager查看HDFS配置中的JournalNode可以查看该参数的配置值,如果你没有使用Cloudera Manager,则该参数一般会在hdfs-site.xml文件中。比如:

/dfs/jn

(可左右滑动)

2.登录到旧的JN节点,备份JN的edit目录,如下:

cd /dfs/jn sudo
tar czvf /tmp/jn_edits.tgz *

(可左右滑动)

3.拷贝jn_edits.tgz到新的JN节点

4.进入新的JN节点的edits目录,并解压edits文件

cd /dfs/jn 
sudo tar xzvf /tmp/jn_edits.tgz

(可左右滑动)

5.确认一下解压后文件夹,子文件夹的用户和属组,包含权限正确。

6.重启JN服务。

3.异常总结


1.请注意JN节点必须是奇数个,无论是2.1的操作还是2.2的操作,保证在所有新的JN节点上都进行了同样的操作。

2.如果你是重新启用HA,请保证之前JN节点上的旧的目录已经被你清空干净了,然后再开始重新启用HA。

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Yarn的JobHistory目录权限问题导致MapReduce作业异常

    0: jdbc:hive2://localhost:10000>select count(*) from student;

    Fayson
  • 在Kerberos环境使用Hue通过Oozie执行Sqoop作业报错异常分析

    关于Sqoop抽取Hive Parquet表数据到MySQL可以参考Fayson前面的文章《Sqoop抽取Hive Parquet表数据到MySQL异常分析》。

    Fayson
  • 0524-6.1-如何使用Cloudera Manager启用HDFS的HA

    在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,如果NameNode机器出现意外,将导致整个集群无法使用。为了解决...

    Fayson
  • Flink 连接 hive 解决 java.net.UnknownHostException

    今天在实验 Flink 连接 hive 的操作,由于 CDH 的 hadoop 是 HA,连接过程中报错如下:

    shengjk1
  • hadoop2.6分布式部署时 livenodes等于1的原因

    1.问题描述 在进行hadoop2.x版本的hdfs分布式部署时,遇到了一个奇怪的问题: 使用start-dfs.sh命令启动dfs之后,所有的datanode...

    老白
  • Sqoop导入数据时异常java.net.ConnectException: Connection refused

    java.net.ConnectException: Call From node4/192.168.179.143 to node4:8032 failed ...

    时间静止不是简史
  • Hadoop ha之Journal Storage Directory nor formatted

        情况是这样的,Hadoop ha下,集群QJM的数据丢了,之后启动namenode后报Journal Storage Directory nor for...

    克虏伯
  • Amabri hive权限设置

    DataScience
  • 0524-6.1-如何使用Cloudera Manager启用HDFS的HA

    在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,如果NameNode机器出现意外,将导致整个集群无法使用。为了解决...

    Fayson
  • java客户端无法上传文件到hdfs

    学些hadoop。遇到这个问题,查找网上好多资料,一般都是说namenode和datanode不同步导致的,或者防火墙没开50010端口,或者nameNode和...

    frontoldman

扫码关注云+社区

领取腾讯云代金券