[
https://issues.apache.org/jira/browse/HBASE-2108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Purtell reassigned HBASE-2108:
-------------------------------------
Assignee: Andrew Purtell
> [HA] hbase cluster should be able to ride over hdfs 'safe mode' flip and
> namenode restart/move
> ----------------------------------------------------------------------------------------------
>
> Key: HBASE-2108
> URL: https://issues.apache.org/jira/browse/HBASE-2108
> Project: Hadoop HBase
> Issue Type: Bug
> Reporter: stack
> Assignee: Andrew Purtell
> Fix For: 0.21.0
>
>
> Todd Lipcon wrote up the following speculation on what happens when NN is
> restarted/goes away/replaced by backup under hbase (see Dhruba's note here,
> http://hadoopblog.blogspot.com/2009/11/hdfs-high-availability.html, that Eli
> pointed us at for some background on the 0.21 BackupNode feature):
> "For regions that are already open, HBase can continue to serve reads so long
> as the regionservers are up and do not change state. This is because the HDFS
> client APIs cache the DFS block locations (a map of block ID -> datanode
> addresses) for open files.
> "If any HBase action occurs that causes the regionservers to reopen a region
> (eg a region server fails, load balancing rebalances the region assignment,
> or a compaction finishes) then the reopen will fail as the new file will not
> be able to access the NameNode to receive the block locations. As these are
> all periodic operations for HBase, it's impossible to put a specific bound on
> this time, but my guess is that at least one region server is likely to crash
> within less than a minute of a NameNode unavailability.
> "Similar properties hold for writes. HBase's writing behavior is limited to
> Commit Logs which are kept open by the region servers. Writes to commit logs
> that are already open will continue to succeed, since they only involve the
> datanodes, but if a region server rolls an edit log, the open() for the new
> log will fail if the NN is unavailable. There is currently some work going on
> in HBase trunk to preallocate open files for commit logs to avoid this issue,
> but it is not complete, and it is not a full solution for the issue. The
> other issue is that the close() call that completes the write of a commit log
> also depends on a functioning NameNode - if it is unavailable, the log will
> be left in an indeterminate state and the edits may become lost when the NN
> recovers.
> "The rolling of commit logs is triggered either when a timer elapses or when
> a certain amount of data has been written. Thus, this failure mode will
> trigger quickly when data is constantly being written to the cluster. If
> little data is being written, it still may trigger due to the automatic
> periodic log rolling.
> "Given these above failure modes, I don't believe there is an effective HA
> solution for HBase at this point. Although HBase may continue to operate for
> a short time period while a NN recovers, it is also possible that it will
> fail nearly immediately, depending on when HBase's periodic operations happen
> to occur. Even with an automatic failover like DRBD+Heartbeat on the NN, the
> downtime may last 5-10 minutes as the new NN must both replay the edit log
> and receive block reports from every datanode before it can exit safe mode. I
> believe this will cause most NN failovers to be accompanied by a partial or
> complete failure of the HBase cluster."
> The above makes sense to me. Lets fix. Generally our mode up to this has
> been that if hdfs goes away, we've dealt with it on a regionserver by
> regionserver basis shutting itself down to protect against dataloss. We
> need to handle riding over NN restart/change of server.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.